一、需求背景
GIS数据通常需要满足拓扑规则,即点、线和面之间的拓扑关系应该正确。
悬挂点是指在地图数据中孤立存在的点,它们不与任何线或面的节点相连接。悬挂点通常是数据中的异常情况,可能是由于数字化或数据编辑错误而导致的。
下图以橙色显示要素 1,以灰色和绿色显示其他要素并以蓝色显示容差。
在图像 A 中,要素 1 未与容差范围内的任何其他要素连接。会将此视为具有未及的悬挂。在图像 B 中,要素 1 与灰色要素连接,未与绿色要素连接。从绿色要素来看,这是一个未及情景。但是,由于要素 1 与容差内的至少一个要素连接,因此不会将此视为悬挂。
在图像 A 中,要素 1 的端点未与容差范围内的任何其他要素连接。会将此视为具有过伸的悬挂。在图像 B 中,要素 1 的端点与绿色要素连接,未与灰色要素连接。从灰色要素来看,这是一个过伸情景。但是,由于要素 1 与容差内的至少一个要素连接,因此不会将此视为悬挂。
图像 A 显示线端点和面位于容差范围(以蓝色显示)内,但是线端点未接触面边或折点;会将此视为悬挂并作为错误返回。图像 B 不会视为悬挂并且不会作为错误返回。
1.1、消除悬挂点的原因
拓扑一致性:GIS数据通常需要满足拓扑规则,即点、线和面之间的拓扑关系应该正确。悬挂点可能破坏这些拓扑关系,导致分析和查询时产生错误的结果。
数据准确性:悬挂点可能是由于错误的数字化或编辑操作引起的。清理悬挂点可以提高数据的准确性,确保地图与实际地理空间相匹配。
空间分析的准确性:如果进行空间分析,如缓冲区分析、路径分析等,悬挂点可能导致分析结果不准确。
1.2 消除悬挂点的方法
手动编辑:通过GIS编辑工具手动删除悬挂点,重新编辑与其他要素连接的线段。
自动化处理:使用GIS工具或算法,如拓扑修复工具,自动检测和修复悬挂点。这可以是GIS软件的内置工具或第三方工具。
1.3 悬挂点修复有哪些挑战或麻烦的场景呢?
复杂拓扑关系:当数据集包含复杂的拓扑关系,例如网络数据、水系等,悬挂点修复可能更为复杂。修复悬挂点可能需要考虑相邻要素之间的关系,以避免引入新的拓扑错误。
自动修复算法的限制:自动修复悬挂点的算法可能在某些情况下表现不佳。例如,对于位于线段中间的悬挂点,算法可能无法确定正确的连接线。这需要额外的人工干预来解决。
多源数据融合:当数据来自不同源头或不同精度的数据集时,悬挂点修复可能更为复杂。不同数据集之间可能存在不一致性,修复悬挂点时需要谨慎处理。
大规模数据集:对于大规模数据集,悬挂点修复可能需要大量的计算资源和时间。在这种情况下,效率是一个挑战,可能需要采用分布式计算或优化算法来处理。
准确性要求:某些应用对准确性要求非常高,例如导航系统或地理空间分析。在这些情况下,修复悬挂点可能需要更精确的方法,同时要确保不引入新的错误。
数据编辑历史记录:当数据集有多个编辑历史版本时,悬挂点可能是由于编辑操作引起的。在修复悬挂点时,需要考虑编辑历史记录,以避免影响先前的编辑决策。
……
二、线要素悬挂点修复工具
线要素悬挂点修复工具用于解决,在指定距离容差(距离为扇形半径,扇形角度默认180)范围内,沿着线走向向前自动检测线要素图层存在的悬挂点,并按更为合理的方式将悬挂点给予修复,可根据需要是否输出被修剪、延伸、连接的部分。同时,工具支持另存修复结果或直接原地修复源数据。
扇形搜索示意如下:
对于道路、水系等线状网络数据,我们知道线要素整体上是往一个方向迂回前进的,通过扇形搜索,能有效解决线要素往反方向连接的问题。
2.1 工具概述
工具功能对悬挂点的修复方式包括三个方面:
(1)裁剪
移除线上超过交点指定距离的部分(悬挂线),并在交点位置,对线要素进行打断。
(2)延伸
将线段延伸至指定距离范围内的第一个相交要素。如果在指定距离范围内不存在相交的要素,则不会延伸该线段。
a)悬挂点与临近线要素间,存在一个合适的节点,可连接悬挂点与此节点,解决悬挂问题;
b)悬挂点与临近线要素间,找不到一个合适的节点,可延长此悬挂点至临近线合适位置,解决悬挂问题;
合适点:线节点与悬挂点最为接近;悬挂点与该节点连接后,以连接点为中心,与之连接的线之间构成的夹角不小于指定角度(默认30°);且连接后,不能与邻近线存在立交(跨越)的情况。
(3)连接
悬挂点附近有其他悬挂点,通过连接两个悬挂点解决悬挂问题,且连接段不会与其他线要素相交;
2.2 功能流程
(1)工具打开界面如下图所示:
(2)工具测试数据执行结果如下图所示:
a 连接
在悬挂点处,寻找最近的悬挂点进行连接,且连接后不能与其他要素相交;
“连接”修复后的要素,不是简单的生成一条线段对悬挂点进行补充,而是通过增加折点完成悬挂点的修复;
可选择输出因悬挂修复带来的数据变化情况的记录;
b 裁剪
裁剪功能除了包含arcgis中的“修剪线”功能外,将在裁剪处对线进行打断,一步到位解决网络连通问题,且可以将被裁剪的部分输出,使用该记录可用于数据修复情况的检查和验证。
c 延伸
延伸功能算是三种修复类型(裁剪、延伸、连接)中更为有特殊的功能。
小编 VS ArcGIS
“延伸”功能,不是简单的解决两条线要素的延长相交问题。而是优先寻找“合适点”,找不到合适点的线将不进行延伸处理,避免因为延伸带来的极小角、自相交、增加新的点位等额外的数据问题,且没有修复情况记录。
此外,“延伸”功能将在连接处打断线,一步到位解决网络连通问题。
ArcGIS中的“延伸线”工具,是一种不考虑延伸后线要素之间夹角的“粗暴”做法。
将线段延伸至指定距离范围内的第一个相交要素。如果在指定距离范围内不存在相交的要素,则不会延伸该线段。
arcgis中“延伸线”插图如下:
(3)工具参数介绍如下:
(4)工具输出:
要素类(FeatureClass),每一个修复类型输出两个要素类,要素类1名称使用“dangle_to+[clip/dangle/polyline]”组成,用于存放因为修复悬挂对数据进行的更改;要素2名与输入要素名称相同,用于记录悬挂点修复的结果。输出的要素类存放在输出目录中的scratch.gdb中。若scratch.gdb不存在,则自动创建,若已存在,不会覆盖其中已有的要素。
(5)注意事项:
工具支持是否原地修改,请按实际需要进行选择。