Pro自定义数据源原理
1. 概念
Connector:定义连接到一个数据源的连接信息,用于创建datastore。
Datastore:代表一个数据源的实例,用于打开一个或多个tables或feature class。
Cursor:可以通过查询一个table或feature class获得返回的记录。
Row:可以通过遍历cursor获得每一条要素记录。

对于Plugin Datasource,这个流程也是遵循上述概念的,具体实现如下:

PluginDatasourceConnectorPath:相对于Connector。PluginDatasourceConnectorPath通过指定数据源的ID和访问Uri路径,可以创建对应的PluginDatastore实例。
PluginDatastore:相对于Datastore。
2. 基础类
要实现自定义数据的接入,开发人员需要实现自定义数据源的PluginDatastore、Table和RowCursor,Pro SDK提供了对应的基础类,分别是PluginDatatoreTemplate、PluginTableTemplate、PluginCursorTemplate。这些基础类定义了需要实现的方法,开发人员只需要实现相应的方法则可。
继承PluginDatastoreTemplate的实例类需要实现的方法:
|
方法 |
说明 |
|
void Open(Uri connectionPath) |
建立和数据源的连接。 |
|
bool CanOpen(Uri connectionPath) |
用于判断该数据源是否能访问。 |
|
void Close() |
关闭数据源的连接。 |
|
IReadonlyList<string> GetTableNames() |
获得数据源中的数据集列表。 |
|
PluginTableTemplate OpenTable(string name) |
打开数据集。 |
|
bool IsQueryLanguageSupported() |
用于判断是否支持查询语法 |
|
string GetDatasourceDescription(bool inPluralForm) |
获得数据源文字描述信息 |
|
string GetDatasetDescription(DatasetType datasetType) |
获得数据集的文字描述信息 |
继承PluginTableTemplate的实例类需要实现的方法:
|
方法 |
说明 |
|
string GetName() |
返回要素集的名字,必须是数据源GetTableNames()方法返回的列表中。 |
|
IReadOnlyList<PluginField> GetFields() |
返回要素集的字段列表。 |
|
PluginCursorTemplate Search(QueryFilter queryFilter) |
用于进行属性查询。 |
|
PluginCursorTemplate Search(SpatialQueryFilter queryFilter) |
用于进行空间查询。 |
|
bool IsNativeRowCountSupported() |
用于判断数据集是否支持返回总记录数。 |
|
int GetNativeRowCount() |
返回数据集的总记录数。 |
|
GeometryType GetShapeType() |
返回数据集的图形类型。 |
继承PluginCursorTemplate的实例类需要实现的方法:
|
方法 |
说明 |
|
PluginRow GetCurrentRow() |
获得当前记录。 |
|
bool MoveNext() |
指针向前读取成功,则返回True,否则返回False。 |
Pro自定义数据源原理的更多相关文章
- 【Mybatis】MyBatis之配置自定义数据源(十一)
本例是在[Mybatis]MyBatis之配置多数据源(十)的基础上进行拓展,查看本例请先学习第十章 实现原理 1.扩展Spring的AbstractRoutingDataSource抽象类(该类充当 ...
- FastReport自定义数据源及ListView控件的使用
##1.想批量生成一堆物资信息卡,效果如下图所示,fastreport可以一下全部生成,并且发现不用单独写东西, ##2.发现FastReport官方给出的Demo.exe很友好,基本可以满足要求,想 ...
- JDBC 学习笔记(三)—— 数据源(数据库连接池):DBCP数据源、C3P0 数据源以及自定义数据源技术
本文目录: 1.应用程序直接获取连接的缺点(图解) 2.使用数据库连接池优化程序性能(图解) 3.可扩展增强某个类方法的功能的三种方式 4.自定 ...
- Aspose.Word邮件合并之自定义数据源
Aspose.Word在进行邮件合并时,默认的几个重载方法对Database支持比较友好,但是也可以通过自定义数据源来实现从集合或者对象中返回数据进行邮件合并. 自定义数据源主要是通过实现IMailM ...
- 20. Spring Boot 默认、自定义数据源 、配置多个数据源 jdbcTemplate操作DB
Spring-Boot-2.0.0-M1版本将默认的数据库连接池从tomcat jdbc pool改为了hikari,这里主要研究下hikari的默认配置 0. 创建Spring Boot项目,选中 ...
- WinForm中使用CrystalReport水晶报表——基础,分组统计,自定义数据源
开篇 本篇文章主要是帮助刚开始接触CrystalReport报表的新手提供一个循序渐进的教程.该教程主要分为三个部分1)CrystalReport的基本使用方法:2)使用CrystalReport对数 ...
- JavaWeb之数据源连接池(4)---自定义数据源连接池
[续上文<JavaWeb之数据源连接池(3)---Tomcat>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究其原 ...
- JDBC数据源连接池(4)---自定义数据源连接池
[续上文<JDBC数据源连接池(3)---Tomcat集成DBCP>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究 ...
- ArcGIS Pro 自定义坐标系地图矢量切片制作
ArcGIS Pro从1.4版本起就支持自定义坐标系统地图的矢量切片制作了. 步骤: 1. 将地图有全图范围缩小到屏幕像素大约10*10像素的范围,然后记录下地图的比例尺.这一步十分关键,不然系统要经 ...
随机推荐
- ubuntu 16.04 英伟达驱动安装
参考:https://blog.csdn.net/breeze5428/article/details/80013753 换了一个新的地方,得重新配置Ubuntu 16.04,在配置NVIDIA驱动的 ...
- 6:Partial Update 内部原理 和 乐观锁并发控制
Partial Update 内部执行过程: 首先,ES文档是不可变的,它们只能被修改,不能被替换.Update Api 也不例外. Update API 简单使用与之前描述相同的 检索-修改-重建索 ...
- vue 全局挂载组件
<!-- plugin.js --> import someComponent from './components/someComponent' export default { ins ...
- Awesome Mac OS Command Line 中文翻译
awesome-macos-command-line 收集了很多有趣的 Mac 终端命令. 看了一遍后,发现帮助很大. 见识许多没有使用过的命令,加深了对 Mac 的认识. 所以翻译成了中文,共享给其 ...
- Flask中jinja2的应用
Flask中jinja2的应用 # -*- coding: utf-8 -*- # @Time : 2019/9/24 17:29 # @Author : AnWen from flask impor ...
- wireshark语法小结
https://blog.csdn.net/cumirror/article/details/7054496 过滤重传包 https://blog.csdn.net/Joseph_ChiRunning ...
- Schema学习【一】
XML Schema 是基于 XML 的 DTD 替代者. 什么是 XML Schema? XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD. XML Schema: 定义 ...
- China International Industry Fair 2019
Today i visit the CIIF 2019, as a "professional visitor" since i have made an appointment ...
- Java中处理接口返回base64编码的图片数据
在做接口测试的时候,某些接口返回的content是一大段加密文字.这种情况下,有可能是返回的图片加密数据,需要将这些数据转换成图片进行保存查看. 例如: 这里,可以看到Content对应的键值开头有“ ...
- P1801 黑匣子[堆]
题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ...