Eu tenho uma camada no QGIS e quero duplicá-la por meio de um plug-in para poder usar a cópia conforme desejar, sem modificar o original.
É claro layer2 = layer1
que não funcionará, porque tudo o que acontece com a camada2 também acontecerá com a camada1, pois é o mesmo objeto por trás de tudo isso.
A única maneira de encontrar isso é:
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 uma maneira simples de duplicar a camada na memória, sem precisar escrever um novo arquivo?
pyqgis
memory
duplication
Ril8772
fonte
fonte
No QGIS 3, você pode fazer uma cópia de uma camada sem salvar nenhuma referência à camada pai desta maneira:
A classe QgsVectorLayer possui uma função clone () que permite clonar a camada em uma nova camada, o problema é que, se você modificar a geometria na camada clonada, a camada original será afetada: a razão disso é que a fonte de dados é o mesmo para a camada original e a camada clonada.
fonte