Tengo una capa en QGIS, y quiero duplicarla a través de un complemento para poder usar la copia que desee, sin modificar el original.
Por supuesto layer2 = layer1
, no funcionará, porque todo lo que le sucede a la capa2 también le ocurrirá a la capa1, ya que es el mismo objeto detrás de todo esto.
La única forma en que encontré hacerlo es como tal:
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
¿Hay una manera simple de duplicar la capa en la memoria, sin tener que escribir un nuevo archivo?
pyqgis
memory
duplication
Ril8772
fuente
fuente
En QGIS 3 puede hacer una copia de una capa sin guardar ninguna referencia a la capa primaria de esta manera:
La clase QgsVectorLayer tiene una función clone () que le permite clonar la capa en una nueva capa, el problema es que si modifica la geometría en la capa clonada, la capa original se verá afectada: la razón de esto es que la fuente de datos es lo mismo para la capa original y la capa clonada.
fuente