Saya memiliki layer di QGIS, dan saya ingin menduplikasinya melalui plugin sehingga saya dapat menggunakan salinannya seperti yang saya inginkan, tanpa memodifikasi yang asli.
Tentu saja layer2 = layer1
tidak akan berfungsi, karena semua yang terjadi pada layer2 juga akan terjadi pada layer1, karena itu adalah objek yang sama di belakang semua ini.
Satu-satunya cara saya menemukannya adalah:
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
Apakah ada cara sederhana untuk menduplikasi layer dalam memori, tanpa harus menulis file baru?
sumber
Di QGIS 3 Anda dapat membuat salinan sebuah layer tanpa menyimpan referensi apa pun ke layer induk dengan cara ini:
Kelas QgsVectorLayer memiliki fungsi clone () yang memungkinkan Anda untuk mengkloning layer pada layer baru, masalahnya adalah jika Anda memodifikasi geometri pada layer yang dikloning, layer asli akan terpengaruh: alasannya adalah karena sumber data adalah sama untuk lapisan asli dan lapisan yang dikloning.
sumber