Page Title

Benutzer-Werkzeuge

Webseiten-Werkzeuge


mikeurban:anleitungen:import_anschlussleitungen_etgeowizard11

Anschlussleitungen berücksichtigen

Letzte Änderung mit MIKE URBAN Version 2011 SP7.

Die Anleitung für die MIKE URBAN Version 2009 finden Sie hier

Einleitung

MIKE URBAN bietet verschiedene Methoden an, den zu einem Hausanschluss passenden Knoten des Versorgungsnetzes zu finden. Dabei wird die räumlichen Nähe zur nächsten Leitung oder zum nächsten Modellknoten genutzt. Im Allgemeinen ist diese Zuordnung ausreichend genau.

Nun gibt es aber zunehmend Netzbetreiber, die in ihrem Netzinformationssystem auch die Anschlussleitungen verwalten. Diese Anschlussleitungen geben eigentlich genau vor, wie die Hausanschlüsse mit dem Versorgungsnetz zu verbinden sind, und sind daher einer Zuordnung über die Nähe zur nächsten Leitung oder zum nächsten Modellknoten vorzuziehen.

Im Folgenden wird eine Routine beschrieben, um diese Information in MIKE URBAN zu berücksichtigen. Sie läuft in zwei Teilen ab:

  • Im Teil A wird das Punktthema Hausanschlüsse mit dem Feld "Zielknoten" versehen. In dieses Feld wird der Netzknoten eingetragen, der dem Anfang der Anschlussleitung am nächsten liegt.
  • Im Teil B wird das Punktthema "Hausanschlüsse" unter Berücksichtigung des Feldes "Zielknoten" nach MIKE URBAN importiert.

Was Sie benötigen

Software

Wenn Sie eine ArcInfo-Lizenz besitzen, brauchen Sie keine zusätzliche Software zu installieren.

Wenn Sie keine ArcInfo-Lizenz besitzen, müssen Sie die ET GeoWizards von ET SpatialTechniques installieren. Haben Sie nur eine Demoversion, dann müssen Sie einen Schritt der weiter unten beschriebenen Bearbeitung quasi händisch über die grafische Benutzeroberfläche durchführen. Der Rest der Bearbeitung kann automatisch mit einem Skript abgearbeitet werden.

Besitzen Sie eine lizenzierte Version der ET GeoWizards, dann können Sie die gesamte Bearbeitung ohne Unterbrechung über ein Skript abarbeiten lassen.

Daten

  • Die Methode nutzt die Tabelle mw_Pipe aus der MIKE URBAN Datenbank. Daher müssen Sie in einem ersten Schritt bereits ein MIKE URBAN-Netz erstellt haben, bevor Sie mit der Zuordnung der Hausanschlüsse beginnen können.
  • Weiters benötigen Sie ein GIS-Thema (Punkte) mit den Hausanschlüssen, das den Jahresverbrauch enthält.
  • Schließlich benötigen Sie ein GIS-Thema (Polylinien) mit den Anschlussleitungen.

Teil A: Schreiben der Zielknoten Schritt für Schritt

MIKE URBAN

(1) Die Routine nutzt die Rohrtabelle "mw_Pipe" aus der MIKE URBAN Datenbank. Daher müssen Sie das Versorgungsnetz vorab bereits nach MIKE URBAN importiert oder in MIKE URBAN neu aufgebaut haben.

(2) Führen Sie eine Fehlerprüfung1) der Rohre (Pipes) durch. Dabei werden in der Tabelle "mw_Pipes" die Felder FROMNODE und TONODE erstellt und befüllt, welche von der Routine benötigt werden.

(3) Schließen Sie MIKE URBAN.

Dateimanager

(4) Erstellen Sie ein temporäres Verzeichnis für die Shape-Dateien, die als Teil der Routine erzeugt werden, beispielsweise ein Unterverzeichnis zu Ihrem aktuellen Projektverzeichnis mit Namen "temp1".

ArcMap Karte

(5) Erstellen Sie in ArcMap eine neue Karte.

(6) Fügen Sie aus Ihrer MIKE URBAN Datenbank die Knoten (mw_Junction) und Rohre (mw_Pipe) hinzu.

(7) Fügen Sie das Punktthema mit den Hausanschlüssen hinzu. Ändern Sie den Namen des Layers in "Hausanschluss". Stellen Sie sicher, dass keine Hausanschlüsse ausgewählt sind, andernfalls werden nur die ausgewählten Hausanschlüsse mit einem Zielknoten versehen.

(8) Fügen Sie das Polylinienthema mit den Anschlussleitungen hinzu. Ändern Sie den Namen des Layers in "Anschlussleitung".

Die nächsten Bearbeitungsschritte können Sie automatisch im Python-Fenster abarbeiten lassen. Der folgende Code funktioniert ab MIKE URBAN 2010/ArcGIS 10.0, nicht aber in älteren Versionen.

ArcMap Python-Fenster (ArcInfo)

Lesen Sie auf der Seite für die ArcInfo-Lizenz weiter, falls Sie über eine solche verfügen.

ArcMap Python-Fenster (Demoversion der ET GeoWizards)

Lesen Sie auf der Seite für die Demoversion der ET GeoWizards weiter, falls Sie über eine solche verfügen.

ArcMap Python-Fenster (lizenzierte Version der ET GeoWizards)

(9) Blenden Sie in ArcMap das Python-Fenster ein (Menü Geoprocessing > Python)

(10) Kopieren Sie den nachfolgenden Code in einen Texteditor.

# CODE
 
 
# Umgebungsvariablen
# ******************
Pfad_Workspace = <VOLLSTÄNDIGER PFAD ZUM TEMPORÄREN VERZEICHNIS>
Pfad_ETToolbox = <VOLLSTÄNDIGER PFAD ZUR ET-TOOLBOX>
Bufferdist = 0.1
Searchdist = 0.2
 
 
# Vorbereitende Schritte
# **********************
import arcpy
arcpy.env.workspace = Pfad_Workspace
arcpy.env.overwriteOutput = True
arcpy.ImportToolbox(Pfad_ETToolbox)
 
MXD = arcpy.mapping.MapDocument("Current")
LYRhausanschluss = arcpy.mapping.ListLayers(MXD,"Hausanschluss")[0]
STRINGhausanschluss = LYRhausanschluss.datasetName + ".Zielknoten"
 
 
# Erstellung eines Buffers um die Anschlussleitungen
# **************************************************
arcpy.Buffer_analysis("Anschlussleitung","AnschlussleitungBuffer1",Bufferdist,"FULL","ROUND","ALL") 
arcpy.MultipartToSinglepart_management("AnschlussleitungBuffer1","AnschlussleitungBuffer2")
arcpy.AddField_management("AnschlussleitungBuffer2","ALID","LONG")
 
codeblock = """rec=0
def autoIncrement1():  
  global rec
  pStart = 1
  pInterval = 1
  if (rec == 0):
    rec = pStart
  else:
    rec = rec + pInterval
  return rec"""
expression = "autoIncrement1()"
 
arcpy.CalculateField_management("AnschlussleitungBuffer2","ALID",expression,"PYTHON",codeblock)
 
 
# Hausanschlüsse werden bearbeitet
# ********************************
arcpy.AddField_management("Hausanschluss","tempHAID","LONG")
arcpy.CalculateField_management("Hausanschluss","tempHAID",expression,"PYTHON",codeblock)
arcpy.SpatialJoin_analysis("Hausanschluss","AnschlussleitungBuffer2","Hausanschluss1","JOIN_ONE_TO_ONE","KEEP_ALL","","COMPLETELY_WITHIN")
 
 
# Anschlussleitungen werden bearbeitet
# ************************************
arcpy.ET_GPPolylineToPoints("Anschlussleitung","Anschlussleitung2Punkte","Node")
arcpy.SpatialJoin_analysis("Anschlussleitung2Punkte","AnschlussleitungBuffer2","Anschlussleitung2Punkte2","JOIN_ONE_TO_ONE","KEEP_ALL","","COMPLETELY_WITHIN")
 
