J'ai une couche dans QGIS, et je veux la dupliquer via un plugin afin que je puisse en utiliser la copie comme je le souhaite, sans modifier l'original.
Bien sûr, layer2 = layer1
cela ne fonctionnera pas, car tout ce qui arrive à layer2 se produira également à layer1, car c'est le même objet derrière tout cela.
La seule façon que j'ai trouvée de le faire est en tant que telle:
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
Existe-t-il un moyen simple de dupliquer le calque en mémoire, sans avoir à écrire un nouveau fichier?
la source
Dans QGIS 3, vous pouvez faire une copie d'une couche sans enregistrer aucune référence à la couche parent de cette manière:
La classe QgsVectorLayer a une fonction clone () qui vous permet de cloner le calque dans un nouveau calque, le problème est que si vous modifiez la géométrie dans le calque cloné, le calque d'origine sera affecté: la raison en est que la source de données est le même pour le calque d'origine et le calque cloné.
la source