Der folgende Abschnitt gehört zur Seite Anschlussleitungen berücksichtigen - Version 2009:
Verzeichnis für die Shapedateien festlegen:
Workspace <VOLLSTÄNDIGEN PFAD ZU DEN ERGEBNISTABELLEN EINTRAGEN>
Anschlussleitungen in Shape-Datei exportieren:
CopyFeatures Anschlussleitung Anschlussleitung1
Anschlussleitungen buffern und zerlegen:
Buffer Anschlussleitung1 AnschlussleitungBuffer1 '0.1 Meters' FULL ROUND ALL MultipartToSinglepart AnschlussleitungBuffer1 AnschlussleitungBuffer2
Buffer mit eindeutiger ID "ALID" versehen:
AddField AnschlussleitungBuffer2 ALID LONG CalculateField AnschlussleitungBuffer2 ALID rec VB "Static rec As Long \nDim pStart As Long \nDim pInterval As Long \npStart = 1 \npInterval = 1 \nIf (rec = 0) Then \nrec = pStart \nElse \nrec = rec + pInterval \nEnd If" AnschlussleitungBuffer2
"ALID" auf Anschlussleitungen übertragen:
SpatialJoin Anschlussleitung1 AnschlussleitungBuffer2 Anschlussleitung2 JOIN_ONE_TO_ONE KEEP_ALL "ALID 'ALID' true true false 9 Long 0 9 ,First,#,AnschlussleitungBuffer2.shp,ALID,-1,-1" IS_WITHIN '0 Unknown' #
Hausanschlüsse mit temporärer, eindeutiger ID "tempHAID" versehen:
AddField Hausanschluss tempHAID LONG CalculateField Hausanschluss tempHAID rec VB "Static rec As Long \nDim pStart As Long \nDim pInterval As Long \npStart = 1 \npInterval = 1 \nIf (rec = 0) Then \nrec = pStart \nElse \nrec = rec + pInterval \nEnd If" Hausanschluss
Hausanschlüsse in Shape-Datei exportieren:
CopyFeatures Hausanschluss Hausanschluss1
"ALID" auf die Hausanschlüsse übertragen:
SpatialJoin Hausanschluss1 AnschlussleitungBuffer2 Hausanschluss2 JOIN_ONE_TO_ONE KEEP_ALL "tempHAID 'tempHAID' true true false 0 Long 0 0 ,First,#,Hausanschluss,tempHAID,-1,-1;ALID 'ALID' true true false 9 Long 0 9 ,First,#,AnschlussleitungBuffer2.shp,ALID,-1,-1" IS_WITHIN '0 Unknown'
Anschlussleitungen in Endpunkte auflösen:
ET_GPPolylineToPoints Anschlussleitung2 Anschlussleitung2Punkte Node
Aus "mw_Pipe" Routen erstellen, damit anschließend der jeweils nächste Knoten gesucht werden kann:
CalculateField mw_Pipe Coeff3 0 VB CalculateField mw_Pipe Coeff4 1 VB CreateRoutes mw_Pipe MUID mw_Pipe_Routen TWO_FIELDS Coeff3 Coeff4 UPPER_LEFT 1 0 IGNORE INDEX
Tabelle "ALPosition" mit der Position der Anschlussleitungen erstellen:
LocateFeaturesAlongRoutes Anschlussleitung2Punkte mw_Pipe_Routen MUID '0.2 Meters' ALPosition.dbf 'RID POINT MEAS' FIRST DISTANCE ZERO FIELDS
Zur Tabelle "ALPosition" das Feld "Zielknoten" hinzufügen:
AddField ALPosition Zielknoten TEXT # # 40
"mw_Pipe" reinjoinen:
AddJoin ALPosition RID mw_Pipe MUID KEEP_ALL
Zeilen auswählen, die näher am Anfangsknoten liegen, das sind die Zeilen mit MEAS ⇐ 0.5, und Inhalt von "FROMNODE" ins Feld "Zielknoten" schreiben:
SelectLayerByAttribute ALPosition NEW_SELECTION 'ALPosition.MEAS <= 0.5' CalculateField ALPosition ALPosition.Zielknoten [mw_Pipe.FROMNODE] VB
Zeilen auswählen, die näher am Endkonten liegen, das sind die Zeilen mit MEAS > 0.5, und Inhalt von "TONODE" ins Feld "Zielknoten" schreiben:
SelectLayerByAttribute ALPosition NEW_SELECTION 'ALPosition.MEAS > 0.5' CalculateField ALPosition ALPosition.Zielknoten [mw_Pipe.TONODE] VB
Auswahl und Join aufheben:
SelectLayerByAttribute ALPosition CLEAR_SELECTION RemoveJoin ALPosition mw_Pipe
Feld "Zielknoten" zu "Hausanschluss2" hinzufügen:
AddField Hausanschluss2 Zielknoten TEXT # # 40
"ALPosition" reinjoinen, nur Zeilen auswählen, die auch einen Zielknoten haben, Inhalt des Felds Zielknoten übertragen, Join entfernen:
AddJoin Hausanschluss2 ALID ALPosition ALID KEEP_ALL SelectLayerByAttribute Hausanschluss2 NEW_SELECTION "ALPosition.Zielknoten IS NOT NULL" CalculateField Hausanschluss2 Hausanschluss2.Zielknoten [ALPosition.Zielknoten] VB SelectLayerByAttribute Hausanschluss2 CLEAR_SELECTION RemoveJoin Hausanschluss2 ALPosition
Feld "Zielknoten" zu "Hausanschluss" hinzufügen:
AddField Hausanschluss Zielknoten TEXT # # 40
"Hausanschluss" und "Hausanschluss2" mit Index versehen, damit Join schneller wird:
AddIndex Hausanschluss tempHAID idx_Hausanschluss_tempHAID NON_UNIQUE ASCENDING AddIndex Hausanschluss2 tempHAID idx_Hausanschluss2_tempHAID NON_UNIQUE ASCENDING
"Hausanschluss2" reinjoinen, Inhalt des Felds "Zielknoten" übertragen, Join entfernen:
AddJoin Hausanschluss tempHAID Hausanschluss2 tempHAID KEEP_ALL CalculateField Hausanschluss Zielknoten [Hausanschluss2.Zielknoten] VB RemoveJoin Hausanschluss Hausanschluss2
Index von "Hausanschluss" entfernen und Feld "tempHAID" entfernen:
RemoveIndex Hausanschluss idx_Hausanschluss_tempHAID DeleteField Hausanschluss tempHAID
ALID 0.5' CalculateField ALPosition ALPosition.Zielknoten [mw_Pipe.TONODE] VBmw_PipeHausanschluss2