将多条线段合并为一条线-地理信息系统(GIS)

10

我有一张地图,已经数字化并转换为矢量图层(只包含河流)。 问题是矢量化处理产生了大量河流线段,这些线段显示为不同的要素(每个要素可能由多条直线段组成,但它们并不能覆盖整个河流)。我正在寻找一个工具,可以将所有极端距离内的线段(折线)合并为一个要素。 我正在使用QGIS和GRASS插件。我尝试过v.clean.snap、v.build.polylines,但还没有真正成功合并线段。非常感谢任何帮助!


2
你的每个河流都有一个共同的单一ID吗? - Simbamangu
已将对 Q 的编辑回滚:“合并”和“分组”似乎是对问题标题的次要和离题的编辑,而原始标题已经足够清晰明了。 - Gavin Simpson
7个回答

7

你可以使用GEOS库在编程语言中实现,也可能在命令行中实现。在我的情况下,我是在R语言中进行的,使用rgeos库:

require(rgdal)
require(rgeos)
lines <- readOGR("f:/dir", "itineraris")
# grouping line features by lines$ITINERARI
lines2 <- gLineMerge(lines, byid = lines$ITINERARI, id = lines$ITINERARI)
writeOGR(lines2, "f:/dir", "itineraris_merged", driver="ESRI Shapefile")

注意:从文档中的注释中可以看出,它会将具有相交端点的线段连接起来。似乎线特征必须是连续的,但不清楚在按ID合并时是否也适用。


5
我建议手动选择行部分,然后使用“合并”工具(位于高级编辑工具栏中)进行操作。
你可能还想在http://gis.stackexchange.com上提出这样的问题。

1
谢谢,但我有几百个这样的情况,而且我必须为133张地图重复...... 我想我真的需要一个插件来解决这个问题。你有任何建议在哪里开始寻找吗? - LittleFish

4
一个非常晚的答案,可能对其他人有用:
我遇到了同样的问题,并开发了一个QGIS插件来解决它。它会自动将多个连接的线(即共享端点的线)合并为一组较长的线。输出图层类型是Line,而不是PolyLine。合并可以基于以下两个标准之一:
长度:将线段合并到最长的相邻线段。
对齐:将线段合并到最佳对齐的相邻线段。我认为这个标准最适合河流网络。
这个插件叫做MergeLines(完整文档在此),你可以在公共QGIS repo中找到它。工作仍在进行中,请随时建议新的功能。

希望能够在QGIS 3中拥有这个插件! - miln40

3
对于那些偶然发现这个问题的人: 您可以使用 Roadgraph 插件 (最短路径)或 PointsToRoute 脚本。选择两端的点(或在Points2Route中添加额外的点以指定多条路径),然后导出到自己的图层。
至于133个地图......我修改了 PointsToRoute 脚本以应对类似的重型情况,以便自动浏览一层线并在它们的端点之间查找路线。 我会把它整理一下,看看能否很快在 github 上发布。
PointsToRoute: https://github.com/anitagraser/QGIS-Processing-tools/blob/master/1.1/scripts/points_to_route.py ShortestPath(Roadgraph): 这是由 QGIS 插件管理器启用的。 请注意,在最新版本的 QGIS 中,它是通过向量 - > RoadGraph - > 设置菜单进行配置,尽管插件将自己称为“最短路径”。

1

您可以使用磁铁图标 Join 2 lines QGIS (启用捕捉)来连接不同折线的2个顶点。这是一个手动过程,因此如果您想连接几条线,则非常有用:

  1. 单击铅笔图标以编辑线
  2. 单击顶点编辑器
  3. 单击磁铁图标(启用捕捉)。

现在,单击线的最后一个顶点,并将鼠标靠近您希望连接的顶点(QGIS将以粉色标记它)。

Join 2 lines

加入线后,记得使用融合工具合并属性,这样属性表上只保留一行。


0
使用工具箱中的“将几何图形对齐到图层”功能。

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

-6

您可以使用“DISSOLVE”工具(ARC TOOLBOX)将它们合并为一个线段。

然后,您可以导出节点(仅常规节点),这些是交点。

然后,您可以使用节点分割已溶解的线要素。这将至少为您提供仅在交点处拆分的矢量要素。

至少这是一个进展。


1
OP要求QGIS的解决方案,而你似乎在提到ArcGIS? - radek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接