本文将简单介绍矢量空间数据的检查内容、检查方法,及其常见错误的处理。结合SuperMap中的拓扑检查,举例说明如何检查图形数据逻辑一致性。
空间数据质量指空间数据在表达实体的空间位置、特征和时间所能达到的准确性、一致性、完整性和三者统一的程度。检查内容包括:定位精度、属性精度、时间精度、逻辑一致性、数据完整性以及表达形式的合理性等。
对于不同的检查内容使用的方法也不同,如下表:
检查内容 | 方法 |
定位精度 | 实测检验、误差分布检验或与其他数据格式交叉验证; |
属性精度 | 逐一检查数据的属性项(字段名称、字段个数等)、属性值; |
时间精度 | 对比不同时间段数据范围中的同类数据情况; |
逻辑一致性 | 检查数据的拓扑一致性——拓扑检查; |
数据完整性 | 检查几何图形是否完整、数据文件命名以及数据组织形式是否符合相关要求; |
表达形式合理性 | 几何图形是否可以描述该类要素特征、是否符合相关规定。 |
在实际项目中检查数据的逻辑一致性往往需要借助GIS软件来进行图形数据的拓扑检查。接下来结合SuperMap软件来具体介绍拓扑检查与处理。
拓扑(Topology)是研究几何对象(如点、线、面对象)在弯曲或拉伸等变换下仍保持不变的性质。
拓扑关系是GIS中描述地理特征或对象之间的一种空间逻辑关系,主要用于描述点(节点)、线(弧段)和多边形图形元素之间的逻辑关系,常见的拓扑关系有关联关系、邻接关系、包含关系、连通关系等。
通过对简单数据集(即点、线、面数据集)进行拓扑处理或检查,并修改生成的拓扑错误,可以确保数字化的几何对象遵循用户指定的拓扑关系,是后续构建面数据集、网络数据集或进行网络分析等操作的基础。
SuperMap iDesktopX 提供了多种拓扑规则,包括5种适用于点数据集的规则、14种适用于线数据集的规则、10种适用于面数据集的规则、5种适用于不同类型数据集的规则,基本能够满足所有的拓扑检查需求。
下面针对不同类型数据集罗列了一些常用拓扑检查规则及其使用场景举例:
注:表中图示部分的红点、红线、红色面为拓扑错误结果
规则 | 常见举例 | 图示 |
点必须在线上 | 高速公路收费站必须设置在高速公路上 | |
点必须在面的边界上 | 界碑必须设置在国界线或行政界线上 | |
点被面完全包含 | 省会点必须位于各省内 | |
点必须被线端点覆盖 | 街道交叉路口必须被街道中心线断点覆盖 | |
无重复点 | 公共设施的POI同一位置只能存在一个 | |
点不被面覆盖 | 水面高程点不能位于房屋内部和边界 |
规则 | 常见举例 | 图示 |
线内无相交 | 多条行车道在普通路口(十字路口、丁字路口等)相交时应被打断 | |
线内无重叠 | 城市街道中单条街道或多条街道之间可以相交但不能出现相同的路线 | |
线内无悬线 | 区域边界线等必须闭合的线 | |
线内无假结点 | 在水文分析中,河流线段的节点只能存在于端点或交汇点处 | |
线与线无重叠 | 临河的公路,河流与公路相邻,但不能重叠 | |
线内无自交叠 | 在交通数据中,一条道路不能出现重复的路段 | |
线内无自相交 | 等值线不能有坐标相同的节点 | |
线被多条线完全覆盖 | 公交线路必须与道路重合 | |
线被面边界覆盖 | 边界线数据必须被该区域的边界覆盖 | |
线端点必须被点覆盖 | 输电线路的端点必须被变压器或电表覆盖 | |
线不能和面相交或被包含 | 河流、沟渠必须位于流域内部 | |
线内无打折 | 线段是否存在尖角 |
规则 | 常见举例 | 图示 |
面内无重叠 | 一个行政区划面不能同时属于两个行政区管辖 | |
面内无缝隙 | 国土调查图斑数据不能有未定义土地利用类型的图块 | |
面与面无重叠 | 水域与旱地不能共用同一区域的数据 | |
面被多个面覆盖 | 行政区划图中省域必需被该省内的所有县域完全覆盖 | |
面被面包含 | 动物活动区域必须在整个研究区内 | |
面边界被多条线覆盖 | 边界线与区域完全重合 | |
面边界被边界覆盖 | 行政区划图中省域由该省内的所有县域组成,二者共用相同的边界 | |
面内无锐角 | 图斑轮廓避免过于生硬 |
规则 | 常见举例 | 图示 |
无复杂对象 | 数据集对象内是否包含一个或多个子对象 | |
线或面边界无冗余节点 | 减少数据冗余 |
在检查完毕后,需要对存在错误的数据进行处理。iDesktopX提供了针对线数据集自动处理的【线拓扑处理】和适用于各类型数据集人工精细处理的【错误检查器】功能。
【线拓扑处理】功能支持根据常用拓扑处理规则,同时进行多项错误的自动处理,并且可以根据数据特点设置相应的处理容限等参数。拓扑处理规则包含:去除假节点、去除冗余点、去除重复线、去除短悬线、长悬线延伸、邻近端点合并、弧段求交。
需要注意的是,该功能会直接在源数据集上进行修改,建议提前备份。
对于点、面数据集,或者那些需要人工判读的错误,往往需要手动逐一去处理。为此,iDesktopX提供了【错误检查器】功能,不仅可以筛选过滤错误类型,并且可通过列表定位错误在地图中的位置;此外还可以通过右键菜单的裁剪、擦除、创建要素、标记异常等快速操作,便捷有效地处理拓扑错误。
实际项目中,一些数据错误无法单靠拓扑关系来检查其正确性,这类数据错误需要根据具体情况去选择解决方法。下面罗列了几种常见的数据错误及其对应的解决方法:
序号 | 已知错误 | 解决办法 | 备注说明 |
1 | 坐标异常,如数据集的范围很大,全幅显示时数据集或地图会缩至一团。 | 逐一排查出跟其它数据集范围明显不一致的那个数据集,检查其坐标系: (1)如果该数据集坐标系正确,但与其它数据坐标系不一致,可以进行坐标系转换或者开启动态投影; (2)如果该数据集坐标系错误,使用配准工具将其配准到正确的位置。 | 检查数据集中各对象的坐标,点数据集中是SMX、SMY;线和面数据集,可以使用【计算几何属性->范围坐标】功能获取数据集对象的坐标。 |
2 | 导入shp数据后,属性表中的文本字段存在乱码情况。 | 是由于文本编码错误,需在导入时将“源文件字符集”设置为”UTF-8“。 | SuperMap 采用Unicode编码,默认数据集字符集为UTF-8。如果 shp文件采用ASCII编码,导入SuperMap 中后就会有乱码的问题。 |
3 | 道路线断点过多,制作标签后容易出现标签过于密集的情况。 | 满足用途的前提下,对数据集进行【融合】处理,以减少标签冗余。 | |
4 | 数据过于复杂:子节点过多、子对象过多等。 | (1)线数据集,可以使用重采样进行处理; (2)面数据集,建议先拓扑转线,对线进行重采样后,再重新拓扑构面; (3)如果数据子对象过多,建议对几何对象进行分解,分解前需要排查图层中对象,避免分解出岛洞多边形。 | |
5 | 导入CAD格式的数据时,选择导入为“CAD数据集“,单个对象设置所需要的风格比较麻烦,分层显示不好控制。 | 以“简单数据集”方式导入,系统会自动识别CAD数据中的对象类型,存储为相应的点、线、面或文本数据集,方便进行风格设置及显示控制。 | 导入 *.dxf、*.dwg 文件时,另提供一些可选转换参数,可根据数据实际情况进行选择。 |
上文介绍了矢量数据的部分检查内容、方法,结合SuperMap软件具体介绍的图形数据的拓扑检查与处理,罗列了点、线、面和多种类型数据集的常用拓扑规则和使用场景。另外,简单介绍了数据预处理中遇到的一些常见错误,并给出了具体解决办法。
参考资料:
1. 曾衍伟, 龚健雅. 2004. 空间数据质量控制与评价方法及实现技术 [J]. 武汉大学学报·信息科学版,29(8): 686-690.
2. 拓扑空间关系基本概念