QGIS-Tipp: File-Management

Manchmal sind es die ganz kleinen Dinge, die einem das GIS-Leben erleichtern können. Und diesmal habe ich es im QGIS-Plugin „File-Management“ [1] gefunden. Das lästige Umbenennen von Shapefiles via Export-Funktion oder 5…7 Dateien mit dem jeweils neuem gleichen Namen zu versehen war gestern, jedenfalls im QGIS. Einfach rechte Maustaste um Kontextmenü nutzen, Layer umbenennen und schon wird dieser auch auch im Quelldateisystem umbenannt. Klasse und Danke!

Screenshot: QGIS-FileManger-Plugin im Kontextmenü des Themas

[1] … https://plugins.qgis.org/plugins/file_management/

QGIS-Tipp: Automatisches Karten-Update in Word & LibreOfficeWriter

Screenshot: Eingebettete QGIS-Karten im Word (Quelle [1])

Stellt Euch vor, Ihr habt die Ergebnisse Eurer Geoarbeiten im QGIS als Karten in Word- und/oder LibreOffice-Dokumenten eingebettet und nun ändern sich jedoch die Inhalte. Es müssten demzufolge alle Eure Karten in allen Dokumenten aktualisiert werden, aber bitte nicht per Hand, sondern automatisch. Im folgenden Youtube-Video “Link to and autoupdate QGIS maps in a Word document” [1] findet Ihr den Workflow dazu. Der Tipp von Anita Graser (@underdarkGIS) [2], Danke!

[1] … https://www.youtube.com/watch?v=C8UoyT15xY8
[2] … https://fosstodon.org/@underdarkGIS/110100655532812025

QGIS-Tipp: Flussbreiten ermitteln, aber wie? Update.

Nach dem erstaunlichen Echo* auf meinen vorgestrigen Beitrag “QGIS-Tipp: Flussbreiten ermitteln, aber wie?” [1] hier nun noch die angekündigte Ergänzung. Am eigentlichen Algorithmus ändert sich gar nichts, der bleibt wie beschrieben. Um jedoch noch bessere Ergebnisse zu erhalten, macht es Sinn, sich noch mal die Generierung des Fluss-Mittellinie genauer anzuschauen. Ziel war es, bessere Mittellinien zu erzeugen, also am besten aus den Uferlinien direkt und nicht aus einem Datenbestand anderer Herkunft und Erfassungsgenauigkeit. Die gesuchte Funktion ist die “Centerline”. Ich habe etliche Funktionen in verschiedenen Plugins getestet, die meisten schlugen aber leider fehl, ob es an mir lag oder meinen Daten …, ich weiß nicht. Erfolg hatte ich mit der “Skeleton”-Funktion im Plugin “BecaGIS” [2] angewendet auf das Gewässer-Polygon. Kleine “Faserstücke” an den Rändern wurden mittels Selektion (z. B. $length < 40 eleminiert). Die Erzeugung dieser Mittellinie ist dem Schritt 1 zuzuordnen.

Die so verbesserte Mittellinie führt marginal zu besseren Ergebnissen, die Senkrechten auf der Mittellinie stehen mitunter etwas rechtwinkliger zu den Uferlinien (vgl. Screenshot 6).

Screenshot 1: Berechnung der Mittellinie mit der “Skeleton”-Funktion. Die kleinen “Faserstücke” (Gelb) an den Rändern wurden mittels Selektion (z. B. $length < 40 eleminiert). Übrig blieb die neue Mittellinie (Rot)
Screenshot 2: Unterschiedliche Fluss-Mittellinien aus OSM (Blau) und berechnet aus den Ufergrenzen mit der “Skeleton”-Funktion (Grün)
Screenshot 3: Ergebnis für die OSM-Variante (Blau)
Screenshot 4: Ergebnis für die “Skeleton”-Variante (Grün)
Screenshot 5: Ergebnisse für beide Varianten OSM-(Blau) und “Skeleton” (Grün) mit marginal besseren Ergebnissen bei “Skeleton”
Screenshot 6: Die Senkrechten auf der Mittellinie stehen bei “Skeleton” (Grün) etwas rechtwinkliger zu den Uferlinien

