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像素的范围,然后记录下地图的比例尺.这一步十分关键,不然系统要经 ...
随机推荐
- Windows MySql增量备份、完整备份采坑之路
1.前言 这周公司交给我一个任务,负责项目Mysql数据库的备份,因为项目上线后数据是一个大问题,出了什么问题数据才是最大的问题,备份这时候就显得尤为重要, 公司项目的思路是:在项目系统设置内可以勾选 ...
- SpringBoot打成jar包后无法读取resources资源文件
在项目中做了一个支付功能, 需要引入第三方渠道的配置文件config.xml用来初始化文件证书, 将配置文件 config.xml 放到 resources 资源目录下. 本地开发环境下能正常读取该文 ...
- WebApi PUT与DELETE类型访问报错
* 方法一 在项目的Web.Config文件加入 <modules> <remove name="WebDAVModule" /> </modules ...
- [jsp学习笔记]servelt get post
1.post提交数据是隐式的,get是通过在url里面传递的(可以看一下你浏览器的地址栏),用来传递一些不需要保密的数据. 2.用get时,传输数据的大小有限制 (注意不是参数的个数有限制),为2K: ...
- Mac 达芬奇【Davinci Resolve】 无法添加媒体
参考 : https://zhidao.baidu.com/question/182613491787331404.html 打开软件,点击默认的未命名项目: 点击左上角图中箭头位置: 选中系统-&g ...
- js 一些有意思的小Demo
- scrapy RuntimeError: maximum recursion depth exceeded while calling a Python object 超出python最大递归数异常
2019-10-21 19:01:00 [scrapy.core.engine] INFO: Spider opened2019-10-21 19:01:00 [scrapy.extensions.l ...
- redis问题解决 Caused by: io.lettuce.core.RedisException: io.lettuce.core.RedisConnectionException: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specifie
1找到redis的配置文件 redis.conf vim redis.conf 修改 protected-mode yes 改为 protected-mode no 注释掉 #bin 127.0.0 ...
- 怎么给win10进行分区?
新安装的win10系统的朋友,对于win10系统分区不满意应该如何是好呢?今天给大家介绍两种win10系统分区的方法,一个是windows自带分区管理软件来操作;另一个就是简单方便的分区助手来帮助您进 ...
- 初学Django基础01 建立工程,目录结构,常用配置,上下文管理,模板渲染
django是python的web重量级框架,发展已经有10年多了,对应下面版本 Django 版本 Python 版本 1.8 2.7, 3.2 , 3.3, 3.4, 3.5 1.9, 1.10 ...