QGIS-Tipp: Geometriegenerator

Vorgestern gab es via bei Twitter folgende Anfrage: „Ich möchte mithilfe des Geometriegenerators den Zentroid eines aus einem Punktdatensatz (7 Punkte) erstellten Polygon mit einem noch nicht definierten Abstand puffern und dies als „Lage im Raum“ darstellen.“ [1]. Wie man das mit „normalen“ Geoprocessing-Funktionen des QGIS lösen kann, eher kein Problem, aber dann entstehen ggf. immer wieder zusätzliche Layer. Die Forderung war ja, es mit dem Geometrie-Generator zu lösen. Unser Interesse war geweckt, wir wollten es wissen. Eigentlich auch nicht schwierig, nur konnte ich QGIS erstmal nicht überreden, die Punkte als gemeinsame Geometrie zu betrachten, QGIS wollte das immer für jeden Punkt einzeln tun. Die entscheidende Idee hatte dann mein Kollege mit „arrray_foreach“ und „aggregate“, der Rest drum herum war ja schon fertig.

Wer den Code verbessern möchte, gern hier als Kommentar. Wir sind gespannt!

Mehrere Punkte hinzufügen und löschen, Konvexe Hülle, deren Centroid und der Buffer um diesen passen sich an

Unser Code:

buffer(centroid(
convex_hull(
make_line(
array_foreach( aggregate( @layer_name, 'array_agg', $id),
geometry( get_feature_by_id( @layer_name, @element))
)
)
)
),50
)

Projekt und Testdaten stehen Euch zur Nachnutzung als Download zur Verfügung [2].

Ansicht im QGIS 3.20 @Mac.

[1] … https://twitter.com/alwazi88/status/1435168461823619078?s=20
[2] … http://www.geoobserver.de/Download/qgis_geometrygenerator_points_ line_convexhull_centroid_buffer.zip

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s