Saya mengalami kesulitan mencari tahu cara beralih di atas lapisan peta. Saya dapat mengakses lapisan yang saat ini disorot dalam daftar isi melalui iface.activeLayer()
tetapi saya ingin kode saya beroperasi di semua lapisan.
Saya tidak melihat apa pun di API yang menyediakan akses mudah ke fungsi ini dan tidak bisa menemukan contoh online yang bagus tapi mungkin saya melewatkan sesuatu?
Jawaban:
Mencoba...
Dipilih dari konsolidatethread.py dari plugin QConsolidate .
Deskripsi objek QgsLegendInterface dikembalikan dari legendInterface ().
Edit : menambahkan info tentang 'diri' di atas.
sumber
Ada juga dua cara lain:
akan memberi Anda daftar lapisan
atau
sumber
2.16
dan di atasUntuk QGIS 2.6 di sini adalah kode untuk mengidentifikasi setiap lapisan dan mengelompokkannya:
Catatan: Setelah pengelompokan saya harus menghapus layer duplikat jadi saya gunakan
root.removeLayer(lyr)
.sumber
Untuk QGIS 3,
QgsMapLayerRegistry
fungsionalitas telah dipindahkan keQgsProject
.Jadi, untuk mengulangi lapisan peta, Anda harus menggunakan struktur itu:
.mapLayers()
mengembalikan kamus yang terstruktur sebagai{layer_x_id: layer_x, layer_y_id: layer_y, ....}
. Kemudian Anda dapat beralih di atas lapisan seperti:Karena
.mapLayers()
mengembalikan kamus (dict
), Anda juga dapat menggunakan.values()
metode kamus yang mengembalikan hanyalist
yang berisi lapisan dalam kasus itu. Kemudian Anda dapat beralih di atas lapisan seperti:Jika Anda suka, Anda dapat menggunakannya dengan cara ini:
sumber
for layer in layers: print(layer)
Anda dapat menggunakan skrip untuk mencetak kunci. Atau cukup gunakanprint(layers.keys())
tanpafor
loop.