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像素的范围,然后记录下地图的比例尺.这一步十分关键,不然系统要经 ...
随机推荐
- Atcoder Grand Contest 036 D - Negative Cycle
Atcoder Grand Contest 036 D - Negative Cycle 解题思路 在某些情况下,给一张图加或删一些边要使图合法的题目要考虑到最短路的差分约束系统.这一题看似和最短路没 ...
- LOJ6300 博弈论与概率统计 组合、莫队
传送门 如果在\(0\)以下之后仍然会减分,那么最后的结果一定是\(N-M\). 注意到如果在Alice分数为\(0\)时继续输,那么就相当于减少了一次输的次数.也就是说如果说在总的博弈过程中,Ali ...
- 爬虫 HttpHelper
/// <summary> /// 类说明:HttpHelper类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理 /// 重要提 ...
- Linux环境下安装SVN
最近在研究svn的代码如何迁移到GitLab,因此借助本文,重新来回顾温习下svn的安装使用. 一.SVN的安装 svn的安装很简单,在互联网的环境,直接执行以下命令行即可. yum install ...
- 在angular 8中使用 less
在angular 6中使用 less 新项目 ng new [appname] --style less 已有的项目 修改 *.css 文件及引用处后缀名为 less并在 angular.json 文 ...
- shell 字符串截取表达式
${var#str} 从左向右匹配,非贪婪匹配,截取并保留右边的内容 txt='123456abc123456' echo ${txt#*34} # 56abc123456 ${var##str} 从 ...
- Android数据存储原理分析
Android上常见的数据存储方式为: SharedPreferences是 Android 中比较常用的存储方法,本篇将从源码角度带大家分析一下Android中常用的轻量级数据存储工具SharedP ...
- sql server 获取某一字段分组数据的前十条记录
1.sql 语法 select m, n from ( select row_number () over (partition by m order by n desc) rn,--以m分组,分组内 ...
- 几种常见的Preference总结
DialogPreference共性 DialogPreference通用属性 说明 android:dialogIco 对话框的icon android:dialogLayout dialog的co ...
- python实现进制转换(二、八、十六进制;十进制)
python实现进制转换(二.八.十六进制:十进制) (一)十进制整数转为二.八.十六进制 1.format实现转换>>> format(2,"b") # (10 ...