arcpy.CalculateField_management("mw_Pipe","Coeff3",0)
arcpy.CalculateField_management("mw_Pipe","Coeff4",1)
arcpy.CreateRoutes_lr("mw_Pipe","MUID","mw_Pipe_Routen","TWO_FIELDS","Coeff3","Coeff4","UPPER_LEFT",1,0,"IGNORE","INDEX")
arcpy.LocateFeaturesAlongRoutes_lr("Anschlussleitung2Punkte2","mw_Pipe_Routen","MUID",Searchdist,"ALPosition.dbf","RID POINT MEAS","FIRST","DISTANCE","ZERO","FIELDS")
arcpy.AddField_management("ALPosition","Zielknoten","TEXT","","",40)
arcpy.AddJoin_management("ALPosition","RID","mw_Pipe","MUID","KEEP_ALL") # RID kommt von den Routen, ist die MUID
arcpy.SelectLayerByAttribute_management("ALPosition","NEW_SELECTION",'MEAS <=0.5')
arcpy.CalculateField_management("ALPosition","ALPosition.Zielknoten","!mw_Pipe.FROMNODE!","PYTHON")
arcpy.SelectLayerByAttribute_management("ALPosition","NEW_SELECTION",'MEAS >0.5')
arcpy.CalculateField_management("ALPosition","ALPosition.Zielknoten","!mw_Pipe.TONODE!","PYTHON")
arcpy.SelectLayerByAttribute_management("ALPosition","CLEAR_SELECTION")
arcpy.RemoveJoin_management("ALPosition","mw_Pipe")
 
arcpy.AddField_management("Hausanschluss1","Zielknoten","TEXT","","",40)
arcpy.AddJoin_management("Hausanschluss1","ALID","ALPosition","ALID","KEEP_ALL")
arcpy.SelectLayerByAttribute_management("Hausanschluss1","NEW_SELECTION","ALPosition.Zielknoten IS NOT NULL")
arcpy.CalculateField_management("Hausanschluss1","Hausanschluss1.Zielknoten","!ALPosition.Zielknoten!","PYTHON")
arcpy.SelectLayerByAttribute_management("Hausanschluss1","CLEAR_SELECTION")
arcpy.RemoveJoin_management("Hausanschluss1","ALPosition")
 
arcpy.AddField_management("Hausanschluss","Zielknoten","TEXT","","",40)
arcpy.AddJoin_management("Hausanschluss","tempHAID","Hausanschluss1","tempHAID","KEEP_ALL")
arcpy.CalculateField_management("Hausanschluss",STRINGhausanschluss,"!Hausanschluss1.Zielknoten!","PYTHON")
arcpy.RemoveJoin_management("Hausanschluss","Hausanschluss1")
arcpy.DeleteField_management("Hausanschluss","tempHAID")

(11) Adaptieren Sie den Code im Texteditor.

In der Codezeile 6 Pfad_Workspace müssen Sie den vollständigen Pfad zu Ihrem temporären Arbeitsverzeichnis angeben (siehe Schritt 4). Pfadangaben werden in Python folgendermaßen getrennt:

  • Forward Slash (/)
  • Doppelter Backslash (\\)
  • r"Pfadangabe mit Backslash"
Pfad_Workspace = "E:/Projekte/MeinProjekt"
Pfad_Workspace = "E:\\Projekte\\MeinProjekt"
Pfad_Workspace = r"E:\Projekte\MeinProjekt"

In der Codezeile 7 Pfad_ET-Toolbox müssen Sie den vollständigen Pfad zur ET-Toolbox (ETGeoWizards.tbx) angeben

Pfad_ET-Toolbox = r"C:\Program Files (x86)\ET\ET GeoWizards.tbx"

(12) Fügen Sie den adaptierten Text im Python-Fenster ein.

(13) Sie starten die Befehle, indem Sie den Mauscursor ans Ende des Textblocks setzen und zwei Mal <Enter> drücken. Der ganze Textblock wird nun abgearbeitet. In der Statusleiste im unterer Rand des ArcMap-Fensters wird der gerade ausgeführte Befehl gezeigt, im rechten Teil des Python-Fensters können Sie den Gesamtfortschritt verfolgen. Fehlermeldungen werden rot, Warnungen gelb geschrieben.

Dass ArcMap fertig ist, erkennen Sie daran, dass der Curser unten im Python-Fenster blinkt und auf eine weitere Eingabe wartet. In ArcMap werden im Laufe der Bearbeitung etlichen neue Layer hinzugefügt.

(14) Öffnen Sie die Attributtabelle des Themas "Hausanschluss" und kontrollieren Sie, ob Sie ganz rechts eine Spalte "Zielknoten" finden, in der KnotenIDs stehen.

(15) Schließen Sie ArcMap.

Dateimanager

(16) Sie können die neu erstellte Karte und das temporäre Verzeichnis für die Shape-Dateien jetzt wieder löschen.

Teil B: Import der Hausanschlüsse Schritt für Schritt

MIKE URBAN

(1) Öffnen Sie die MIKE URBAN-Datenbank mit dem Versorgungsnetz.

(2) Starten Sie im Menü "Datei" den "Import/Export…" und gehen Sie mit "Next" zum nächsten Schritt.

