我想在QGIS图层的顶点处自动分割所有线(像这样)。
我已经完成了google搜索,找到了这篇文章,该文章非常接近,但是工作流程很复杂。因为我必须训练我的同事(不熟悉GIS)来使用此工具,所以我想要一些像插件一样简单的东西,或者不需要GRASS的东西。由于距2010年已经很久了- 上次回答的时间,所以我想知道是否有更好的方法可以达到相同的结果?
我想在QGIS图层的顶点处自动分割所有线(像这样)。
我已经完成了google搜索,找到了这篇文章,该文章非常接近,但是工作流程很复杂。因为我必须训练我的同事(不熟悉GIS)来使用此工具,所以我想要一些像插件一样简单的东西,或者不需要GRASS的东西。由于距2010年已经很久了- 上次回答的时间,所以我想知道是否有更好的方法可以达到相同的结果?
Answers:
来自“ 处理工具箱”的爆炸线会将所有线在其顶点处拆分为单独的线。
菜单处理->工具箱。在搜索字段中键入“ explode”以查找该功能。从下拉列表中选择您的线图层并开始。这将产生一个新层。
从线层中选择一条或多条线将产生仅具有这些特征的分割层,其余部分将被丢弃。
注意:随着QGIS的快速发展,下面的所有信息已经过时了。
我认为爆炸线将是SEXTANTE工具箱的解决方案 。
QGIS Geoalgorithms > Vector geometry tools > Explode lines
。不幸的是,它目前似乎无法正常工作,我只收到一条错误消息。Traceback (most recent call last): File "path/.qgis//python/plugins\sextante\core\GeoAlgorithm.py", line 145, in execute self.processAlgorithm(progress) File "path/.qgis//python/plugins\sextante\algs\Explode.py", line 58, in processAlgorithm features = QGisLayers.features(layer) NameError: global name 'layer' is not defined
一个有效的解决方案是
Split Feature
“贡献”存储库中的-Plugin,它可以为我完成工作。总的来说,我更喜欢使用sextante函数而不是使用单独的插件,因为使用sextante的工作流程要快得多,并且不会产生中间步骤的垃圾文件(前提是它可以工作)。
编辑:不幸的是,许多插件尚未移至官方插件存储库,但仍只能通过“已贡献”的插件存储库使用:http : //pyqgis.org/repo/contributed,该插件 已从默认存储库中删除版本1.8的列表。
您可以在那里单独下载它们并将其解压缩到.qgis / python / plugins文件夹中,或者将此地址添加到插件存储库列表中:
Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.
segment_list = []
for feature in feature_list:
vertices = feature.geometry().asPolyline() # returns list of vertices comprising polyline
for point in range(len(vertices)-1):
segment = QgsFeature()
segment.setGeometry(QgsGeometry.fromPolyline([vertices[point], vertices [point+1]]))
segment.setAttributes(feature.attributes())
segment_list.append(segment)