x

MapGIS CS二次开发-玩转GIS拓扑检查

发布时间:2022-05-25 阅读量:112

在学习GIS专业知识或者从事GIS行业工作时,大家可能经常会接触到“拓扑”、“空间拓扑关系”、“拓扑检查”等类似的概念,那么究竟什么是“拓扑”?为什么需要在GIS数据处理的过程中进行拓扑检查?以及如何通过二次开发实现拓扑检查的功能? 

1、什么是拓扑?

首先,我们简要介绍下拓扑的基本概念,先看看下面一段定义:

拓扑学是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科,通过将空间几何实体抽象成与其大小、形状无关的点,将连接实体的线路抽象成线,进而研究点、线、面之间的关系。

其实简单来说,拓扑学属于数学中几何学的一个分支,它与通常的平面几何、立体几何有所不同,不研究几何对象的长短、面积等度量性质,而是研究几何对象之间的关系。

比如著名的哥尼斯堡七桥问题:是否存在这样的走法,即任意从A、B、C、D出发,走遍七座桥,每个桥只能通过一次,再回到出发点?

image.png

图 1 哥尼斯堡七桥问题

在GIS中,拓扑处理的核心是建立拓扑关系,拓扑关系是地理对象在空间位置上的相互关系,如结点与线、线与面之间的连接关系。空间实体之间的拓扑关系是GIS进行空间分析和决策的基础之一。

image.png

图 2 空间拓扑关系

2、GIS数据为什么要进行拓扑检查?

众所周知,空间数据在采集和编辑过程中,常会不可避免地出现一些数据错误。例如,同一个结点或同一条线被数字化了两次;相邻的面状几何对象在采集过程中出现了裂缝或者相交;多边形不封闭;多边形的边为悬线等等,导致假结点、冗余结点、悬线、重复线等错误数据的产生。

image.png

图 3 线中包含重复结点

image.png

图 4 区(多边形)有空隙

image.png

图 5 区(多边形)不封闭

这些数据错误往往量大,而且比较隐蔽,肉眼不容易识别出来,通过手工方法也不易去除,导致采集的空间数据之间的拓扑关系和实际地物之间的拓扑关系不符合,以致影响后续的数据处理和分析工作,进而影响数据的质量和可用性。因此,需要进行拓扑处理消除这些冗余和错误的数据。

3、二次开发实现拓扑检查

由于拓扑检查在GIS数据生产与使用过程中起到的关键作用,因此在各大GIS软件中拓扑相关功能也成为必不可少的GIS模块。其原理往往大同小异,即通过建立不同的拓扑规则对数据进行拓扑检查。

下面以MapGIS桌面二次开发为例,给大家介绍如何在桌面GIS应用中快速开发实现拓扑检查功能:  

(1)实现思路

MapGIS桌面二次开发SDK在MapGIS.SpatialAnalysis程序集中封装了专门的拓扑检查类SPTopologyChecker,用于实现拓扑检查功能。基本实现思路如下:

image.png

图 6 拓扑检查实现思路

(2)接口详解

◆ 设置拓扑规则,通过AddTopologyRule方法可以设置拓扑检查时的规则;MapGIS将多种不同类型的拓扑规则封装为枚举类型供该方法作为参数设置,满足不同情况下的拓扑检查需求。

image.png

图 7 部分拓扑规则

◆ 设置拓扑检查数据,SetCheckSfcls方法可以设置要进行拓扑检查的矢量数据,其中第二个数据对象为参考数据,即是否为两个数据之间的拓扑检查,若仅为单个数据本身的拓扑,第二个对象传入空值null即可。

◆ 拓扑检查,值得注意的是CheckTopology方法包含了两个参数,分别是SPTopologyCheckParameter拓扑检查参数对象和SPTopologyErrorManager拓扑错误管理对象,顾名思义分别是用于设置拓扑查询的参数和管理拓扑错误的。简单来说,拓扑参数对象可以设置拓扑检查时的容差、最小长度、面积等检查指标,而错误管理对象则保存检查处的错误结果,包括错误类型、对应的要素等,便于进行后续的错误修改。详细接口信息可参考我们的在线API文档:

http://develop.smaryun.com:81/API/DesktopAPI/MapGISDesktopDNETAPI/index.html#id_813

4、拓扑检查

通过上面介绍的接口,我们即可通过MapGIS桌面二次开发SDK实现GIS中常用的拓扑检查功能,下图为单个区图层使用部分规则进行拓扑检查的结果:

image.png

图 8 拓扑检查结果

其中,错误管理部分展示的内容即为从SPTopologyErrorManager对象中获取的各条拓扑错误信息。

以上是本次为大家分享的MapGIS二次开发实现拓扑检查功能的全部内容,如果大家想要更深入的了解这部分内容或者对MapGIS平台提供的其他二次开发功能感兴趣,欢迎通过4008809970热线或司马云云听联系我们。

同时,我们在司马云开发世界中提供了全套的开发资源供大家免费获取,帮助大家快速上手二次开发。

开发包下载链接

http://www.smaryun.com/dev/download_detail.html#/download691

image.png

图 9  MapGIS 桌面开发包

司马云开发资源

http://www.smaryun.com/dev/service-space/resource#/node_id357

image.png

图 10 MapGIS桌面二次开发示例

司马云云听

http://www.smaryun.com/cloudlisten/index.php

image.png

图 11 云听社区

随着GIS产品的不断创新发展,GIS平台二次开发技能需求愈发凸显。未来,中地数码将始终践行以“GIS平台+生态发展”的融合创新战略打造GIS生态圈,积极拥抱业内合作伙伴,聚焦二次开发服务,为用户带来更加高效的二次开发技能培训及实战演练,满足用户“简便、易用、高效”的二次开发诉求。



联系我们

武汉中地(总部)

400-880-9970

武汉市东湖新技术开发区关山大道598号

北京中地(子公司)

010-51652066

北京市朝阳区东二环北路内2号天元港中心B座1205

深圳中地(子公司)

0755-26551638

深圳市南山区高新区科苑南路中地数码大楼A1001

西部基地(子公司)

028-85230200

成都市锦江区复地金融岛湾流锦宫506

苏州中地(子公司)

0512-65831998

苏州市姑苏区世界贸易中心A座22层2205室

热线电话

电话咨询

400 880 9970

点击咨询