这是一个重磅工具,建议先看视频,多看几遍。
一、需求背景
做数据融合时,经常碰到这样的问题?
我获取的数据源有A、B、C,……,在数据分析阶段,需要选择表达准确、现势性好、精度高、内容全的要素进行融合更新,通过对比分析,A、B的几何都好,C中有几个属性项需扩展到成果数据中。
问题来了,……
-
A,B几何都好,那势必存在表达同一段实体的线要素,要么选A,要么选B,或者A选一小段,B选一小段,再或者,选A、选B都差点意思?
-
假设几何已经确定,将C中的属性项传递到几何,你又该如何?
解决类似上述出现的数据问题,小编称之为“缠绕线的检查和修复”。
二、解释一下,什么是“缠绕线”?
“缠绕线”这个名称,是小编胡诌的,主要是指表达同一段实体的多条折线存在来回穿插相交,或整体偏移,在数据处理编辑时,不能简单的通过删除其中一条线要素而实现网络的构建,这种数据现象,小编取名“缠绕线”。
上个图解释一下:
三、如何将缠绕“指标化”?
这种缠绕,可能是内业使用的底图不一样,空间参考不一致,……,导致的表达同一实体的线要素,它们的节点,特征和数量不相同。
做数据处理方面的功能,小编一直做的,就是发现问题,找足够多的问题示例,归纳问题,提取问题共同点,将问题指标化,然后写工具处理。
轨迹线相似性示例一:
轨迹线相似性示例二:
轨迹线相似性示例三:
轨迹线相似性示例四:
比如道路,水系等线图层数据,它们一般是基于影像数据提取采集的,在真实的世界,某一段路,它是唯一的,形状特征是相对确定的,无论是谁来做数据采集,采集的结果,在形状上一定是极其相似的。
基于此,我们需要将这种缠绕线的“相似性”指标化。
实现缠绕线相似性度量的方法很多,各种算法都有其比较适用的场景。选用那种算法,应充分了解该算法的原理,和分析数据的特点。
是的,难度又提高了……
四、要解决那些问题?
1.将所有存在“缠绕”的地方找出来;
2.对缠绕的区域,进行相似度计算;
3.在指定容差允许范围内,提取缠绕线对之间的最优路径;
4.使用最优路径替换缠绕线对,并正确处理线两端的连接;
5.记录缠绕线对的ID,实现属性字段的传递;
……
针对此需求,小编写了两个工具。
工具一:“线缠绕查找和修复工具”,用于解决缠绕线的查找、缠绕线对中心线的提取以及缠绕线的修复;
工具二:“根据相似性曲线更新缠绕线工具”,当工具一只查找,不修复时,将输出缠绕线对处最优路径线,作业员可在此线上进一步确认和编辑,最后运行工具二,实现缠绕线的修复。
总的来说,工具一通过指定容差允许值,自动完成缠绕线的修复;工具二允许作业员对缠绕线的情况进一步分析比对,再实现缠绕线的修复。
五、缠绕线查找和修复工具
缠绕线查找和修复工具,用于解决线图层中,存在线缠绕的数据质量问题,在查找出缠绕线的基础上,提供直接修复的功能。能非常便捷的实现这一类数据质量问题的查找和修复,尤其是当数据量较大时,工具将极大的提高数据融合的效率和质量。
5.1 工具概述
“缠绕线查找和修复”工具,支持的功能如下:
-
在指定搜索距离范围内,分析线要素周边的其他线要素,计算其与自身的曲线相似度,对相似度值满足指定阈值的曲线,计算两条曲线间的最优路径,使用最优路径替换原曲线。
-
能有效解决线要素图层中存在的线缠绕数据质量问题,以及提取双线至单线的需求。
5.2 功能流程
(1)工具打开界面如下图所示:
(2)工具测试数据执行结果如下图所示:
截图1:
截图2:
(3)工具参数介绍如下:
(4)工具输出
要素类(FeatureClass),输出两个要素类,要素类1名为“要素类名称+_cross_repair”组成;要素2名“要素类名称+_cross_repair_correction_curve”。输出的要素类存放在输出目录中的scratch.gdb中。若scratch.gdb不存在,则自动创建,若已存在,不会覆盖其中已有的要素。
“要素类名称+_cross_repair_correction_curve”记录的是缠绕线提取的最优路径线;
“要素类名称+_cross_repair”,当“是否修复”参数为True时,其要素图层与最优路径线要素图层完整构成修复后的结构;当“是否修复”参数为False时,其要素图层为输入要素的备份,用于后续“根据相似性曲线更新缠绕线工具”执行时,输入的线要素图层。
(6)注意事项:
无。