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自定义数据源原理的更多相关文章

  1. 【Mybatis】MyBatis之配置自定义数据源(十一)

    本例是在[Mybatis]MyBatis之配置多数据源(十)的基础上进行拓展,查看本例请先学习第十章 实现原理 1.扩展Spring的AbstractRoutingDataSource抽象类(该类充当 ...

  2. FastReport自定义数据源及ListView控件的使用

    ##1.想批量生成一堆物资信息卡,效果如下图所示,fastreport可以一下全部生成,并且发现不用单独写东西, ##2.发现FastReport官方给出的Demo.exe很友好,基本可以满足要求,想 ...

  3. JDBC 学习笔记(三)—— 数据源(数据库连接池):DBCP数据源、C3P0 数据源以及自定义数据源技术

    本文目录:        1.应用程序直接获取连接的缺点(图解)        2.使用数据库连接池优化程序性能(图解)        3.可扩展增强某个类方法的功能的三种方式        4.自定 ...

  4. Aspose.Word邮件合并之自定义数据源

    Aspose.Word在进行邮件合并时,默认的几个重载方法对Database支持比较友好,但是也可以通过自定义数据源来实现从集合或者对象中返回数据进行邮件合并. 自定义数据源主要是通过实现IMailM ...

  5. 20. Spring Boot 默认、自定义数据源 、配置多个数据源 jdbcTemplate操作DB

    Spring-Boot-2.0.0-M1版本将默认的数据库连接池从tomcat jdbc pool改为了hikari,这里主要研究下hikari的默认配置 0.  创建Spring Boot项目,选中 ...

  6. WinForm中使用CrystalReport水晶报表——基础,分组统计,自定义数据源

    开篇 本篇文章主要是帮助刚开始接触CrystalReport报表的新手提供一个循序渐进的教程.该教程主要分为三个部分1)CrystalReport的基本使用方法:2)使用CrystalReport对数 ...

  7. JavaWeb之数据源连接池(4)---自定义数据源连接池

    [续上文<JavaWeb之数据源连接池(3)---Tomcat>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究其原 ...

  8. JDBC数据源连接池(4)---自定义数据源连接池

    [续上文<JDBC数据源连接池(3)---Tomcat集成DBCP>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究 ...

  9. ArcGIS Pro 自定义坐标系地图矢量切片制作

    ArcGIS Pro从1.4版本起就支持自定义坐标系统地图的矢量切片制作了. 步骤: 1. 将地图有全图范围缩小到屏幕像素大约10*10像素的范围,然后记录下地图的比例尺.这一步十分关键,不然系统要经 ...

随机推荐

  1. SQL Server 索引优化-----数据库引擎优化顾问

    本文将根据“数据库引擎优化顾问”(DTA)来发现无用或缺失的索引. 要使用“数据库引擎优化顾问”,首先需要对数据库负载进行监控,为数据库负载分析准备数据.从SSMS的工具中,打开SQL Server  ...

  2. [unity]GPU Instance学习

    前言我们之前研究过为什么Unity的UI可以合批,是因为使用了相同的材质进行渲染,UI上不同图片渲染是通过把图片打成一张图集后,使用Image组件对顶点填充了不同的UV值实现的.那么有没有什么办法可以 ...

  3. 巧用CSS3之background渐变

    常见斑马loading 上图是我们常见的loading进度条,以前都是用一张背景图片平铺的.其实如果抛去兼容性因素,我们可以用零图片纯样式来实现. 一,首先,我们先为容器定义一个纯蓝色背景: box{ ...

  4. Programming Principles and Practice Using C++ Notes1

    序 0.4 创造性和问题求解 首要目标是帮助你学会用代码表达你的思想2,而不是叫你如何获得这些思想.沿着这样一个思路,给出很多实列,展示如何求解问题. 我们认为程序设计本事是问题求解的一种描述形式: ...

  5. idea 控制台允许输入

    打开idea配置文件添加 -Deditable.java.test.console=true

  6. Python JSON的简单使用

    1          json简介 1.1         json是什么? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. “在JSON出现之前,大家一 ...

  7. Python学习日记(四) 集合和元祖

    元祖的特性:是一个只读列表.可以循环.可以切片,修改数据遵循'儿子'不能改但'孙子'可能可以改. iterable:可迭代对象(元祖.列表.字串.集合) 元祖宣告方式: tu = (1,2,3,['a ...

  8. MySQL Replication--修复从库上单个数据库的数据

    问题描述 由于运维失误,从库未及时设置read_only,导致从库上某库数据被修改,由于整个实例数据量较大,重做成本较高,而该数据库数据较少,因此考虑如何修复该数据库的数据. 操作前提 1.复制使用位 ...

  9. django--模型字段引用

    如果内置字段不起作用,您可以尝试使用django-localflavor(文档),其中包含对特定国家和文化有用的各种代码片段. 此外,您可以轻松编写自己的自定义模型字段. 注意 从技术上讲,这些模型是 ...

  10. centos6/7添加系统服务

    服务脚本必须存放在/etc/ini.d/目录下:       chkconfig --add mongodb     chkconfig --list mongodb     等级0表示:表示关机   ...