如何连接网络中的线路?


15

我有一个线的shapefile和另一个多边形。当两条或多条线与多边形相交时,应将其连接(捕捉),但有时在手动数字化期间不会发生这种情况。我需要查找并更正所有这些错误。我使用v.clean了GRASS GIS,它会自动捕捉很多顶点,这很好,但是其中一些断开连接的线距离我给出的公差还很远,如果我增加的公差太大,它就会开始产生其他类型的错误。

在此处输入图片说明

有任何想法吗?


1
在空间上将折线端点连接到多边形,然后按多边形汇总计数。对于每个包含多个连接端点的多边形,创建一条折线,该折线由从这些端点的质心辐射到端点本身(“星形”)的线段组成。将星星与原始折线合并。清除结果以消除出现的任何自相交。功能齐全的GIS支持(并且可以自动化)每个步骤。因为我不熟悉QGIS或GRASS的详细信息,所以仅提供此解决方案作为注释。
ub

但是有时候所有的线都在多边形的外面...
vascobnunes 2012年

1
这些线代表什么?如果它们是河流,是否使用诸如名称或河流顺序之类的附加信息进行编码?是说网络是定向的(例如河网),因为两个一阶流必须流入二阶流。我想我想说的是,您可能想在捕捉过程中添加一些智能,以克服随着搜索容忍度增加而引起的躲避捕捉问题。
Hornbydd 2012年

1
您的评论似乎与这个问题矛盾。问题似乎表明您要捕捉位于公共多边形内的顶点。如果顶点落在多边形之外,那么您就没有给出如何处理顶点的标准!那么,多边形和折线之间的关系到底是什么?
ub

1
我同意胡言乱语。也许您应该澄清这个问题。听起来您想要的是位于“多边形”内的线以及“闭合”的线,但要排除“内”但正确连接的线?
达伦·科普

Answers:


7

我对问题的理解如下:

如果折线端点与多边形相交,则需要将折线连接(通过添加或调整顶点)到与同一多边形相交的所有其他折线端点。

某些多段线端点不与多边形相交,而是下冲,但这些端点应如上所述连接。

该答案基于已经给出的一些答案,但是由于我不了解所有QGIS命令而还不完整-也许其他人可以添加此答案?

  1. 对于每个折线,提取端点坐标(“ 矢量”>“几何工具”>“提取节点”,然后整理)并计算它们是否在多边形内(“ 矢量”>“研究工具”>“按位置选择”)。

  2. 对于多边形内的折线端点,将折线的那一端延伸到多边形的中心(使用“ 向量”>“几何工具”>“多边形重心”提取多边形中心,虽然可以修改线,但是不确定线条的修改)将多段线顶点作为点,并在使用“指向路径”插件重建修改后的多段线之前,添加具有适当编号的其他顶点)

    您提到有些情况下某些或所有线已正确连接,在这些情况下(可通过重合多义线端点识别),您可能选择使用重合端点位置而不是多边形质心作为延伸点该多边形的所有其他未连接折线。

  3. 对于落在多边形之外的折线端点,请将折线的那一端延伸到最近的多边形的中心。同样,尽管GRASS v.distance模块看起来可以解决问题,但我不确定如何计算最近的多边形。


多数民众赞成在解决问题的一个很好的理由。我也从alexgleith的答案中得到了类似的答案。但是我被困在“将折线的那端延伸到最近的多边形的中心”的操作中。现在的问题是我该怎么做?如果我对多边形的质心使用v.clean.snap,它将仍然移动不是端点的任何顶点...
vascobnunes 2012年

一种方法是按照上述方法将折线转换为点,并在必要时根据现有起点或终点的位置在给定线的起点或终点添加一个附加点。添加的点的位置将是多边形的质心,并且该点的顶点序列号为-1或1000000,以将其放置在折线的起点或终点。然后,这将允许使用“指向路径”工具重建多段线
Andy Harfoot,2012年

2

我认为我可以使用一些自定义算法来完成此操作...请注意,您想如何实现它,但我认为它会起作用。

对于每条线,对于每个端点,在多边形中为端点处的点做一个点,并将其链接到该多边形。

然后,对于每个多边形,如果链接了多个端点,则将它们全部合并(移动)到平均坐标或多边形的质心。

那很简单。但是在标准运算符中不可用。我认为可以在几天的编码时间内在ArcGIS中完成。

另一个要注意的是,在您发布的图像中,其中一条线位于多边形之外...您可以通过简单地找到与每个端点顶点最接近的顶点,以确保紧密度是相互的,从而以一种更简单的方式处理此问题(我认为那是必要,以便仅以一种方式捕捉顶点),然后可以将其移动到顶点的平均位置。


1

有趣的问题!我想不出一种自动执行捕捉的方法,但是这是确定至少要进行手动校正的区域的步骤:

  • 将新列添加到您的线层,并将所有要素设置为等于“ 1”。
  • 在“向量”>“按位置连接属性”下,将“目标”层设置为多边形层,并将线层设置为连接层。然后选择“获取相交特征摘要”,然后单击“总和”。给出输出文件的位置,然后单击“确定”。
  • 生成的多边形文件将是您原始的多边形层,但带有一些其他字段。SUM字段是您想要的;当它为2时,表示您可以缩放它并手动捕捉要素。

根据情况(功能数量,在这种情况下的数量与未在其中的数量等),这可能会节省您一些时间。

编辑:您可能还想使用总和为2的多边形来创建线图层的子集,然后对容差较大的图层进行清理,以免更改其他要素。


我已经做了类似的事情。我什至使用v.net来检索线条的节点,并对与节点匹配的多边形进行空间选择。我发现有很多错误可以使用此方法进行纠正,但是我仍然有3个大问题:1)手动纠正有数千个错误,这需要很长时间。2)在某些情况下,我没有得到所有的错误,这些错误是由于线或节点甚至没有“接触”多边形而造成的;3)我得到的错误不是错误,是因为两条线正确连接时也会选择它们。
vascobnunes 2012年

0

有了端点后,我将制作一个蜘蛛图,以多边形质心为基础,以附近线的端点为目标。您执行蜘蛛网图分析,结果每个折线将有一个段。

即使对于那些在多边形之外结束的对象也可以使用。我不知道如何在QGIS中做到这一点,对不起,但是我会在我熟悉的ESRI产品中做到这一点。这就是我在第一笔回覆中建议建立一个“明星”时的理解。

我敢肯定,这里有人知道如何在QGIS中执行此类分析


4
欢迎使用GIS Stack Exchange!我注意到您的回答吸引了一些反对意见,并怀疑这是因为您提出了替代者正在使用的技术(GRASS / QGIS)的替代方案。我的建议是提出诸如评论而不是答案之类的建议,如果提问者似乎有兴趣,则将信息传递给答案。
PolyGeo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.