Page Title

Benutzer-Werkzeuge

Webseiten-Werkzeuge


mikeurban:anleitungen:import_anschlussleitungen_arcinfo

Der folgende Abschnitt gehört zur Seite Anschlussleitungen berücksichtigen:

ArcMap Python-Fenster (ArcInfo)

Mangels einer eigenen ArcInfo-Lizenz konnte der Befehl "Feature Vertices to Points" in Zeile 52 nicht getestet werden. Rückmeldungen bitte an support@telegdy.at.

(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>
Bufferdist = 0.1
Searchdist = 0.2


# Vorbereitende Schritte
# **********************
import arcpy
arcpy.env.workspace = Pfad_Workspace
arcpy.env.overwriteOutput = True
arcpy.ImportToolbox(Pfad_ET-Toolbox)

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.FeatureVerticesToPoints_management("Anschlussleitung","Anschlussleitung2Punkte","BOTH_ENDS")
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"

(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) Fahren Sie fort mit Teil B: Import der Hausanschlüsse Schritt für Schritt..Zielknoten,40) arcpy.AddJoin_management(.Zielknoten,40) arcpy.AddJoin_management(

mikeurban/anleitungen/import_anschlussleitungen_arcinfo.txt · Zuletzt geändert: 2016/05/18 13:06 von julian