惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LINUX DO - 热门话题
Stack Overflow Blog
Stack Overflow Blog
B
Blog
WordPress大学
WordPress大学
Project Zero
Project Zero
P
Palo Alto Networks Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 司徒正美
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
T
Tailwind CSS Blog
Forbes - Security
Forbes - Security
F
Full Disclosure
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hacker News: Ask HN
Hacker News: Ask HN
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
F
Fortinet All Blogs
Cisco Talos Blog
Cisco Talos Blog
G
Google Developers Blog
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
O
OpenAI News
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cybersecurity and Infrastructure Security Agency CISA
S
Securelist
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
IT之家
IT之家
U
Unit 42
腾讯CDC
S
Security Affairs
C
Cisco Blogs
Schneier on Security
Schneier on Security
The Last Watchdog
The Last Watchdog
B
Blog RSS Feed
宝玉的分享
宝玉的分享
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security @ Cisco Blogs
Cyberwarzone
Cyberwarzone
T
The Blog of Author Tim Ferriss

博客园 - 卢伟亮

ArcGIS Server如何使用查询图层(QueryLayer)发布自定义坐标系数据(支持查询和编辑) ArcGIS Pro如何引用自定义Python模块 ArcGIS Pro 3创建Python环境失败的解决方法 ArcGIS Pro 补丁 如何使用阿里云OSS存储发布ArcGIS缓存地图服务 反注册PostgreSQL企业级地理数据库中的要素类 ERROR: Unable to start the RMI connector for NodeAgent的ArcGIS Server启动错误 检查SDE版本健康情况的常用SQL语句 免重启下刷新新添加的磁盘信息 启用只使用PostGIS的ArcSDE Geodatabase ArcSDE 版本差异提取 ArcSDE归档记录迁移 大体量点位置数据动态聚合Binning可视化效果 如何解决Portal无法设置托管GIS服务器的问题 Schema is out of date,Retry as owner or sdeadmin 问题解决方法 ArcGIS Server前端Varnish缓存解决方案 如何使用ArcGIS Pro发布自定义打印服务 ArcGIS Enterprise 10.7.1新特性:批量发布服务 影像优化 OptimizeRaster工具包介绍
Pro自定义数据源原理
卢伟亮 · 2019-10-08 · via 博客园 - 卢伟亮

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。