====== MOUSE-Zusammenfassung im Lageplan ====== //Letzte Änderung mit MIKE URBAN Version 2009 SP2.// ===== Einleitung ===== Bei jedem MOUSE-Simulationslauf wird eine Zusammenfassung der Simulationsergebnisse in Form einer HTML-Datei gespeichert. Diese Zusammenfassung kann mit einigen Handgriffen auch herangezogen werden, um im Lageplan Ergebnisse wie den maximalen Überstau oder den Auslastungsgrad darzustellen. Die Darstellung anhand der HTML-Zusammenfassung ist zwar umständlicher, als die Darstellung anhand der statistischen Ergebnisse direkt aus der MIKE URBAN-Datenbank, dafür ist sie besonders bei großen Kanalnetzen weitaus schneller. ===== Vorgehen Schritt für Schritt ===== ==== HTML-Zusammenfassung in mehrere Textdateien kopieren ==== Lesen Sie im Beitrag zur [[mikeurban:menue:simulation_mouseberechnung-zusammenfassung|MOUSE-Ergebniszusammenfassung]], wie Sie das Aufteilen auf mehrere Textdateien am besten mit Hilfe von Firefox erledigen! **(1)** Stellen Sie sicher, dass die [[mikeurban:menue:simulation_mouseberechnung-zusammenfassung|MOUSE-Ergebniszusammenfassung]] alle für Sie interessanten Ergebnisse enthält, indem Sie vor dem Starten der Simulation die entsprechenden Optionen im Editor Simulation, Register "Zusammenfassung" anhaken. Damit das akkumulierte Überstauvolumen ausgewiesen wird, müssen Sie in der [[mikeurban:dhiappini|dhiapp.ini]] den Parameterer ''WRITESURFACEFLOODRESULTS'' auf ''1'' setzen. **(2)** Öffnen Sie die [[mikeurban:menue:simulation_mouseberechnung-zusammenfassung|MOUSE-Ergebniszusammenfassung]] mit Firefox. Die Zusammenfassung besteht aus mehreren Tabellen. **(3)** Klicken Sie in die Tabelle "Knoten - Wasserspiegel" (Nodes - Water Level). Kopieren Sie die Tabelle mit Hilfe der Firefox [[http://www.mingyi.org/TableTools2|TableTools2]] ((installation über die Firefox [[https://addons.mozilla.org/en-US/firefox/addon/tabletools2/|Add-ons]])) als tabseparierten Text in die Zwischenablage. {{ :mikeurban:firefox_tabletools3.png?350 |}} **(4)** Öffnen Sie in einem Texteditor eine neue Datei und fügen Sie den Inhalt der Zwischenablage ein. Es handelt sich um einen durch Tabulatoren getrennten Text. **(5)** Löschen Sie die beiden Kopfzeilen. Speichern Sie die Textdatei als **ResNodesWater.txt**. {{ :mikeurban:ergebnisse_lageplan_mousesummary_editpad.png?350 |}} **(6)** Wiederholen Sie die Schritte 3 bis 5 mit der Tabelle "Haltungen - Zusammenfassung" (Links - Result summary) und speichern Sie in die Textdatei **ResLinksResult.txt**. **(7)** Wiederholen Sie die Schritte 3 bis 5 mit der Tabelle "Haltungen - Eingangsdaten" (Links - Data) und speichern Sie in die Textdatei **ResLinksData.txt**. ==== ArcMap vorbereiten ==== **(8)** Damit ArcMap die Eigenschaften der Attribute möglichst reibungslos erkennt, kopieren Sie {{:mikeurban:downloads:ergebnisse_schema_ini_v02.zip|diese schema.ini}} ins gleiche Verzeichnis, wie die im vorigen Schritt erstellten Textdateien. **(9)** Erstellen Sie in ArcMap eine neue Karte und fügen Sie aus Ihrer MIKE URBAN Datenbank die Knoten (msm_Node) und Haltungen (msm_Link) hinzu. **(10)** Fügen Sie der Karte ebenso die drei Textdateien hinzu. Öffnen Sie die Tabellen und kontrollieren Sie, ob die Werte richtig angezeigt werden. Bei Problemen konsultieren Sie den Beitrag [[schema_ini|schema.ini]], insbesondere [[schema_ini#Dezimaltrennzeichen|Dezimaltrennzeichen]]. ==== Texttabellen joinen und Werte berechnen ==== Die nächsten Schritte umfassen eine Reihe von Joins und Feldberechnungen. Die Schritte wurden der Einfachheit halber in [[http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=An_overview_of_the_Command_Line_window|Befehlszeilen]] zusammengefasst, die Sie im Block abarbeiten können. Die folgenden Befehlszeilen funktionieren ab MIKE URBAN 2009/ArcGIS 9.3, nicht aber in älteren Versionen. Dies hat offenbar mit Änderungen in der Funktionsweise der Befehlszeilen zu tun. workspace AddField msm_Node static_Uestau DOUBLE AddField msm_Link static_Einstau DOUBLE AddField msm_Link static_Uestau DOUBLE CopyRows ResLinksResult.txt ResLinksResult.dbf CopyRows ResLinksData.txt ResLinksData.dbf CopyRows ResNodesWater.txt ResNodesWater.dbf AddJoin msm_Node MUID ResNodesWater.dbf KnotID KEEP_ALL AddJoin msm_Link MUID ResLinksResult.dbf HaltID KEEP_ALL AddJoin msm_Link MUID ResLinksData.dbf HaltID KEEP_ALL SelectLayerByAttribute msm_Node CLEAR_SELECTION CalculateField msm_Node msm_Node.static_Uestau '-[ResNodesWater.Abstand]' VB SelectLayerByAttribute msm_Link CLEAR_SELECTION CalculateField msm_Link msm_Link.static_Einstau '[ResLinksData.Dimension] * ( [ResLinksResult.Hmax_D] - 1)' VB AddJoin msm_Link ResLinksData.VonKnot ResNodesWater KnotID KEEP_ALL CalculateField msm_Link msm_Link.static_Uestau '-[ResNodesWater.Abstand]' VB RemoveJoin msm_Link ResNodesWater AddJoin msm_Link ResLinksData.NachKnot ResNodesWater KnotID KEEP_ALL SelectLayerByAttribute msm_Link NEW_SELECTION "-ResNodesWater.Abstand > msm_Link.static_Uestau" CalculateField msm_Link msm_Link.static_Uestau '-[ResNodesWater.Abstand]' VB RemoveJoin msm_Link ResNodesWater SelectLayerByAttribute msm_Link CLEAR_SELECTION **(10)** Blenden Sie in ArcMap das Befehlszeilenfenster ein (Menü Fenster > Befehlszeile) **(11)** Kopieren Sie die obigen Befehle, ergänzen Sie in der ersten Zeile hinter dem ''workspace'' den vollständigen Pfad zum Verzeichnis, in dem die Texttabellen gespeichert sind, also z.B. workspace E:\Projekte\MeinProjekt\ **(12)** Fügen Sie den adaptierten Text ins Befehlszeilenfenster ein. {{ :mikeurban:ergebnisse_lageplan_mousesummary_befehlszeile.png?350 |}} **(13)** Sie starten die Befehle, indem Sie den Mauscursor ans Ende des Textblocks setzen und drücken. Der ganze Textblock wird markiert, und im unteren Teil des Befehlszeilenfensters können Sie verfolgen, wie die einzelnen Schritte abgearbeitet werden. Dass ArcMap fertig ist, erkennen Sie daran, dass der obere Teil des Befehlszeilenfensters geleert wird. {{ :mikeurban:ergebnisse_lageplan_mousesummary_befehlszeile2.png?350 |}} ==== Darstellung der Ergebnisse ==== **(14)** Über die Layersteuerung können Sie nun die unten angeführten Ergebnisse visualisieren. Die Einheiten sind zur Orientierung für das Einheitensystem "SI-m3_per_second" angeführt. ^ Layer ^ Attribut ^ Erklärung ^ |msm_Node |HmaxKnot |maximaler Wasserspiegel im Knoten [müA] | |msm_Node |static_Uestau |maximaler Überstau über Gelände [m] | |msm_Node |UestauVol |akkumuliertes Überstauvolumen [m3] | |msm_Link |Qvoll |Vollfüllleistung [m3/s] | |msm_Link |HmaxHalt |maximaler Wasserspiegel in der Haltung [müA] | |msm_Link |Qmax |maximaler Durchfluss [m3/s] | |msm_Link |Hmax_D |maximaler Füllungsgrad [ ] | |msm_Link |Qmax_Qvoll |maximaler Auslastungsgrad [ ] | |msm_Link |static_Einstau |Einstauhöhe [m] | |msm_Link |static_Uestau |Überstauhöhe [m] | Was die Haltungen betrifft, berechnet MOUSE zumindest zwei Wasserspiegel an den Haltungsenden, bei langen Haltungen eventuell auch Zwischenpunkte. Durchflusspunkt gibt es zumindest einen, bei langen Haltungen eventuell auch mehr. In der binären Ergebnisdatei *.prf sind all diese Berechnungspunkte entlang einer Haltung gespeichert, und sie sind z.B. im Längenschnitt auch sichtbar. Im Gegensatz dazu wird in der HTML-Zusammenfassung in den Tabellen "Haltungen - Zusammenfassung" und "Haltungen - Eingangsdaten" immer nur ein Wert pro Haltung abgespeichert. Es ist dies immer der größte Wert aller zu einer Haltung gehörenden Berechnungspunkte. ===== Anmerkungen ===== Die Schritt-für-Schritt-Anleitung deckt nicht alle Ergebnistypen ab. Sinngemäß lässt sich die Vorgehensweise auch auf Pumpen, Wehre oder Fließgeschwindigkeiten in Haltungen anwenden. Falls Sie Fragen oder Vorschläge haben, wenden Sie sich bitte an [[support@telegdy.at]]. ===== Offene Punkte ===== * dBase-Dateien werden nicht überschrieben, falls sie bereits vorhanden sind. Das macht Schwierigkeiten, falls ein neuer Simulationslauf dargestellt werden soll. Daher Routine einbauen, die dBase-Dateien löscht. * unwichtige Spalten ausblenden * Feldnamen mit "res" statt mit "static" beginnen. Feldnamen auf 10 Zeichen kürzen, damit sie sich auch für Export nach Shapedatei eignen. * ev. Alternativvariante erstellen, die //alle// Felder in die msm_Node bzw. msm_Link schreibt. Frage der Performance! * Klassifizierung der Schächte nach dem Schema der Emscher-Genossenschaft einführen. * Gibt es eine Möglichkeit, die HTML-Zusammenfassung automatisch in Textdateien zu zerlegen, z.B. mit Hilfe von XSLT oder Python? ===== Versionsgeschichte ===== ^ Datum ^ Bemerkung ^ |14.08.2009 |schema.ini korrigiert | |12.06.2009 |Seite angelegt | ===== Anhang: Erklärung der Befehlszeilen ===== Sie müssen ArcMap für den Rest der Session mitteilen, in welchem Verzeichnis die Texttabellen liegen: workspace E:\Projekte\MeinProjekt\ Speziell für die Darstellung des Überstaus wird der msm_Node das Feld "static_Uestau hinzugefügt. Ebenso werden der msm_Link für die Darstellung des Einstaus und des Überstaus die Felder "static_Einstau" und "static_Uestau" hinzugefügt. Das Präfix static soll daran erinnern, dass diese Felder nicht automatisch aktualisiert werden, sondern dass es an Ihnen liegt, neue Ergebnisse einzutragen. Falls die Felder bereits vorhanden sind, erscheint eine Fehlermeldung "Failed to execute", was den weiteren Programmablauf aber nicht beeinträchtigt. AddField msm_Node static_Uestau DOUBLE AddField msm_Link static_Einstau DOUBLE AddField msm_Link static_Uestau DOUBLE Weil das Joinen von Texttabellen über die Befehlszeile in ArcMap 9.3 irrtümlich [[http://forums.esri.com/Thread.asp?c=93&f=1728&t=263639#869212|nicht funktioniert]], müssen dBase-Tabellen gleichen Inhalts erzeugt werden: CopyRows ResLinksResult.txt ResLinksResult.dbf CopyRows ResLinksData.txt ResLinksData.dbf CopyRows ResNodesWater.txt ResNodesWater.dbf Joint die Knotenergebnisse an die Knoten, und die Haltungsergebnisse an die Haltungen: AddJoin msm_Node MUID ResNodesWater.dbf KnotID KEEP_ALL AddJoin msm_Link MUID ResLinksResult.dbf HaltID KEEP_ALL AddJoin msm_Link MUID ResLinksData.dbf HaltID KEEP_ALL Löscht eine eventuell vorhandene Auswahl und berechnet den Überstau der Knoten im Feld "static_Uestau" nach der Formel ''-[Abstand]'': SelectLayerByAttribute msm_Node CLEAR_SELECTION CalculateField msm_Node msm_Node.static_Uestau '-[ResNodesWater.Abstand]' VB Löscht eine eventuell vorhandene Auswahl und berechnet den Einstau der Haltungen im Feld "static_Einstau" nach der Formel ''[Dimension] * ( [Hmax_D] - 1)'': SelectLayerByAttribute msm_Link CLEAR_SELECTION CalculateField msm_Link msm_Link.static_Einstau '[ResLinksData.Dimension] * ( [ResLinksResult.Hmax_D] - 1)' VB Joint die Tabelle mit den Knotenergebnissen über das Feld "VonKnot", schreibt den Überstau des Knotens in das Feld "static_Uestau" der Haltungen, und entfernt den Join wieder: AddJoin msm_Link ResLinksData.VonKnot ResNodesWater KnotID KEEP_ALL CalculateField msm_Link msm_Link.static_Uestau '-[ResNodesWater.Abstand]' VB RemoveJoin msm_Link ResNodesWater Weil nicht sicher ist, dass der Knoten am oberen Haltungsende den höheren Überstau verzeichnet, müssen die Knotenergebnisse nun über das Feld "NachKnot" gejoint werden. Überall, wo der Überstau am unteren Haltungsende größer ist, wird das Feld "static_Uestau" aktualisiert: AddJoin msm_Link ResLinksData.NachKnot ResNodesWater KnotID KEEP_ALL SelectLayerByAttribute msm_Link NEW_SELECTION "-ResNodesWater.Abstand > msm_Link.static_Uestau" CalculateField msm_Link msm_Link.static_Uestau '-[ResNodesWater.Abstand]' VB Der Join wird entfernt und die Auswahl aufgehoben: RemoveJoin msm_Link ResNodesWater SelectLayerByAttribute msm_Link CLEAR_SELECTION