QGIS-Tipp: Flussbreiten ermitteln, aber wie?

Bitte beachtet auch das Update zu diesem Beitrag [5].

Vor kurzem gab es in den Kommentaren des Beitrages “QGIS-Tipp: Länge und Breite eines Polygons?” [1] die Frage nach der Ermittlung von Flussbreiten. Angepingt durch diese Frage habe ich mich mal mit einer Lösung beschäftigt und bin in [2] und [3] fündig geworden, um dann gleich mal folgendes Kochbuch für QGIS am Beispiel der Saale in Halle (Saale) zu schreiben:

Schritt 1: Die nötigen Ausgangsdaten besorgen, hier die Uferlinien (entnommen aus der Digitalen Stadtgrundkarte der Stadt Halle) und Fluss-Geometrien (entnommen aus den OSM-Daten mittels Overpass Turbo Export gesucht nach “river”) – diese werden als annähernde Mittellinien des Flusses angenommen. Es muss übrigens nicht die exakte Mittellinie sein, aber, je mittiger, desto besser, weil der rechte Winkel zum Ufer insbesondere in Kurven besser erreicht wird.

Schritt 2: Flussmitte “Auflösen” (dissolve), um einen durchgehenden Linienzug zu generieren und somit nur einen Start-Punkt für die Stützstellen-Interpolation in Schritt 4 zu haben

Schritt 3: Glätten Flussmitte-Mittellinie mit der Funktion “Glatt” (smooth), ich habe mit vier Iterationen getestet

Schritt 4: Punkte alle 100m auf Mittellinie mittels “Punkte entlang einer Geometrie” erzeugen

Schritt 5: Senkrechte Geometrien auf Punkten berechnen mittels “Geometrie nach Ausdruck” mit einer Weite, die größer als angenommene maximale Breite (hier 80m) ist, hier mit dem Ausdruck aus [3].

extend(
   make_line(
      $geometry,
       project (
          $geometry, 
          80, 
          radians("angle"-90))
        ),
   80,
   0
)

Schritt 6: “Zuschneiden” an Ufergrenzen (Clip) und
Schritt 7: Symbolisieren mit Pfeilen und Bemaßung

Optional dann Schritt 8: Freuen, nach Verbesserungen suchen und ggf. ein QGIS-Model draus machen oder am Besten einfach mal ein vollkommen dynamisches Modell mit dem Geometrie-Generator erzeugen, also quasi OnTheFly-Generieren ohne Zwischenthemen? Und vielleicht kann man noch nach [4] die Mittellinie des Flusses optimieren? Ich werde es testen.

Und weiter geht es noch mit der Analyse, hier die breiteste Stelle der Saale in Halle am Wehr in Trotha:

. . . und die Prüfung der Ergebnisse mit dem Messwerkzeug – sogar an den Inseln funktioniert es perfekt. Hier gerundete 32m + 57m = 89m:

Und hier das Ganze noch mal als Galerie zum Blättern:

Mein Projekt als Demo “QGIS_WidthOfTheRiver.zip” zum Download (17,1 MByte)

[1] … https://geoobserver.de/2023/03/24/qgis-tipp-lange-und-breite-eines-polygons/#comments
[2] … https://gis.stackexchange.com/questions/425459/calculating-width-of-unusually-shaped-polygon-in-qgis
[3] … https://gis.stackexchange.com/questions/380361/creating-perpendicular-lines-on-line-using-qgis
[4] … https://geoobserver.de/2021/09/22/qgis-tipp-mittellinie-zwischen-zwei-anderen-linien/
[5] … https://geoobserver.de/2023/03/30/qgis-tipp-flussbreiten-ermitteln-aber-wie-update/

4 Gedanken zu „QGIS-Tipp: Flussbreiten ermitteln, aber wie?

  1. Schöne Lösung. In einem nächsten Schritt sollte es doch möglich sein, die Geraden mit einem Stützpunkt in 2 gleiche Teile zu unterteilen und darüber die exakte Flußmittelline zu bilden. Die könnte man ja wieder zurück an OSM liefern…

  2. Ich schau mir das vielleicht später mal an, nur ganz kurz ein Einwurf zur Beachtung bevor du/ihr weitermacht: es gibt je nach Wasserstand natürlich unterschiedliche Uferlinien. Die in topographischen Karten verwendete Uferlinie ist wohl in den meisten Fällen die des Mittelwassers, aber ich würde nicht unbedingt darauf wetten, dass dies Bundesweit oder auch nur innerhalb eines Bundeslandes einheitlich gehandhabt wird.
    (Hochwasserschutz ist Ländersache, und auch wenn das alles via LAWA abgestimmt wird schließe ich nicht aus, dass es da aus $Gründen Extrawürste gibt…)

    Jedenfalls sind oft langjährige Mittel entscheidend, daher ist alles, was aus Bildern (also als snapshot) abgeleitet wurde mit erheblicher Vorsicht zu betrachten.

  3. Pingback: QGIS-Tipp: Flussbreiten ermitteln, aber wie? Update. | #geoObserver

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert