Sebagai lanjutan dari pertanyaan ini: Cara menghidupkan / mematikan semua label dari semua lapisan di QGIS , OP menyebutkan dalam komentarnya bahwa dia menggunakan label berbasis aturan. Saya mencoba mencari di internet bagaimana jenis label ini dapat dibaca dan dimodifikasi tetapi hanya berhasil menemukan posting ini dari lutraconsulting :
Untuk memfasilitasi penambahan pelabelan berbasis aturan, beberapa perubahan internal dilakukan pada antarmuka mesin pelabelan QGIS. Pelabelan sekarang didorong oleh kelas baru
QgsLabelingEngineV2
yang mungkin memiliki beberapa penyedia label yang terkait dengannya.
Kedengarannya bagus. Namun, ketika membaca kelas QgsLabelingEngineV2 , disebutkan:
kelas ini belum menjadi bagian dari API publik.
Apakah saat ini dimungkinkan untuk mengontrol pelabelan berbasis aturan menggunakan python?
sumber
Jawaban:
Di bawah ini beberapa bantuan untuk mengatur pelabelan berbasis aturan dari awal dengan QGIS 3 API baru
Sayangnya saya tidak dapat menemukan cara mengulangi aturan yang ada, metode pelabelan () yang tersedia untuk layer vektor mengembalikan objek QgsAbstractVectorLayerLabeling kelas tetapi tampaknya tidak ada cara untuk mendapatkan aturan root ( QgsRuleBasedLabeling ) dari kelas ini, satu-satunya kemungkinan Saya menemukan adalah untuk mendapatkan langsung pengaturan sobat menggunakan id penyedia tetapi saya tidak dapat mengakses ke pohon aturan. Adakah yang punya petunjuk?
EDIT
Sekarang sudah diperbaiki, fungsi pelabelan () mengembalikan QgsRuleBasedLabeling (): https://github.com/qgis/QGIS/commit/4b365a8f47d96b35f7609859e580388927ae0606
sumber
myLayer.triggerRepaint()
untuk menyegarkan lapisan dan memungkinkan label untuk segera ditampilkan setelah menetapkan aturan :)Dari QGIS 3 , ada Kelas QgsRuleBasedLabeling baru yang akan memungkinkan Anda untuk mengontrol pelabelan berbasis aturan menggunakan API baru.
Aturan dapat ditambahkan menggunakan QgsRuleBasedLabeling :: Rule .
( Sayangnya, saya tidak dapat menguji versi 2.99 saat ini. Tetapi saya akan dengan senang hati menerima jawaban jika memberikan contoh yang berfungsi. )
sumber
Inilah yang saya gunakan untuk mengubah ekspresi filter dalam simbologi berbasis aturan di bawah QGIS 2.18, tidak yakin apakah itu yang Anda minta. Referensi API di http://qgis.org/api/2.18/classQgsRuleBasedRendererV2.html
sumber