Neulich an der GIS-Hotline gab es die Frage, wie man im QGIS Länge und Breite von Polygonen bestimmt. Die Lösung ist recht einfach, ma nutzt die Toolbox-Funktion “Minimaler gerichteter Umgrenzungsrahmen” [1].
Ich hab es mal getestet, hier eine kleine Anleitung inkl. Generierung geeigneter Testdaten:
Schritt 1: Schaffen von Testdaten – Generieren von mehreren zufälligen Punkten über “Vektor / Forschungswerkzeuge / Zufällige Punkte in Grenzen”
Schritt 2: Mittels Feldrechner die Spalten für Breite, Höhe und Drehung erzeugen, bei mit “b”, “h” und “d” und jeweils mit Zufallszahlen befüllen, z. B. bei der Drehungsspalte “d” mit “rand(0,359)”
Schritt 3: Erzeugen der Flächengeometrien mittel der Toolbox-Funktion “Rechtecke, Ovale, Rauten (variabel)”: Ich habe es mal mit “Ovale” probiert unter Nutzung der Spalten “b”, “h” und “d” meiner zufälligen Punkte
Schritt 4: Nutzen der Toolbox-Funktion “Minimaler gerichteter Umgrenzungsrahmen” [1] auf das Thema mit den Ovalen und man erhält im Ergebnis die BoundingBox in der extakten Orientierung
FINALE: Schritt 5 – hier die eigentlich Antwort auf die o. g. Frage nach Länge und Breite des Polygons: Mittels “Vektor / Geometrie-Werkzeuge / Polygone zu Linien…” werde die Umgrenzungsrahmen in Linien umgewandelt und in deren Sachdatentabelle findet man dann Länge und Weite
Ergänzung: Nach dem Kommentar von Matthias habe ich die Umgrenzungsrahmen testweise für alle Gewässer von Halle (Saale) gerechnet und kann keine Fehler feststellen, vgl. folgender Screenshot. Immerhin ist die Saale mit Inseln und Ausbuchtungen wirklich geometrisch recht kompliziert, insgesamt 850 Polygon bei 124099 Nodes:
[1] … https://gis.stackexchange.com/questions/93848/finding-length-and-width-of-polygon-in-qgis
[2]} … https://gis.stackexchange.com/questions/409568/creating-random-polygons-using-qgis
Haben wir mal genutzt um die Ausdehnung von Baumkronen aus einer Klassifikation des Oberflächenmodells/Luftbildes zu berechnen. Geht sehr gut solange es “einfache, eher rundliche oder Rechteckige” Polygone ohne zuviele Kanten sind. Sobald sich die Ausrichtung der Kanten innerhalb des Polygons ändert wird es im Ergebnis Unsinn. Typischerweise Fließgewässer, wo man auch öfter mal die Breite wissen möchte und über das Landschaftsmodell die Polygone bereit stehen. Dort bleibt dann nichts anderes als den Fluß in viele Einzelteile zu zerlegen (z.B. über ein regelmäßiges Raster) und dann je Abschnitt berechnen.
Aber es ist sehr spannend das eine so “einfaches” Problem wie etwa die “breiteste Stelle des Flusses” in der manuellen Bearbeitung niemand ernsthaft hinterfragen würde. Sobald das automatisiert passieren soll merkt man das es ein unbestimmtes Problem ist. Die Software arbeitet dabei genauso iterativ (soweit ich weis) wie wir es tun würden. Also immer schön ausprobieren wo man möglichst Lotrecht zur Gewässermittelachse (die genauso nicht exakt berechnet werden kann) die höchste Breite hat.
Vgl. auch die Ergänzung mit den Gewässern der Stadt Halle (Saale)
>Sobald sich die Ausrichtung der Kanten innerhalb des Polygons
>ändert wird es im Ergebnis Unsinn.
Hast Du mal Beispieldaten? Ich würde das gern mal testen. Danke!
Ist wahrscheinlich nur ein Verständigungsproblem. Ich habe einfach mal ein Stück Fluß nachgezeichnet und das umgebende Rechteck und die Hülle berechnet. Das Ergebnis ist natürlich an sich korrekt. Aber nicht das was erwartet wird (die breite des Flusses). Siehe Grafik:
https://stadtlandnavi.de/images/polygonbreite_beispiel.png
OK: Hier könnte man was finden?
https://gis.stackexchange.com/questions/425459/calculating-width-of-unusually-shaped-polygon-in-qgis
Pingback: QGIS-Tipp: Flussbreiten ermitteln, aber wie? | #geoObserver