Wie kann ein ausgewähltes mehrteiliges Feature beim Bearbeiten in QGIS in einteilige Features umgewandelt werden?

9

Es gibt verschiedene Fragen und entsprechende Antworten, wie aus einem mehrteiligen Feature-Layer mit QGIS ein Singlepart-Feature-Layer wird:

Aber alle Lösungen, die ich gesehen habe, erzeugen eine völlig neue Ebene und verwandeln ALLE mehrteiligen Geometrien in einzelne.

Die Frage ist also, wie man während einer Bearbeitungssitzung ein mehrteiliges Feature selektiv in ein einteiliges Feature umwandeln kann, ohne dass neue Ebenen erstellt werden müssen.

Dies ist das Gegenteil des Werkzeugs "Ausgewählte Features zusammenführen" und ähnelt der Explosion in ArcGIS.

Gibt es ein Plugin, das dies tut? Wie könnte dies mit der Python-Konsole geschehen?

Alexandre Neto
quelle

Antworten:

18

Inspiriert von dieser Frage und Antwort als Beispiel dafür, wie "einfach" man bei Verwendung von Open Source eigene Lösungen erstellen kann, habe ich versucht, meinen eigenen Code zu erstellen, um mehrteilige Funktionen während einer Bearbeitungssitzung selektiv zu "explodieren".

Ich habe die QGIS 1.8-API zum ersten Mal untersucht und diesen Code herausgebracht, der für diese Aufgabe geeignet ist:

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)    

Ich bin kein erfahrener Programmierer, daher ist der Code möglicherweise nicht der effizienteste.

Der nächste Schritt wird sein, ein Plugin daraus zu machen ... Oder zumindest versuchen Sie es!

UPDATE:
Ich konnte das Plugin erstellen. Es heißt Multipart Split und befindet sich im offiziellen QGIS-Repository.

Alexandre Neto
quelle
1
Wäre es möglich, diese Multipart -> Singlepart-Konvertierung ohne QGIS durchzuführen? Gibt es eine Möglichkeit, dies mit Standalone Python zu tun? @ Alexanderando Neto
Akhil
Beachten Sie, dass diese Lösung darauf basiert, einen Teil der Features eines Layers während der Bearbeitung im Kartenbereich auszuwählen. Um alle Features einer Ebene (z. B. Shapefile) in Einzelteil-Features zu konvertieren, können Sie meiner Meinung nach die OGR-Bibliothek verwenden. Schauen Sie sich diesen Link an .
Alexandre Neto
Prost! Hilft .. !!
Akhil
Ich möchte eine Ebene, die aus einem mehrteiligen Polygon besteht, in einen einzelnen Teil konvertieren. Ich kann den Python-Code dafür in qgis nicht finden. Ich sehe, es gibt einen Befehl unter Vektor - Geometrie-Werkzeuge - Multiparts zu Singleparts. das ist was ich will ich brauche nur die Python Syntax
kflaw
@AlexandreNeto tolles Plugin!
DPSSpatial