HOW TO

Erstellen paralleler Features mit Python wie mit dem Werkzeug "Parallel kopieren" in ArcGIS Pro

Last Published: October 16, 2020

Zusammenfassung

Obwohl ArcGIS Pro das Werkzeug "Parallel kopieren" bereitstellt, ist dieses Werkzeug nicht über ArcPy verfügbar.Alternativ kann ein Python-Skript verwendet werden, um einen ähnlichen Effekt wie in der folgenden Abbildung zu erzielen. Ein Skript kann für Workflows in Zusammenhang mit Pipelines, Straßen und Schnellstraßen nützlich und effizient sein.

Die Abbildung zeigt eine Ausgabe des Skripts, das zum Erzeugen eines ähnlichen Effekts wie mit dem Werkzeug

In diesem Artikel wird die Vorgehensweise beim Verwenden eines Python-Skripts beschrieben, mit dem parallele Features gezeichnet werden.

Vorgehensweise

Hinweis: Dieses Skript kann nicht bei Linienüberschneidungen verwendet werden.
  1. Klonen Sie das Linien-Feature. Weitere Informationen hierzu finden Sie unter ArcGIS Pro: Kopieren und Einfügen von Features über die Zwischenablage und ArcGIS Pro: Features kopieren (Data Management).
  2. Fügen Sie dem geklonten Linien-Feature ein Feld mit dem Name "Width" hinzu.
    1. Verwenden Sie den Befehl Feld hinzufügen in der Ansicht "Felder" des geklonten Linien-Features. Weitere Informationen hierzu finden Sie unter ArcGIS Pro: Ansicht "Felder".
    2. Geben Sie dem Feld den Namen Width, und legen Sie hierfür einen beliebigen numerischen Datentyp (long, short) fest.
    3. Geben Sie im Feld "Width" einen Wert ein, um die Breite der parallelen Linie des Linien-Features festzulegen.
  3. Öffnen Sie eine Python-Konsole oder das Python-Fenster in ArcGIS Pro.
  4. Importieren Sie die erforderlichen Module.
import os, arcpy, math
  1. Geben Sie den Workspace an.
infc=r'<Feature/Shapefile_Path>' workspace = os.path.dirname(infc) edit = arcpy.da.Editor(workspace)
  1. Starten Sie die Bearbeitung des Features.
edit.startEditing(False,True) edit.startOperation()
  1. Definieren Sie eine neue Funktion zum Erstellen der parallelen Linie.
def CopyParallel(plyP,sLength): part=plyP.getPart(0) lArray=arcpy.Array() rArray=arcpy.Array() for ptX in part: dL=plyP.measureOnLine(ptX) ptX0=plyP.positionAlongLine (dL-0.01).firstPoint ptX1=plyP.positionAlongLine (dL+0.01).firstPoint dX=float(ptX1.X)-float(ptX0.X) dY=float(ptX1.Y)-float(ptX0.Y) lenV=math.hypot(dX,dY) sX=-dY*sLength/lenV sY=dX*sLength/lenV leftP=arcpy.Point(ptX.X+sX,ptX.Y+sY) lArray.add(leftP) rightP=arcpy.Point(ptX.X-sX, ptX.Y-sY) rArray.add(rightP) array = arcpy.Array([lArray, rArray]) section=arcpy.Polyline(array) return section
  1. Starten Sie einen neuen Cursor zum Aktualisieren des geklonten Linien-Features, das die parallele Linie werden soll.
with arcpy.da.UpdateCursor(infc,("Shape@","Width")) as cursor: for shp,w in cursor: twoLines=CopyParallel(shp,w) cursor.updateRow((twoLines,w))
  1. Löschen Sie den Cursor, und beenden Sie die Bearbeitung, um die Sperre für das Feature aufzuheben.
del cursor edit.stopOperation() edit.stopEditing(True)

Nachfolgend finden Sie das vollständige Skript:

import os, arcpy, math infc=r'C:\Users\User\Desktop\Work\Sample\Test_Shapefile.shp' workspace = os.path.dirname(infc) edit = arcpy.da.Editor(workspace) edit.startEditing(False,True) edit.startOperation() def CopyParallel(plyP,sLength): part=plyP.getPart(0) lArray=arcpy.Array() rArray=arcpy.Array() for ptX in part: dL=plyP.measureOnLine(ptX) ptX0=plyP.positionAlongLine (dL-0.01).firstPoint ptX1=plyP.positionAlongLine (dL+0.01).firstPoint dX=float(ptX1.X)-float(ptX0.X) dY=float(ptX1.Y)-float(ptX0.Y) lenV=math.hypot(dX,dY) sX=-dY*sLength/lenV sY=dX*sLength/lenV leftP=arcpy.Point(ptX.X+sX,ptX.Y+sY) lArray.add(leftP) rightP=arcpy.Point(ptX.X-sX, ptX.Y-sY) rArray.add(rightP) array = arcpy.Array([lArray, rArray]) section=arcpy.Polyline(array) return section with arcpy.da.UpdateCursor(infc,("Shape@","Width")) as cursor: for shp,w in cursor: twoLines=CopyParallel(shp,w) cursor.updateRow((twoLines,w)) del cursor edit.stopOperation() edit.stopEditing(True)

Artikel-ID:000024330

Hilfe von ArcGIS-Expert*innen erhalten

Technischen Support kontaktieren

Die Esri Support-App herunterladen

Zu den Download-Optionen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden