Bagaimana cara membuat layer atau grup tidak terlihat di Panel Layers?

13

Saya memiliki sejumlah lapisan di Panel Layers di dalam grup tetapi saya tidak ingin mereka ditampilkan (ada cukup banyak sehingga terlihat berantakan). Lapisan-lapisan ini juga bergabung dengan beberapa orang lain.

Apakah mungkin untuk membuat layer ini tidak terlihat oleh pengguna ( yaitu tidak ditampilkan di Panel Layers, ini bukan tentang pengaturan visibilitas layer ) tetapi masih dapat bergabung dengan layer lain? Atau mungkin membuat grup tidak terlihat?

Yang paling dekat yang saya temukan adalah pos ini tetapi berharap ada pendekatan yang lebih langsung:

Hanya menampilkan beberapa lapisan dalam legenda QGIS?

Yusuf
sumber

Jawaban:

15

Saya menemukan membuat lapisan / kelompok 'tidak terlihat' berguna untuk menghindari menampilkan tabel pencarian, yang diperlukan untuk hubungan nilai tetapi mungkin membuat Panel Layers terlihat sedikit kelebihan beban.

Hanya untuk memperjelas, lapisan / grup yang tidak terlihat tidak akan muncul di Panel Layers, tetapi mereka masih dapat dilihat di kanvas atau digunakan dalam gabungan / hubungan dengan lapisan lain.


MENJAWAB:

Gunakan plugin Lapisan dan grup tak terlihat , yang memungkinkan Anda untuk:

  • Buat layer / grup yang dipilih tidak terlihat (tombol plugin).
  • Buat layer / grup (yang tidak terlihat) terlihat lagi (tombol plugin).
  • Simpan visibilitas lapisan / grup dalam proyek QGIS Anda.
  • Buat visibilitas lapisan / grup saat membuka proyek QGIS Anda.
  • Buat layer tertentu tidak terlihat (dengan kode).
  • Buat grup tertentu tidak terlihat (dengan kode).

Membuat layer tidak terlihat (dengan kode):

if 'InvisibleLayersAndGroups' in qgis.utils.plugins:
    ilg = qgis.utils.plugins['InvisibleLayersAndGroups']
    ilg.hideLayer( layer )    # layer is a QgsMapLayer

Membuat grup tidak terlihat (dengan kode):

if 'InvisibleLayersAndGroups' in qgis.utils.plugins:
    ilg = qgis.utils.plugins['InvisibleLayersAndGroups']
    ilg.hideGroup( group )    # group is a QgsLayerTreeGroup
    ilg.hideGroup( 'group2' ) # You can also pass a group name

Catatan: Ada masalah yang harus Anda ketahui. Jika Anda membuat layer tidak terlihat dan kemudian memindahkan grup induknya, layer tidak terlihat akan terlihat lagi (saya tidak tahu kenapa!). Jadi, rekomendasi saya adalah membuat hanya lapisan / grup teratas tidak terlihat (setelah semua, Anda tidak dapat memindahkan root).

Germán Carrillo
sumber
Persis apa yang saya cari, terima kasih banyak untuk ini! Memang, saya memiliki beberapa layer yang digunakan untuk perhitungan (yang semuanya digabungkan ke layer lain) jadi saya tidak ingin pengguna melihat atau mengedit layer ini. Jadi solusi Anda sangat memecahkan ini. Satu pertanyaan, apakah Anda baru mengimplementasikan ini sebagai plugin baru-baru ini?
Joseph
Benar, sudah diterbitkan beberapa hari yang lalu. Saya bertanya-tanya bagaimana cara menyembunyikan layer sebelumnya, tetapi hanya setelah pertanyaan ini saya melakukan tugas (saya akan membutuhkan ini di tempat kerja cepat atau lambat). Saya berpikir untuk menjawab dengan potongan kode tetapi jawabannya cukup lama untuk menjadi kompleks, jadi saya lebih memilih untuk merangkumnya dalam sebuah plugin, yang jauh lebih mudah digunakan.
Germán Carrillo
Ya itu plugin yang luar biasa, jadi pilih itu :)
Joseph
+1 Plugin yang sangat berguna. Khusus untuk pekerjaan saya, untuk lebih spesifik dalam memetakan data di lapangan dengan Tough Book + QGIS, untuk menghindari Panel Panel yang kelebihan beban (pengguliran membutuhkan waktu di lapangan). Saya punya saran (mungkin untuk memperbaiki plugin Anda (atau tidak)): Bisakah Anda menerapkan plugin mengingat lapisan yang telah Anda tandai sekali dan membuatnya tidak terlihat lagi ketika tombol plugin (membuatnya tidak terlihat) ditekan lagi? Untuk mengatur pilihan lain (layer / grup) tidak terlihat Anda harus memilihnya lagi.
Stefan
Hebat bahwa Anda merasa plugin ini berguna! Terima kasih atas saran Anda, maukah Anda menambahkan Permintaan Fitur baru (masalah) di GitHub ?
Germán Carrillo