Nach dem Multithreading stehen noch einzelne Funktionsupdates an. Wasserlevel Das initiale Wasserlevel konnte bisher lediglich als fixer Wert vorgegeben werden, welcher für alle Zellen gleich ist. Durch dieses Update kann das Wasserlevel alternativ auch als TIF Datei eingelesen werden, sodass jede Rasterzelle einen individuellen initialen Wasserstand erhalten kann. Somit können ungleichmäßige Belastungen, aber auch zum… Funktionsupdates: Wasserlevel aus tif und Ablauf aus Senken weiterlesen
Autor: Tim Schneider
Verbesserungen unter der Haube
TIF LZW Komprimierung Die Ausgabedateien können viel Speicherplatz einnehmen. Glücklicherweise bietet gdal direkt eine Option, TIF Dateien mit dem verlustfreien LZW Komprimierungsalgorithmus zu komprimieren. Dies ist die neue Standardeinstellung für die TIF Ausgabe: Automatische Threadanzahl Die Anzahl an Threads zur Berechnung kann je nach verfügbarer CPU automatisch gesetzt werden. Die optimale Threadanzahl wurde auf verschiedenen… Verbesserungen unter der Haube weiterlesen
Mehrkernunterstützung
Die Berechnung erfolgt aktuell auf Basis eines einzelnen Arrays je Rechengröße. Für die Berechnung mit mehreren Kernen bietet sich Multithreading an. Es gibt mehrere Frameworks, welche – zum Teil mit unterschiedlichem Fokus – Parallelisierung von Numpy Berechnungen ermöglichen. Numba ist ein guter Kandidat, unterstützt jedoch aktuell keine maskierten Arrays. Dask ist ein ebenfalls sehr interessantes… Mehrkernunterstützung weiterlesen
Feinarbeit und git
Nach Implementierung von irregulären Geometrien über maskierte Numpy arrays stehen einige Pflegearbeiten an. Die Variablenbezeichnungen sind uneinheitlich, zudem fehlen Kommentare und doctrings zur Dokumentation der Funktionen. Der Code enthält zu diesem Zeitpunkt drei Dateien: main.py: die Hauptdatei für die Basiskonfiguration manager.py: für Datei Ein- und Ausgabe, sowie zur Steuerung des Iterationsverlaufs model.py: Das Modell. Der… Feinarbeit und git weiterlesen
Irreguläre Einzugsgebiete
In der jetzigen Entwicklungsstufe berechnet die Software nur rechteckige Gebiete, in welchen jede Rasterzelle berechnungsrelevant ist. Für reale Anwendungen müssen jedoch beliebige Einzugsgebiete berechnet werden können. Die einfachste Methode hierfür ist die Nutzung von maskierten Numpy arrays über numpy.masked. Zusätzlich zu den Daten enthalten diese Arrays eine „Maske“, welche definiert, ob eine Zelle betrachtet werden… Irreguläre Einzugsgebiete weiterlesen
Ein Abbruchkriterium muss her
Der Prototyp der Software iteriert und erzeugt in einem Testgebiet die gewünschten Ausgabedateien für Wassertiefe und Abflussakkumulation, jedoch läuft der Algorithmus aktuell noch so lange weiter, bis er manuell unterbrochen wird. Da nur Iterationsschritte und keine Zeitschritte betrachtet werden, gibt es keinen definierten Abbruch. Für eine effiziente Nutzung müssen Kriterien definiert werden, bei welchen Ausgabedateien… Ein Abbruchkriterium muss her weiterlesen
Start der Entwicklung
Die Idee für SplashTool stand im Raum, ebenso die wesentlichen Bibliotheken für die Umsetzung. Das Projekt soll in der Programmiersprache Python umgesetzt werden. Diese bietet über zahlreiche Bibliotheken Funktionen zur effizienten Umsetzung. Als Standardskriptsprache sowohl in QGIS als auch in ArcGIS ist sie zudem im Bereich Starkregenanalysen weit verbreitet. Relativ schnell war auch klar, dass… Start der Entwicklung weiterlesen
Die Idee zu SplashTool
Bei der Bearbeitung mehrerer Dutzend Starkregenprojekte war ich als federführender Ingenieur und als Projektleiter unzufrieden mit den verfügbaren Werkzeugen: Fließweganalysen, basierend auf den klassischen GIS Tools, haben zahlreiche methodische Einschränkungen und erfüllen nicht mehr die Anforderungen an moderne Analysen. Hydrodynamische Modelle hingegen benötigen zahlreiche Inputdaten, einen sorgfältigen Modellaufbau im Hinblick auf die Modellstabilität bei expliziten… Die Idee zu SplashTool weiterlesen