在QGIS中,我有两行。端点彼此靠近,但不完全对齐。我想将两条线合并为一条,将两个端点合并为中点。

我最接近的就是“合并选定的特征”。这给了我一个功能,但是它由两条不相交的线组成-端点之间没有线。

我正在寻找与Illustrator的“连接路径”功能类似的对象(“对象”>“路径”>“连接” )。

QGIS可以吗?

#1 楼

快速回答:不!没有类似的工具可以直接在图层上执行此操作(“加入两行”插件需要相交)。

您可以通过将线转到点(提取节点)然后与points2one(线输出)连接来在一个非常简单的图层上进行操作,但这比手工编辑要慢得多:


确保为线层打开了捕捉功能(“设置” |“捕捉选项” ...)(5像素对我来说效果很好)。
创建从一个端点到另一端点的新行。
选择所有三行(两个原始行+一个新行)并合并它们(“编辑|合并所选功能或工具栏按钮”。 >

评论


谢谢。我只有几行要合并,所以这很容易。 (@Michael Markieta的答案似乎更适合复杂情况。)

–埃文
2012年1月24日19:44



#2 楼

您可以结合使用QGIS和GRASS来完成此操作。 (QGIS |插件> GRASS>打开地图集)
将GRASS地图集中的矢量层添加到QGIS项目(QGIS |插件> GRASS>添加GRASS矢量层)
使用v.clean.snap(QGIS |插件> GRASS>打开GRASS工具>模块列表> v.clean.snap)

调整v.clean.snap的“阈值”以在整个研究区域中获得正确的顶点捕捉。

#3 楼

我假设您要将两个线段合并为一行。


这就是我的操作方法...


启用编辑。
打开捕捉(设置->捕捉选项...)。


选择节点节点工具。

双击其中一行的末端以添加节点。


拖动末端的节点以扣紧末端另一行的


选择两条线
合并它们的属性(如果它们具有不同的属性,则不能使它们成为一条线) 的两个功能


这应该导致一行。


评论


一切都很好。但是22,000行的数据集呢?我无法手动执行此操作...

–FaCoffee
17年1月17日在9:50

#4 楼

有一个QGIS插件,说它完全可以满足您的要求。

https://plugins.qgis.org/plugins/joinmultiplelines/
https://github.com/dgoedkoop/joinmultiplelines

(但是,我当时无法在QGIS 2.6中正确使用它)

评论


在3.8中表现出色

–user94812
19-10-17在20:35

#5 楼

如果您是说单个功能是由MULTILINESTRING而不是单个LINESTRING组成的,那么,如果您使用的是Postgis数据库,则可以轻松地解决该问题:

只希望1行执行此操作,您应该添加WHERE id = your_row_id。

#6 楼

也可以尝试:


将.shp保存为.dxf
使用DraftSight打开.dxf
连接折线零件
使用qgis重新打开.dxf并保存作为.shp
,从“矢量”菜单->几何工具->线到多边形


#7 楼

我只是用QGIS 3.4.0做到了这一点,使用了上面tnagel提到的插件Join Multiple Lines(安装在Vector菜单> Join Multiple Lines下)。很好地将大约60条尾迹线片段合并为大约20条尾迹线。您拥有的碎片越多,覆盖的面积越大,这就越不实用,因为您必须观察结果是否有问题(tnagel可能是我描述的问题之一)。

选择要加入的线,单击菜单项,然后将它们结合起来(即使末端相距一英里,也可以选择任意数量的线,但是...) ,您会从一条线的一端到另一条线的一端连接一条直线,因此请确保两端足够近,这样您才能对结果满意(我在另一篇文章中用笔尖标记了带有标记的直线,因此易于查看(“属性”>“符号系统”>添加一个标记线,并使该符号足够大以便于轻松查看,然后选择“仅在最后一个顶点上”单选按钮(如果需要,还可以添加另一个标记线)另一个符号,然后选择“仅在第一个顶点上”))

另外,线显然也可以是有方向的。因此,您必须注意(例如)线A的最南端不与B线下方最南端(您不希望使用的另一条长直线)。

我发现发生这种情况时可以“撤消”并使用“反向线”在“高级处理工具栏”中,将一条线的方向从一端翻转到另一端(不改变行的位置,只需将行的起点与行的终点翻转),然后再次加入行。

这样做的好处是,您所做的更改/编辑将保存到现有图层中,因此无需将结果另存为新shapefile(首先进行备份)。

我对QGIS的核心和插件开发人员所做的工作感到惊讶。显示聪明的建设性人在决定共同努力时可以做什么。谢谢!

#8 楼

使用OpenJUMP(增强版):


文件>打开文件拓扑>网络拓扑清理...
右键单击新层(已修复) :将数据集另存为....

结果如下:


#9 楼

在我的情况下,这些线位于不同的层中并且具有不同的属性。我将这些层与mmqgis合并,然后在下一步中使用对齐和合并线的技术来合并线。