在QGIS中进行编辑时如何将选定的多部分要素转换为单部分要素?


9

有关如何使用QGIS将多部分要素图层转换为单部分要素的问题和答案分别是:

但是我看到的所有解决方案都将创建一个全新的层,并将所有多部分的几何图形转换为单个几何图形。

因此,问题是,在编辑会话期间,如何能够将多部分要素选择性地转换为单部分要素,而无需创建新图层?

它与“合并所选要素”工具相反,类似于ArcGIS中的爆炸

有没有插件可以这样做?如何使用python控制台完成此操作?

Answers:


18

受此问题和答案的启发,以一个使用开放源代码时如何“轻松”制作自己的解决方案的示例为例,我尝试创建自己的代码来在编辑会话期间有选择地“分解”多部分功能。

我第一次探索了QGIS 1.8 API,并给出了以下代码来完成这项工作:

layer = qgis.utils.iface.mapCanvas().currentLayer()
remove_list = []

for feature in layer.selectedFeatures():
    geom = feature.geometry()
    # check if feature geometry is multipart
    if geom.isMultipart():
        remove_list.append(feature.id())
        new_features = []
        temp_feature = QgsFeature(feature)
        # create a new feature using the geometry of each part
        for part in geom.asGeometryCollection ():
            temp_feature.setGeometry(part)
            new_features.append(QgsFeature(temp_feature))
        # add new features to layer
        layer.addFeatures(new_features, False)

# remove the original (multipart) features from layer
if len(remove_list) > 0:
    for id in remove_list:
        layer.deleteFeature (id)    

我不是一个经验丰富的程序员,因此代码可能不是最有效的代码。

下一步将是用它制作一个插件...或者至少尝试!

更新:
我能够创建插件。它称为Multipart Split,可以在QGIS官方存储库中找到。


1
在没有QGIS的情况下是否可以进行这种“多部分->单部分”转换?使用独立Python可以做到吗?@Alexandre Neto
Akhil

请注意,此解决方案依赖于在地图画布中进行编辑时选择图层要素的一部分。要将图层的所有特征(例如shapefile)转换为单个零件特征,我认为您可以使用OGR库。看看这个链接
亚历山大·内托

干杯! 帮助..!
阿基尔,2015年

我想将一个多部分多边形作为一个图层并将其转换为单部分-我似乎找不到在qgis中执行此操作的python代码。我看到在向量-几何工具-从多部分到单部分下有一个命令。这就是我想要的,我只需要python语法
kflaw

@AlexandreNeto很棒的插件!
DPSSpatial '16
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.