Bagaimana saya bisa menduplikasi layer di QGIS?

9

Saya ingin menampilkan data vektor yang sama dengan cara yang berbeda dengan lapisan yang berbeda. Meskipun sangat mudah untuk dapat menyalin dan menempelkan gaya layer di 1.8+, akan lebih baik untuk dapat memilih layer dan klik kanan untuk menyalin atau menggandakannya secara langsung.

Adakah cara mudah untuk melakukan ini, seperti perintah Python?


Pembaruan: Saran @ dakcarto berfungsi dengan baik. Karena saya perlu menambahkan banyak layer duplikat, saya mengadaptasinya ke loop sebanyak yang diperlukan:

for n in range(1,5): 
    iface = qgis.utils.iface; vl = iface.activeLayer(); iface.addVectorLayer(vl.source(), vl.name() + "_clone" + str(n), vl.providerType())

Satu-satunya masalah adalah bahwa layer baru menjadi activeLayer, sehingga ia menambahkan "_clone" dan nomor ke nama sebelumnya, berakhir dengan example_clone1, example_clone1_clone2, hingga example_clone1_clone2_clone3_clone4_clone5. Perlu mencari cara menduplikasi dari lapisan yang dipilih sebelumnya, sekarang.

Simbamangu
sumber
Ini sebenarnya bukan jawaban, tetapi QGIS tidak keberatan jika Anda menambahkan layer vektor yang sama ke proyek dua kali.
L_Holcombe
ya, saya telah menambahkan banyak duplikat nanti, tetapi hanya dengan "tambahkan layer" dan browsing untuk memilih layer setiap kali. Minimal 4 klik dan beberapa gulir, yang melelahkan dengan kebutuhan untuk menduplikasi layer 20 kali.
Simbamangu
1
@Simbamangu Ada pandangan berbeda tentang ini, saya pergi melalui GIS wiki. Saya sangat menghargai pandangan Anda, izinkan saya berbagi milik saya. Saya menganggap judul pertanyaan sebagai arahan tentang inti pertanyaan. Karena ini semua soal pertanyaan, maka intro "Bagaimana saya ...", "Kenapa begitu ..." tidak ada yang baru karena sudah jelas bahwa ini adalah pertanyaan. Mungkin membuat pertanyaan lebih mudah dibaca, tetapi bagaimanapun Anda harus melihat isi pertanyaan untuk melihat tentang apa itu. Untuk melihat seluruh halaman pertanyaan yang dimulai dengan "Bagaimana saya ..." setidaknya bagi saya tidak produktif.
TomazicM
1
Dan alasan saya mengubah judul pertanyaan lama Anda? Itu muncul di beranda GIS karena tindakan somebodys dan saya akui memiliki kebiasaan (buruk) menghilangkan bagian "Bagaimana" dan "Mengapa" pertanyaan.
TomazicM
1
@Simbamangu Saya pribadi lebih suka pertanyaan tanpa "Bagaimana" dan "Mengapa" karena kata-kata ini tidak menambahkan apa pun ke konten. Mereka mungkin membuat judul lebih mudah dibaca, tetapi saya tidak melihat masalah jika judul agak ambigu, karena kita harus tetap membaca badan pertanyaan untuk melihat apa itu semua. Dan saya akui bahwa saya mulai menghapus kata-kata itu setelah saya melihat PolyGeo melakukannya dan kemudian membaca beberapa artikel meta tentang praktik yang baik ketika memposting / mengedit pertanyaan.
TomazicM

Jawaban:

10

Ada dua permintaan fitur tentang ini ( # 5899 dan # 1483 ). Ini tentu saja merupakan fitur yang bisa dilakukan, dan kemungkinan bisa dimasukkan dalam versi 2.0, jika pengembang tertarik untuk menambahkannya; atau, pengembang plugin Python memberikan beberapa pertimbangan.

Masalah # 5899 juga mencakup beberapa kode Python untuk menduplikasi layer (diajukan oleh pengembang Giuseppe Sucameli):

Sementara itu, pilih layer vektor lalu buka konsol python QGis dan jalankan:

iface = qgis.utils.iface; vl = iface.activeLayer(); iface.addVectorLayer(vl.source(), vl.name() + "_clone", vl.providerType())

Kode sebelumnya menambahkan sublayer ke peta yang sama.

Sulit untuk melakukannya menggunakan skrip python satu baris seperti yang sebelumnya, tetapi jika Anda tahu nama sublayer, Anda bisa menggantinya vl.source()dengan vl.source().split("|")[0] + "|layername=my_sublayer_name"mana my_sublayer_name adalah nama sublayer Anda.

Itu muncul setelah menjalankan kode duplikasi, Anda harus menyalin / menempelkan gaya lapisan asli.

dakcarto
sumber
Bekerja dengan sempurna. Dengan menambahkan 'v' sebagai kunci untuk menempelkan gaya lapisan, duplikasi lapisan dan gaya hanya memerlukan beberapa detik sekarang.
Simbamangu
Fitur ini diimplementasikan dalam revisi c11df1aa79. hub.qgis.org/projects/quantum-gis/repository/revisions/…
Vladimir
2
Pengikatan Python untuk komit ke cabang master bekerja seperti ini: di iface.setActiveLayer( my_layer );iface.actionDuplicateLayer().trigger()mana my_layer adalah QgsMapLayer yang disetel ke lapisan aktif yang dipilih dalam legenda; kemudian, actionDuplicateLayer () dipicu untuk bekerja pada lapisan yang dipilih dalam legenda (default-nya).
dakcarto
1

Versi terbaru QGIS sekarang memiliki opsi "Duplicate Layer". Klik kanan layer yang ingin Anda duplikat, dan itu akan memasukkan salinan baru tepat di bawah.

Catatan: Tampaknya Anda perlu menekan View --> Refreshuntuk perubahan yang dibuat di satu lapisan untuk menyebar ke yang berikutnya.

pengguna94812
sumber