麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

「GIS教程」使用QGIS提取河道、水道中心线

河道、水道中心线提取是GIS数据处理中一个常用任务,相信使用ArcMap或者ArcGIS Pro的同学都可以方便的实现。最近不少小伙伴公司里因为信创开始尝试使用QGIS,在麻辣GIS群里有小伙伴问到了这个问题,正好记录一下。

PS:小编后面会着重介绍一些QGIS中实现ArcGIS相同功能的方法,大家有这方面需求的可以留言哈。

需求

需求是给定如下的河道SHP图,提取出中心线来,原来的数据是内部的,小编为了测试,直接从之前的文章《「GIS数据」中国区域水系、河流、湖泊数据集》中提取了一段雅鲁藏布江的数据。如下:

方案一

方案一来自106群的 @太守 哥,操作方法如下:

  1. 将矢量面转线 Vector > Geometry Tools > polygons to lines
  2. 将一个如上的闭合线进行编辑(右键图层 → Toggle Editing),使用 "Split Features" 工具(Edit →EditGeometry→Split Features)进行分割。
  3. 使用 GRASS 的 v.split 工具让线段均匀布点
  4. 使用GRASS的v.voronoi.skeleton进行从多边形要素生成骨架线(中轴线)

你看这个方案我一个截图都没有,为什么?因为有更简单的方法,但我为什么保留了这个方法?因为这基本就是河道中心线提取的算法。(给你两分种想想怎么实现)

方案二(推荐)

后面和太守哥讨论了一下,发现并不需要这么麻烦,可以运行方案一的第4步,也就是 GRASS的v.voronoi.skeleton 可以直接算出一个面的中心线。

但本文中测试数据是两根线段,所以要提前处理一下,进入编辑状态。

先选中两条线段,然后点 合并要素 按钮

将两条线合并成一条线,再运行 矢量 -- 几何工具 -- 线转面

这样就转成一个面了,再在工具箱中搜索 中心线,找到GRASS的v.voronoi.skeleton工具。

这里小编没有改参数(具体的参数可以自行研究),直接运行,请注意,我和太守哥的电脑都出现了卡死的现象,不要关闭,给它一点时间,就可以运行成功,结果如下:

方案三

啊哈?还有方案三?真有,在StackExchange上找到了一个方案,不得不说QGIS是真灵活。

先把多边形转线(是的这个方法需要线要素)

打开 QGIS 中的闭合线"分割要素"工具,运行 GRASS v.split 工具,使点沿线均匀分布,然后对它们运行"矢量>几何处理>Voronoi 多边形"工具,见下图

使用"矢量 > 地理处理 > 修剪"从结果中剪切原始 Voronoi 多边形,然后仅选择河流区域的一半,见下图使用 Ctrl 键和选择工具

从源图层中剪切所选的左侧或右侧区域,如下面的图片所示。

最后从切割结果中创建一条线,将其放大,删除不必要的部分,保留河流中心线

是不是感觉不对,截图成了俄文?因为这个方法小编也没试过,看起来就很麻烦,想要尝试的可以试试。

参考地址:https://gis.stackexchange.com/questions/318721/creating-centerline-of-river-in-qgis

总结

没啥总结的,直接推荐方案二,方案二中的算法有一些参数可以设置,可以提升效率或者精度,具体需要的可以研究下。至于方案三,小编后面实践了再说,有兴趣的可以尝试一下,就当提升自己的技能了。

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子
没有下文

留言板(小编看到第一时间回复)