我有一个线的shapefile和另一个多边形。当两条或多条线与多边形相交时,应将其连接(捕捉),但有时在手动数字化期间不会发生这种情况。我需要查找并更正所有这些错误。我使用v.clean
了GRASS GIS,它会自动捕捉很多顶点,这很好,但是其中一些断开连接的线距离我给出的公差还很远,如果我增加的公差太大,它就会开始产生其他类型的错误。
有任何想法吗?
我有一个线的shapefile和另一个多边形。当两条或多条线与多边形相交时,应将其连接(捕捉),但有时在手动数字化期间不会发生这种情况。我需要查找并更正所有这些错误。我使用v.clean
了GRASS GIS,它会自动捕捉很多顶点,这很好,但是其中一些断开连接的线距离我给出的公差还很远,如果我增加的公差太大,它就会开始产生其他类型的错误。
有任何想法吗?
Answers:
我对问题的理解如下:
如果折线端点与多边形相交,则需要将折线连接(通过添加或调整顶点)到与同一多边形相交的所有其他折线端点。
某些多段线端点不与多边形相交,而是下冲,但这些端点应如上所述连接。
该答案基于已经给出的一些答案,但是由于我不了解所有QGIS命令而还不完整-也许其他人可以添加此答案?
对于每个折线,提取端点坐标(“ 矢量”>“几何工具”>“提取节点”,然后整理)并计算它们是否在多边形内(“ 矢量”>“研究工具”>“按位置选择”)。
对于多边形内的折线端点,将折线的那一端延伸到多边形的中心(使用“ 向量”>“几何工具”>“多边形重心”提取多边形中心,虽然可以修改线,但是不确定线条的修改)将多段线顶点作为点,并在使用“指向路径”插件重建修改后的多段线之前,添加具有适当编号的其他顶点)
您提到有些情况下某些或所有线已正确连接,在这些情况下(可通过重合多义线端点识别),您可能选择使用重合端点位置而不是多边形质心作为延伸点该多边形的所有其他未连接折线。
对于落在多边形之外的折线端点,请将折线的那一端延伸到最近的多边形的中心。同样,尽管GRASS v.distance模块看起来可以解决问题,但我不确定如何计算最近的多边形。
我认为我可以使用一些自定义算法来完成此操作...请注意,您想如何实现它,但我认为它会起作用。
对于每条线,对于每个端点,在多边形中为端点处的点做一个点,并将其链接到该多边形。
然后,对于每个多边形,如果链接了多个端点,则将它们全部合并(移动)到平均坐标或多边形的质心。
那很简单。但是在标准运算符中不可用。我认为可以在几天的编码时间内在ArcGIS中完成。
另一个要注意的是,在您发布的图像中,其中一条线位于多边形之外...您可以通过简单地找到与每个端点顶点最接近的顶点,以确保紧密度是相互的,从而以一种更简单的方式处理此问题(我认为那是必要,以便仅以一种方式捕捉顶点),然后可以将其移动到顶点的平均位置。
有趣的问题!我想不出一种自动执行捕捉的方法,但是这是确定至少要进行手动校正的区域的步骤:
根据情况(功能数量,在这种情况下的数量与未在其中的数量等),这可能会节省您一些时间。
编辑:您可能还想使用总和为2的多边形来创建线图层的子集,然后对容差较大的图层进行清理,以免更改其他要素。
有了端点后,我将制作一个蜘蛛图,以多边形质心为基础,以附近线的端点为目标。您执行蜘蛛网图分析,结果每个折线将有一个段。
即使对于那些在多边形之外结束的对象也可以使用。我不知道如何在QGIS中做到这一点,对不起,但是我会在我熟悉的ESRI产品中做到这一点。这就是我在第一笔回覆中建议建立一个“明星”时的理解。
我敢肯定,这里有人知道如何在QGIS中执行此类分析