Keine Angst vor sperrigen Ausdrücken im QGIS!

Claas Leiner

Playlists: 'fossgis2024' videos starting here / audio

Keine Angst vor Ausdrücken im QGIS!
Live geht es um:
-Case und if für Bedigungen.
-Mit coalesce(), concat() etc. nie mehr über NULL-Werte stolpern.
-Joins mit attribute() und get_feature() simulieren.
-1:N-Beziehungen und räumliche Abfragen mit aggregate() und overlay() umsetzen.
-Was hat es mit diesen Arrays auf sich?.
-Mit with_variable() Ausdrücke lesbar gestalten.
-Geometriefunktionen in Berechnungen integrieren.
-Wie helfen diese merkwürdigen regulären Ausdrücke bei regexp_..()

Für Abfragen und Berechnungen gibt es im QGIS den Ausdruckseditor, der in unterschiedlichen Gestalten an den verschiedensten Stellen den Nutzern zu Diensten ist.

Wer vor 12 Jahren ins QGIS einstieg, dem begenete der Ausdruckseditor als ein übersichtliches Werkzeug, mit dem im Wesentlichen Vergleiche (< > =). Grundrechenarten und Verkettungen möglich waren. Mit like ließen sich schon Platzhalter verwenden und natürlich konnten Flächen und Strecken ermittelt werden. Viel mehr gab es zunächst nicht. Heute soll schon mancher Einsteiger nach dem ersten Anblick der Funktionsvielfalt laut schreiend davon gelaufen sein. Das ist schade, denn der Ausdruckseditor bringt aussergewöhnliche Möglichkeiten mit und ist inzwischen viel mehr als ein Abfrageeditor für den einzelnen Layer.
Thema der Livedemo sind Funktionen, die sehr nützlich sind, deren Einsatzzweck sich aber vielen Anwender/innen nicht sofort erschließt bzw. deren Anwendung als sperrig gilt:

Case und if für bedingte Fragestellungen einsetzen, um
z.B. die Schriftgröße von Ortnamen nach der Einwohnerzahl steuern.

Mit coalesce(), concat() etc. nie mehr über NULL-Werte stolpern.

Auf externe Layer zugreifen:
TabellenJoins mit attribute() und get_feature()simulieren sowie eins zu mehrfach-Beziehungen mit aggregate() auswerten. Dynamische räumliche Abfragen mit aggregate(...intersects($geometry,@parent(geometry) und overlay() verwirklichen. Damit lassen sich z.B. Anzahl und Leistung der Windanlagen aus einem Punktlayer in den Gemeinde-Polygonen dynamisch mitführen, ohne neue Layer über die Geoverarbeitung zu produzieren .

Abfragen mit aggregate() und Overlay() ergeben Felder mit vielen Werten, die Listenfelder oder Arrays.
Was hat es mit diesen Arrays auf sich? Der gezielte Zugriff auf einzelne Werte ist möglich. Mit den zugehörigen Funktionen lässt sich sortieren, auswerten und für jeden einzelnen Wert, wie in einer Schleife, Berechnungen und Abfragen durchführen.

Werden die Ausdrücke zu kompliziert, lassen sich Komplexe Teilausdrücke mit with_variabel() als Variable widerverwenden,so dass auch komplexe Ausdrücke lesbar bleiben.

Mit den Geometriefunktionen beschränkt sich QGIS nicht auf die Flächenberechnung.
Pufferflächen, Verschneidungen und viele andere Geometrieoperationen lassen sich in Berechnungen integrieren.

Die Suchen mit Platzhaltern über den like-Operator und die Auswahl von Teil-Zeichenketten mit substr(), strpos() ist vielen QGIS-Nutzern ein Begriff. Auch der Umgang mit replace() ist weit verbreitet.
Aber was ist, wenn like, replace(), substr() und strpos() nicht ausreichten? Da helfen diese merkwürdigen regulären Ausdrücke, die bei regexp_substr() und regexp_replace() anzuwenden sind.
Damit lassen sich z.B. Straße Hausnummer und Hausnummererweiterung einfach trennen und vieles andere in Textwerten suchen und ersetzen.

Download

Embed

Share:

Tags