使用QGIS在顶点处将所有线分层吗?


11

我想在QGIS图层的顶点处自动分割所有线(像这样)。

我已经完成了google搜索,找到了这篇文章该文章非常接近,但是工作流程很复杂。因为我必须训练我的同事(不熟悉GIS)来使用此工具,所以我想要一些像插件一样简单的东西,或者不需要GRASS的东西。由于距2010年已经很久了- 上次回答的时间,所以我想知道是否有更好的方法可以达到相同的结果?


您现在可以使用QGIS中的GRASS工具。也许“矢量”->“几何工具”->“单零件成多零件”可能会有帮助。Sextante工具箱应具有“爆炸线层”,并且具有插件“拆分功能”
simplexio 2013年

我认为您提到的答案是(仍然)正确的过程。矢量工具“单部分到多部分”将无法完成您想要的操作。它在节点处而不是每个顶点处拆分多线串。
Micha

@simplexio:使用Sextante工具箱时,我收到了一条与Bernd V.答案相同的错误消息,并且在网络上的任何地方都找不到“ split feature”插件。
Cao Minh Tu

@Micha:该程序可能是正确的,但对我的同事们来说太复杂了-他们不熟悉GIS,所以当其他所有方法都失败时,我将把它作为最后的选择:)
曹敏图

@Cao Minh Tu:我在Linux Master和Win7 1.8上使用新创建的行图层再次测试了“ Split功能”,并且在这里起作用。请从头开始创建测试层并将其应用到那里。也许原始图层中的错误必须首先解决!
Bernd V.

Answers:


17

来自“ 处理工具箱”的爆炸线会将所有线在其顶点处拆分为单独的线。

菜单处理->工具箱。在搜索字段中键入“ 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.


您能告诉我在哪里可以找到“拆分功能”插件吗-我在官方插件存储库中找不到它?通过SEXTANTE Explode行,我收到了与您相同的错误消息-这里有一个错误报告:hub.qgis.org/issues/7157
Cao Minh Tu

@Cao Minh Tu:对不起,完全忘记了我将旧存储库添加到了我的列表中,该插件位于其中。查看我的修改。
Bernd V.

我尝试了Split Feature插件,没有错误消息,但输出层不包含任何内容。
曹敏图

pyqgis.org/repo/contributed上只有404错误-URL是否已更改?
til_b 2014年

@til_be参见我的编辑
Bernd V.

4
  1. 打开/创建GRASS映射集(以便您可以对数据运行工具)
  2. 打开GRASS工具/将要拆分的shapefile导入GRASS数据库
  3. 运行v.split.vert(设置最大顶点数= 2)

该解决方案将z值保持在线段几何中
Tamas Kosa,

1
    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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.