Ich habe eine Ebene in QGIS und möchte sie über ein Plugin duplizieren, damit ich die Kopie wie gewünscht verwenden kann, ohne das Original zu ändern.
Natürlich layer2 = layer1
wird es nicht funktionieren, denn alles, was mit Layer2 passiert, passiert auch mit Layer1, da es das gleiche Objekt hinter all dem ist.
Der einzige Weg, den ich gefunden habe, ist als solcher:
QgsVectorFileWriter.writeAsVectorFormat(layer1,r"C:\Users\ABC\AppData\Local\Temp\NewLayer.shp","utf-8",None,"ESRI Shapefile")
layer2 = QgsVectorLayer("C:\Users\ABC\AppData\Local\Temp\NewLayer.shp","New vector","ogr")
#do something with layer2
Gibt es eine einfache Möglichkeit, die Ebene im Speicher zu duplizieren, ohne eine neue Datei schreiben zu müssen ?
quelle
In QGIS 3 können Sie eine Kopie einer Ebene erstellen, ohne einen Verweis auf die übergeordnete Ebene auf folgende Weise zu speichern:
Die QgsVectorLayer-Klasse verfügt über eine clone () -Funktion, mit der Sie die Ebene in einer neuen Ebene klonen können. Das Problem besteht darin, dass beim Ändern der Geometrie in der geklonten Ebene die ursprüngliche Ebene betroffen ist. Der Grund dafür ist, dass die Datenquelle ist für die ursprüngliche Ebene und die geklonte Ebene gleich.
quelle