我有一张地图,我已经数字化并转换为矢量图层(仅限河流)。 问题在于矢量化为每条河流产生了大量的区段,这些区段显示为不同的特征(每个区域可能有多个直线段,但它们不包括整条河流)。我正在寻找的是一个工具,可以合并到一个特征(我想是一条折线)所有极端在给定距离内的段。 我正在使用QGis和GRASS插件。我试过v.clean.snap,v.build.polylines,但还没有设法实际合并这些行。任何帮助将非常感谢!
答案 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)
我建议手动选择线条部分,然后使用“合并”工具(位于高级编辑工具栏中)。
处提出此类问题答案 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)。这会将它们全部合并为一个部分。
然后您可以导出节点(仅限常规),这是交叉点。
然后,您可以将解散的线要素与节点分开。这至少会为您提供仅在交叉点处分割的矢量要素。
至少它是更进一步。