将多个线段连接成一条线 - GIS

时间:2012-03-17 16:22:20

标签: gis qgis

我有一张地图,我已经数字化并转换为矢量图层(仅限河流)。 问题在于矢量化为每条河流产生了大量的区段,这些区段显示为不同的特征(每个区域可能有多个直线段,但它们不包括整条河流)。我正在寻找的是一个工具,可以合并到一个特征(我想是一条折线)所有极端在给定距离内的段。 我正在使用QGis和GRASS插件。我试过v.clean.snap,v.build.polylines,但还没有设法实际合并这些行。任何帮助将非常感谢!

5 个答案:

答案 0 :(得分:5)

您可以使用编程语言中的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")

注意:从documentation 中的注释中,特别是它连接具有交叉端点的线段“,似乎线要素必须是连续的 - 但是不清楚是否这也适用于按ID合并的情况。

答案 1 :(得分:3)

我建议手动选择线条部分,然后使用“合并”工具(位于高级编辑工具栏中)。

您可能还想在http://gis.stackexchange.com

处提出此类问题

答案 2 :(得分: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中,它由Vector-&gt; RoadGraph - &gt;设置菜单配置,尽管插件将自身称为&#34;最短路径&#34;。

答案 3 :(得分:2)

一个非常晚的答案可能对其他人有用:

我遇到了同样的问题,我开发了一个QGIS插件来解决它。它会自动将多条连接线(即共享端点的线)合并为一组较小的较长线。输出图层类型为Line,而不是PolyLine。合并可以基于以下两个标准之一:

  • 长度:一个段合并为其最长的邻居。
  • 对齐:将一个段合并到其最佳对齐的邻居。我认为这个标准最适合河网。

此插件名为 MergeLines full documentation here),您可以在公共QGIS仓库中找到它。工作仍在进行中,不要犹豫提出新的功能。

答案 4 :(得分:-4)

您可以使用“DISSOLVE”工具(ARC TOOLBOX)。这会将它们全部合并为一个部分。

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

然后,您可以将解散的线要素与节点分开。这至少会为您提供仅在交叉点处分割的矢量要素。

至少它是更进一步。