Ketika saya memuat banyak layer ke QGIS dari PostGIS, mereka sepertinya memuat dalam urutan abjad terbalik.
Apakah ada alat atau plugin yang memungkinkan Anda dengan cepat mengurutkan QGIS TOC dalam urutan yang berbeda? Misalnya saya dapat memikirkan beberapa opsi yang mungkin diinginkan:
- Urutkan layer berdasarkan geometri, di mana titik berada di atas, lalu garis, polys, & raster.
- Urutkan Layers berdasarkan nama (abjad, abjad terbalik).
- Urutkan terlebih dahulu berdasarkan geometri, lalu berdasarkan nama. Ini akan menjadi kombinasi dari # 1 & # 2. Lapisan poin diurutkan ke atas (sama seperti # 1), tetapi kemudian lapisan poin diurutkan secara alfabet (titik-a, titik-b, titik-c, dll).
Ketika memuat sejumlah besar lapisan, ini akan membantu untuk dengan cepat membangun pemesanan yang tepat untuk produksi peta.
Jawaban:
Ini tampaknya merupakan bug (bahkan di cabang master) saat menggunakan tindakan add layer Add PostGIS Layers ... dan harus dilaporkan pada pelacak bug QGIS . Namun, jika Anda menggunakan browser baru untuk memuat layer PostGIS, mereka tidak akan terbalik. DB Manager yang baru tidak mengizinkan beberapa pilihan tabel, jadi tidak ada masalah di sana (selain kurangnya pilihan ganda).
Ini saat ini dapat dilakukan dengan menggunakan kolom asli atau penyortiran item dari kelas dasar QgsLegend ( QTreeWidget ). Ini akan mengurutkan SEMUA ITEM, baik lapisan dan grup bersama-sama, bukan grup yang dikelompokkan di atas atau di bawah lapisan tingkat atas. Ini juga akan mengurutkan dalam grup. Tidak ada penyortiran seperti ini.
Peringatan : Jika legenda utama juga mengontrol urutan render layer (default), ini akan berfungsi OK. Jika widget dock Order Layer digunakan secara terpisah untuk mengontrol urutan render, maka urutan sortir dalam legenda tidak dihormati dan operasi sortir berikut dapat menyebabkan hasil yang tidak diinginkan (melanjutkan dari atas):
Dari kode ini Anda dapat melihat bahwa daftar Layer Order adalah QListWidget , bukan QTreeWidget, yang berarti pengurutan TIDAK akan memperhitungkan pengelompokan apa pun. Semua lapisan disajikan dalam daftar datar, seolah-olah semuanya adalah tingkat atas. Jadi, setiap lapisan yang saat ini bersarang dalam grup dapat mengurutkan di atas di bawah lapisan tingkat atas, jika Anda menerapkan kode penyortiran di atas ke QListWidget.
Saat ini, menggunakan Python, ada fungsi terbatas untuk memanipulasi QgsLegend. Ada QgsLegendInterface tetapi ini tidak memiliki semua barang yang ada di QgsLegend , QgsLegendLayer , mewarisi QgsLegendItem , atau salah satu dari kelas-kelas lain terkait dengan QgsLegend.
Meskipun, jika Anda memulai dengan proyek bersih, dan tidak keberatan menggunakan grup, berikut ini dimungkinkan (melanjutkan dari blok kode awal):
( Asumsikan tidak ada grup lain. ) Ini akan dijalankan dari konsol (atau skrip ScriptRunner , atau Plugin, atau dimuat ke konsol master baru) setelah lapisan ditambahkan. Ini akan membuat grup dengan nama yang dapat diurutkan, menambahkan layer ke grup yang benar, kemudian mengurutkan semuanya. Peringatan yang sama berlaku, seperti di atas.
Pemeriksaan lebih lanjut untuk indeks grup yang benar akan diperlukan untuk solusi yang lebih kuat ketika menambahkan layer baru ke proyek yang sudah ada dengan layer dan grup yang sudah dimuat.
sumber