Ausgehend von dieser Frage: Wie Sie alle Bezeichnungen aller Ebenen in QGIS aktivieren / deaktivieren , erwähnte OP in seinem Kommentar, dass er regelbasierte Bezeichnungen verwendet. Ich habe versucht, online zu suchen, wie diese Arten von Labels gelesen und geändert werden können, habe es aber nur geschafft, diesen Beitrag von lutraconsulting zu finden :
Um das Hinzufügen regelbasierter Beschriftungen zu erleichtern, wurden einige interne Änderungen an der Schnittstelle der QGIS Labelling Engine vorgenommen. Die Kennzeichnung wird nun von der neuen Klasse gesteuert,
QgsLabelingEngineV2
der möglicherweise mehrere Etikettenanbieter zugeordnet sind.
Klingt gut. Beim Durchlesen der QgsLabelingEngineV2-Klasse wird jedoch Folgendes erwähnt:
Diese Klasse ist noch kein Teil der öffentlichen API.
Ist es derzeit möglich, die regelbasierte Beschriftung mit Python zu steuern?
quelle
Antworten:
Nachfolgend finden Sie einige Hilfestellungen zum Einrichten der regelbasierten Beschriftung mit der neuen QGIS 3-API
Leider kann ich nicht herausfinden, wie vorhandene Regeln durchlaufen werden. Die label () -Methode für Vektorebenen gibt ein Objekt der QgsAbstractVectorLayerLabeling- Klasse zurück, aber es scheint, als gäbe es keine Möglichkeit, die Stammregel ( QgsRuleBasedLabeling ) von dieser Klasse zu erhalten. Dies ist die einzige Möglichkeit Ich habe festgestellt, dass es sich um direkte Pal-Einstellungen handelt, bei denen Anbieter-IDs verwendet werden. Ich kann jedoch nicht auf den Regelbaum zugreifen. Hat jemand eine Ahnung?
BEARBEITEN
Es ist jetzt behoben, Labeling () - Funktion gibt ein QgsRuleBasedLabeling () zurück: https://github.com/qgis/QGIS/commit/4b365a8f47d96b35f7609859e580388927ae0606
quelle
myLayer.triggerRepaint()
, um die Ebene zu aktualisieren und zuzulassen, dass die Beschriftungen sofort nach dem Festlegen der Regeln angezeigt werden :)Ab QGIS 3 gibt es eine neue QgsRuleBasedLabeling-Klasse, mit der Sie die regelbasierte Kennzeichnung mithilfe der neuen API steuern können.
Regeln können mit QgsRuleBasedLabeling :: Rule hinzugefügt werden .
( Leider kann ich die 2.99-Version derzeit nicht testen. Ich würde jedoch gerne eine Antwort annehmen, wenn sie ein funktionierendes Beispiel liefert. )
quelle
Dies ist, was ich verwende, um einen Filterausdruck in der regelbasierten Symbologie unter QGIS 2.18 zu ändern, nicht sicher, ob Sie danach fragen. API-Referenz unter http://qgis.org/api/2.18/classQgsRuleBasedRendererV2.html
quelle