(3) Erstellen Sie mit dem Assistenten oder mit dem Spezialeditor einen Import, der Ihr Hausanschlussthema der Tabelle mw_DemAlloc zuordnet.

(4) Entscheidend ist, dass Sie in den Feldzuordnungen das Feld "Zielknoten" dem Feld "JunctionID" zuordnen. Die übrigen Feldzuordnungen hängen davon ab, wie Ihr Hausanschluss-Datensatz insgesamt aussieht.

(5) Drücken Sie links unten auf die Schaltfläche "Ausführen und Schließen". Falls die Schaltfläche anders heißt, können Sie die Funktion der Schaltfläche mit dem Pfeil-nach-unten ändern.

Die Hausanschlüsse sind importiert worden. Die schwarzen Linien zeigen die Zuordnung zum Zielknoten. Im Hintergrund ist hellblau das Thema "Anschlussleitungen" eingeblendet.

Technische Details

Die Routine erfasst Hausanschlüsse, die an Anschlussleitungen sitzen. Hausanschlüsse, die irrtümlich oder absichtlich direkt an Versorgungsleitungen sitzen, gehen verloren.

Die Routine hat an zwei Stellen Toleranzen eingebaut, falls die Enden der Anschlussleitungen nicht genau geschnappt worden sind.

In der Codezeile 8 wird ein Buffer mit dem Radius 0,1 m um die Anschlussleitungen gezogen, um alle Anschlussleitungen, die gemeinsam in eine Versorgungsleitung münden, zu Gruppen zusammenzufassen. Anders gesehen dürfen Anschlussleitungen maximal 0,2 m voneinander entfernt sein, um als eine Gruppe aufgefasst zu werden. Wenn Sie wünschen, ändern Sie diesen Wert:

Bufferdist = 0.1

In Codezeile 9 wird festgelegt, dass eine Anschlussleitung 0,2 m von einer Versorgungsleitung entfernt liegen darf, um noch berücksichtigt zu werden. Wenn Sie wünschen, ändern Sie diesen Wert:

Searchdist = 0.2

Hausanschlüsse, deren Anschlussleitungen größere Abstände aufweisen als die Toleranzgrenze, erhalten keinen Knoten den Versorgungsnetzes zugewiesen. Überprüfen Sie solche Hausanschlüsse und entscheiden Sie selbst, wie weiter vorzugehen ist.

Die Routine braucht für jedes Rohr ein Feld, in dem die Zahl 0 steht und eines, in dem die Zahl 1 steht. Dazu werden die Felder "Coeff3" und "Coeff4" benutzt, und zwar in den Codezeilen 56 bzw. 57. Diese beiden Felder sind von MIKE URBAN für exotische Formen der Bedarfsaufteilung reserviert, werden aber standardmäßig nicht verwendet.

Vorsicht ist geboten, wenn eine Gruppe von Anschlussleitungen an zwei Punkten mit dem Versorgungsnetz verbunden ist, z.B. wenn ein größerer Gebäudekomplex zwischen zwei Straßen steht. In diesem Fall wird nur einer der beiden Anschlusspunkte berücksichtigt, und alle Zähler werden diesem einen Punkt zugeordnet.

Erklärung der Befehlszeilen

Wechseln Sie bitte auf die Seite Erklärung der Befehlszeilen.

Offene Punkte

  • Erklärung der Befehlszeilen (auf einer separaten Seite)
  • Skript so verbessern, dass es auch bei einer Auswahl der Hausanschlüsse oder der Anschlussleitungen funktioniert.
  • Skript so verbessern, dass es nicht alle Anschlussleitungen buffert etc., wenn nur weniger Hausanschlüsse abzuarbeiten sind (z.B. mit Auswahl der Buffer, die einen Hausanschluss enthalten). unter Berücksichtigung des Feldes Anschlussleitung2Punkte2 unter Berücksichtigung des Feldes Anschlussleitung2Punkte2 unter Berücksichtigung des Feldes Anschlussleitung2Punkte2, unter Berücksichtigung des Feldes KEEP_ALLE:/Projekte/MeinProjekt,,,Hausanschluss1Ausführen und SchließenAnschlussleitungBuffer2,,
1)
zu finden im Menü Werkzeuge
mikeurban/anleitungen/import_anschlussleitungen_etgeowizard11.txt · Zuletzt geändert: 2018/08/29 16:03 von katharina