Hinweis:
Ein wichtiger Tipp nach der Verlässlichkeit der Uferlinien wurde noch in Kommentar 3 in [1] gegeben, also welchen Ursprung haben diese und was verbirgt sich wirklich dahinter. Ist es das mittlere Wasser, quasi der Durchschnitt z. B. im Jahr oder das Ergebnis einer Vermessung zu einem zufälligem Datum oder …

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

* … innerhalb von ca. 48h:
– im Twitter ca. 9453Aufrufe, 28 Retweets, 146 Likes, 30 neue Follower 🙂
– FaceBook: 166 Likes, 50x geteilt

[1] … https://geoobserver.de/2023/03/27/qgis-tipp-flussbreiten-ermitteln-aber-wie/
[2] … https://plugins.qgis.org/plugins/becagis/

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/

QGIS-Tipp: Länge und Breite eines Polygons?

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

#piDay2023: Pi in QGIS

Bildquelle: WIkipedia [5]

Ich bin sicher, Ihr habt es nicht vergessen, heute ist der 14.03., in amerikanischer Datumsschreibweise 3/14: Pi-Day! Mehr dazu auf piday.org [1] und Wikipedia [2], [3]. Im QGIS habt Ihr natürlich auch Zugriff auf Pi via “pi()”:

Screenshot: Pi-Nutzung im QGIS am Beispiel der Locator Bar

Zur Feier des Tages, hier meine Pi-Lieblingsanimation [4].

[1] … https://www.piday.org/
[2] … https://de.wikipedia.org/wiki/Pi-Tag
[3] … https://de.wikipedia.org/wiki/Kreiszahl
[4] … https://twitter.com/TedG/status/1632431034410348544?s=20
[5] … https://de.wikipedia.org/wiki/Kreiszahl#/media/Datei:01_Kreiszahl.svg

QGIS-Tipp: DotMaps – Punktdichtekarten 2 – @Youtube

Er hat es schon wieder getan! 😉 Nachdem ich der letzten Woche unter “QGIS-Tipp: DotMaps – Punktdichtekarten” [1] über das „Dot Map“-Plugin für QGIS berichtet habe, hat PyQGIS alias Ivo Partschefeld  (@PyQgis) am gleichen Tag ein Youtube-Video “Einwohnerdichte als Punktdichtekarte von Sachsen mit QGIS darstellen. Plugin Dot Map” [2] dazu gemacht, natürlich mit Daten aus seiner sächsischen Heimat. Also, wie immer alles Schritt für Schritt erklärt, interessant, kurz(weilig), treffend, anschaulich, empfehlenswert. Danke Ivo! So muss Netzwerken!

[1] … https://geoobserver.de/2023/03/02/qgis-tipp-dotmaps-punktdichtekarten/
[2] … https://www.youtube.com/watch?v=5y0YRydXx58

QGIS 3.30 – Visual Changelog online!

Für den 03.03.2023 ist laut QGIS-Roadmap [1] die Version 3.30 angekündigt. Wer sich schon jetzt über die neuen Funktionen von QGIS 3.30 informieren will, auf Youtube findet Ihr eine Zusammenfassung im „QGIS 3.30 Visual Changelog“ [2]. Viele coole Neuerungen, nach dem ersten Anschauen bin ich noch nicht ganz sicher, welche Funktion mein Favorit ist, ich werde es wohl noch einige Male anschauen 😉
Detaillierte Infos zum QGIS 3.30-Changelog in Schriftform findet Ihr hier [3].

[1] … https://qgis.org/de/site/getinvolved/development/roadmap.html
[2] … https://www.youtube.com/watch?v=q7O819lFKc4
[3] … https://changelog.qgis.org/en/qgis/version/3.30/

OpenAerialMap: Freie UAV-Luftbilder

Die freie OpenAerialMap alias OAM [1] hat es sich zum Ziel gemacht, eine Plattform für alles rund um freie UAV [2]-Luftbilder anzubieten. Mitnutzen und Mitmachen* sind gefragt! Bei OAM heisst es in “Über”[3]:

