数据融合工具(11)悬挂点自动检测和修复

一、需求背景

        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)注意事项:

        工具支持是否原地修改,请按实际需要进行选择。

图片

  • 33
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

craybb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值