Implementierung des D8 -Algorithmus, eines Seeidentifikations- und Flussalgorithmus mit Python und Matplotlib.
Dieser Code implementiert einen Flussalgorithmus mit DEM- und Niederschlagsdaten. Es identifiziert und füllt Pitblags / Seen weiter und entwickelt einen Entwässerungsalgorithmus unter Verwendung eines Gravitationsmodells zum Ausfluss des Sees. Weitere Informationen und Pseudo-Code des Entwässerungsalgorithmus finden Sie unter: www.geo-blog.com/lake-flow-algorithmus
Der Code ist in vier verschiedene Aufgaben unterteilt (siehe Kommentare in Treiber.py).
Das Ausgangsdiagramm "Netzwerkstruktur - Vor den Seen" zeigt eine Durchflussnetzwerkstruktur vor dem Entfernen von Pitflags (die Netzwerke sind nicht angeschlossen).

Der Hintergrund in dieser Figur repräsentiert die Höhe, wobei gelbe Farben höhere Rasterzellen und blaue Farben darstellen, was auf niedrige Rasterzellen hinweist. Die Linien repräsentieren die Flussrichtung. Die Durchflussrichtung wird mit dem von O'Callaghan & Mark (1984) eingeführten Standard -Algorithmus D8 berechnet, der die 8 Nachbarzellen untersucht und die Flussrichtung auf den niedrigsten Nachbarn setzt (siehe auch setdownnode () -Methode der Flowraster -Klasse in Flow.py). Wenn keine benachbarte Zelle niedriger als die Zelle selbst ist, ist sie in Abbildung 1 mit einem roten Punkt markiert, der eine „Pitflag“ darstellt. Pitblags sind Rasterzellen, die keinen Downnode haben, dh das Wasser kann in keiner anderen Zelle aus dieser Zelle fließen.
Aufgabe 2 berechnet die Durchflussraten (unter der Annahme konstanter Niederschläge) unter Verwendung der Netzwerkstruktur aus Aufgabe 1. Die Durchflussraten werden in der rekursiven Funktion getflow () berechnet. Beachten Sie, dass Wasser in einem See / Pitblag zu verschwinden scheint, da die Netzwerke noch nicht verbunden sind.

Diese Abbildung zeigt die Flussflussraten mit konstantem Regen (1 mm pro Zelle). Gelbe Werte zeigen eine hohe Durchflussrate an, während die blauen Werte eine niedrige Durchflussrate anzeigen.
Aufgabe 3 wiederholt Aufgabe 2 mit nicht konstanten Niederschlägen (zufällig erzeugt)
Aufgabe 4 macht das hydrologische Modell realistischer, indem sie sich den Einzugsgebieten verbindet. Dazu werden Waschbecken und Seen identifiziert und Abflüsse der Seen berechnet. Dies wurde in drei Schritten durchgeführt. Erstens werden die Seen durch einen Algorithmus identifiziert, der mit jeder Pitflag beginnt und einen Pfad zu einer Kante erzeugt, wobei immer der niedrigste Nachbarn ausgewählt wird (ähnlich dem D8 -Algorithmus). Der höchste Punkt dieses Weges repräsentiert den Abfluss des Sees. In einem zweiten Schritt sind die identifizierten Seen bis zu dem Abfluss bis zu der gleichen Höhe gefüllt. Drittens wird für jeden See ein neuer Fluss mit Gravitation zum Seeabfluss berechnet.
Um den implementierten Algorithmus zu testen, wurden die eingehenden Niederschläge und der summierte Fluss bei Pitflags an einer Kante verglichen. Die beiden Werte mussten gleich sein.
Algorithmus zur Berechnung des Flusses mit Gravitation zum Seeabfluss.



Für Aufgabe 5 reale Rasterdaten (Niederschlag und DEM) werden importiert und in die gleiche Auflösung umgewandelt.