“OpenAerialMap (OAM) ist eine Reihe von Tools zum Suchen, Freigeben und Verwenden von frei lizenzierten Satelliten- und unbemannten Luftfahrzeugen (UAV)-Bildern.
OAM baut auf dem Open Imagery Network (OIN) auf und ist ein offener Dienst, der die Suche und den Zugriff auf diese Bilder ermöglicht.” [3]

Eine kurze Einführung gibt Euch folgendes Youtube-Video [4]:

Im mitteldeutschen Raum [5] ist die Bildanzahl noch übersichtlich, in Leipzig habe ich zwei Standorte gefunden: in Möckern [6], bei Dr. Schreber e.V. [7].

Für QGIS gibt es ein experimentelles Plugin “Open Aerial Map (OAM) for QGIS3, Express Edition” [8], bei mir funktionierte es allerdings auf zwei Rechnern erst einmal nicht, ich suche noch nach der Ursache 😉

* … Wichtiger Hinweis (eines drohnenfliegenden Fachkollegen):
Vor Veröffentlichung sind die rechtlichen Rahmenbedingungen zu prüfen!
[9]

[1] … https://map.openaerialmap.org/
[2] … https://de.wikipedia.org/wiki/Unbemanntes_Luftfahrzeug
[3] … http://openaerialmap.org/about/
[4] … https://www.youtube.com/watch?v=7xvo5ilpGXU&t=3s
[5] … https://map.openaerialmap.org/#/10.9918212890625,51.47111882613948,7?_k=8md82q
[6] … https://map.openaerialmap.org/#/12.35461413860321,51.371381865148635, 17/square/1202120213003/5d6d91004a5acb00067109e1?_k=s3twm5
[7] … https://map.openaerialmap.org/#/12.357717454433441,51.34030576867116, 18/square/120212021302100/5d6ad8812103c90007707fb1?_k=ol10v8
[8] … https://plugins.qgis.org/plugins/oam_qgis3_express/
[9] … https://www.luftaufnahmen-deutschland.de/luftaufnahmen-eine-sache-fuer-den-profi/

QGIS-Tipp: DotMaps – Punktdichtekarten

Animation: Einwohnerdaten im QGIS als Choropleten und DotMaps mit 10 und 100 Elementen pro Punkt

Für die speziell Symbolisierungsart der Punktdichtekarten (DotMaps) gibt es im QGIS ein Plugin “Dot Map” [1], in der Beschreibung des Plugins heißt es:

“Eine Punktdichtekarte ist eine Art von thematischer Karte, die Punkte oder andere Symbole auf der Karte verwendet, um die Werte eines oder mehrerer numerischer Datenfelder darzustellen. Jeder Punkt auf einer Punktdichtekarte repräsentiert eine bestimmte Menge an Daten. QGIS hat keine Symbologie für diese Art von Daten. Aus diesem Grund kann dieses Plugin einen Punktdichte-Layer aus einem Polygon-Layer mit einem Integer-Feld mit den Daten erstellen, die der Benutzer in Punkte umwandeln möchte.” [1].

Ich habe dieses Plugin mal kurz mit Einwohnerdaten aus dem Open Data Portal der Stadt Halle (Saale) [2] mit 10 und 100 Elementen pro Punkt getestet, hier die Ergebnisse:

Noch weiter gehen die DotGridMaps, Details dazu findet Ihr in [3] und [4].

Alternativ kann in QGIS ab 3.16 auch die eingebaute Funktion “Vektor / Forschungswerkzeuge / Zufällige Punkte in Polygonen…” genutzt werden, vgl. auch “Making a Dot Density Map in QGIS” [5]. Mir scheint das o. g. Plugin jedoch einfach in der Bedienung.

[1] … https://plugins.qgis.org/plugins/DotMap/
[2] … https://www.halle.de/de/Verwaltung/Online-Angebote/Offene-Verwaltungsdaten/Mit-Kartenbezug/index.aspx?ID=fb7c7826-c2e1-82f9-395c-bf3c65da4786
[3] … https://www.maproomblog.com/2023/02/in-praise-of-dot-grid-maps/
[4] … https://medium.com/earthrisemedia/we-need-more-dot-grid-maps-7e4374f79acd
[5] … https://www.youtube.com/watch?v=UlG9kwsbnQQ