====== Esri ASCII Raster in MIKE Rasterdaten (*.dfs2) konvertieren (Grd2MIKE) ====== ⯇ Zurück zu [[mikeplus:anleitungen:anleitungen_siedlungsentwaesserung|Anleitungen zum Arbeiten in der Siedlungsentwässerung]] \\ Weiter nach [[mikeplus:dialog:menue_werkzeuge_mike-zero-toolbox|MIKE Zero Toolbox]] ⯈ ===== Einleitung ===== Die MIKE Zero Toolbox beinhaltet verschiedene Werkzeuge und wird gemeinsam mit MIKE+ installiert. Um Rasterdaten für die Erstellung bzw. Randbedingungen ein Meshs in MIKE+ (bzw. MIKE Flood) verwenden zu können, muss es in das interne Format *.dfs2 umgewandelt werden. Folgende Seite gibt eine schrittweise Anleitung, wie Sie ein ESRI Ascii Grid file (*txt, *.asc) zu MIKE 21 Rasterdaten (*.dfs2) konvertieren können. Dazu steht das Tool Grd2MIKE zur Verfügung. Das Tool setzt voraus, dass im *.asc die Rasterbreite und die Geländehöhe in der Einheit //Meter// angegeben sind. ===== Schritt für Schritt ===== **(1)** Öffnen Sie die MIKE Zero Toolbox direkt in MIKE+ über das Menü Werkzeuge... {{ mikeplus:anleitungen:mike_zero_toolbox1.png?direct&600 |}} ...oder traditionell über MIKE Zero > File > New > MIKE ZERO Toolbox: {{ mikeplus:anleitungen:mike_zero_toolbox.png?direct&600 |}} **(2)** Klicken Sie im Menüpunkt "GIS" auf "Grd2MIKE" und wählen Sie Ihren Raster (*.txt, *.asc) aus. {{ mikeplus:anleitungen:mike_zero_toolbox2.png?direct&600 |}} **(3)** Klicken Sie auf "Next" und wählen Sie dann die richtige Projektion aus. Wenn Sie eine *prj-Datei importieren möchten, klicken Sie auf den Dropdown-Pfeil -> Browse (ganz unten in der Liste). Um die richtige Projektion auszuwählen, klicken Sie auf „Import Projection File“ und wählen Sie Ihre *.prj-Datei aus. Eine *.prj-Datei muss nur einmal importiert werden. Danach wird sie automatisch gespeichert. {{ mikeplus:anleitungen:mike_zero_toolbox3.png?direct&600 |}} **(4)** Klicken Sie auf OK > Next und wählen Sie einen Speicherort aus. * Name und Verzeichnis der dfs2-Datei * Item name: eine beliebige Bezeichnung * Item type: Bathymetry * Item unit: Meter * Land Value: Damit die Bathymetrie in weiterer Folge als Grundlage für die Höheninterpolation eines Mesh verwendet werden kann, müssen Sie einen Wert wählen, der höher liegt als die höchste Erhebung. Oder anders gesagt: Es sollen keine Höhen durch den Land Value abgeschnitten werden. (((Eintrag neu in MIKE+ 2022 Update 1) Falls der Land Value zu niedrig ist, wirft MIKE+ beim Interpolieren der 2D Domäne folgende Fehlermeldung aus: All topographical data are higher than the Land Value in the file. There are no data to interpolate.")) {{ :mikeplus:anleitungen:mike_zero_toolbox_grd2mike_specifiy_output.png?direct&450 |}} **(5)** Klicken Sie auf um das *.dfs2 File zu erstellen. Mit beenden Sie das Dialogfenster. (Achtung: alleine erstellt KEIN *.dfs2-File.) **(6)** Als nächstes gehen Sie zu dem Ordner, in dem Sie das *.dfs2 File erstellt haben. Mit Doppelklick öffnet sich automatisch MIKE ZERO. ===== Technische Details ===== ==== Grid registration ==== Grd2MIKE geht davon aus, dass das Esri ASCII Raster mit den Parametern ''xllcorner'' und ''yllcorner'' definiert ist. Nur in diesem Fall wird das Esri ASCII Raster lagerichtig konvertiert. Wenn das Esri ASCII Raster hingegen mit ''xllcenter'' und ''yllcenter'' definiert ist, ist die dfs2-Datei um eine halbe Rasterbreite verschoben – an einer Korrektur des Tools wird gearbeitet ((DHI intern: [[https://telegdy.fogbugz.com/f/cases/5464/Grd2Mike-konvertiert-Esri-ASCII-Raster-mit-xllcenter-yllcenter-falsch|Fall 5464]])). Als Behelfslösung müssten Sie den Kopf der *.asc-Datei manuell auf ''xllcorner'' und ''yllcorner'' anpassen und die Koordinaten um eine halbe Zellbreite nach links unten verschieben. ==== nodata_value ==== ''nodata_value'' in der *asc-Datei wird vom Tool in die *.dfs2 als ''Delete value'' geschrieben, der Wert dafür ist -1e-30. Der Land value wird standardmäßig auf 0 gesetzt. {{ mikeplus:anleitungen:mike_zero_toolbox_dfs2-items.png?direct&700 |}} ==== Konvertierung mehrerer *.asc-Dateien im Batch-Modus ==== **(1)** Konvertieren Sie mit dem Werkzeug Grd2Mike eine asc-Datei nach dfs2. Jetzt dürfen Sie das Dialogfeld nicht achtlos schließen! Wechseln Sie auf das Register Setup List. Wenn Sie die Toolbox frisch gestartet haben, sollte nur ein Setup zu sehen sein, ansonsten löschen Sie die überschüssigen Setups. Speichern Sie das Setup als *mzt-Datei ins gleiche Verzeichnis wie die asc-Dateien, im Beispiel mit dem Namen batchconvert.mzt. Mit einem Texteditor werden Sie sehen, dass die *.mzt genau die Angaben enthält, die Sie vorhin im Dialogfeld gemacht haben. {{ :mikeplus:anleitungen:asc_nach_dfs2_konvertieren_grd2mike_mzt.png?direct&400 |}} Die *.mzt lässt sich mit Hilfe der ''ToolboxShell.exe'' und den Parametern ''-run'' und dem Namen der *.mzt-Datei, hier ''batchconvert.mzt'', über die Eingabeaufforderung starten: C:\Users\tht\Documents>"c:\Program Files (x86)\DHI\MIKE Zero\2021\bin\x64\ToolboxShell.exe" -run batchconvert.mzt Die Konvertierung läuft im Hintergrund ab, ohne dass das Dialogfeld erscheint. **(2)** Um viele Dateien hintereinander konvertieren, haben Sie zwei Möglichkeiten. (a) Sie editieren die *.mzt-Datei händisch und fügen mehrere Abschnitte [grd2mike] ein. (b) Sie packen sie Konvertierung beispielsweise in ein Python-Skript, das die *.mzt-Datei immer wieder modifiziert und anschließend den ToolboxShell-Befehl ausführt. ==== ASCII erzeugen in QGIS ==== Beim Konvertieren eines Raster Formats (z.B. TIFF) nach ASCII in QGIS (Tool = Translate-convert format) werden sehr viele Nachkommastellen produziert. Die Anzahl der Nachkommastellen in der ASCII Datei lässt sich über den zusätzlichen Parameter-Befehl **-co DECIMAL_PRECISION=4** steuern - dadurch verringert sich auch die Dateigröße der ASCII Datei: {{ :mikeplus:anleitungen:raster_translate_qgis.png?800 |}} {{:mikeplus:anleitungen:ascii_default.png?400|}}{{ :mikeplus:anleitungen:ascii_float.png?400|}} ===== Probleme & Fehlermeldungen ===== ==== Invalid file name ==== Eventuell enthält der Dateipfad Sonderzeichen, mit denen das Tool nicht umgehen kann, in diesem Fall ein Pluszeichen, aber auch Minuszeichen sind problematisch: {{ mikeplus:anleitungen:invalid-file-name.png?direct&350 |}} ==== Error reading Input file ==== {{ mikeplus:anleitungen:error-reading-input-file.png?direct&200 |}} Eventuell fehlt im Kopf der *.asc-Datei die Angabe "nodata_value". Im folgenden Beispiel wurde die Zeile bereits manuell ergänzt: ncols 493 nrows 323 xllcorner 1750760.000000000000 yllcorner 5946615.000000000000 cellsize 5.000000000000 nodata_value -9999 Bei großen ASCII Dateien kann es passieren, dass die obige Fehlermeldung aufgrund der fehlenden "nodata_value" Angabe nicht erscheint.