Start- und Endpunktkoordinaten mit ArcPy abrufen? [geschlossen]

9

Wie rufe ich mit ArcPy Start- und Endpunktkoordinaten für eine Polylinien-Feature-Class ab?

Ich erwarte, eine Segmentkennung an eine Unterroutine zu übergeben und Start- und Endkoordinaten zurückgeben zu lassen. Die Feldrechner-Methode funktioniert bei mir nicht, da ich den Wert für andere Berechnungen benötige, die darin nicht ausgeführt werden können. (Ich ziehe es auch vor, die Daten nicht zu ändern, um diese Koordinaten als Attribute zu speichern.) Ich versuche, den Adressbereich für ein Adressierungsschema "Center Out" zu berechnen. Der Adresswert hängt von der Entfernung zum "County Center" ab.

Ivar Husa
quelle

Antworten:

15

Der Prozess hierfür scheint sich zwischen ArcGIS 10.0 und 10.1 geändert zu haben. Ich werde für beide ein Beispiel beifügen.

Hier ist das Hilfedokument zum Lesen von Geometrien in 10.1 mit arcpy: Lesen von Geometrien 10.1 In
diesem Dokument werden die Parameter für einen Polylinien-Geometrietyp erläutert : Polylinie (arcpy)

10.1

import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
#
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
    # Print the current line ID

    print("Feature {0}:".format(row[0]))

    #Set start point
    startpt = row[1].firstPoint

    #Set Start coordinates
    startx = startpt.X
    starty = startpt.Y

    #Set end point
    endpt = row[1].lastPoint

    #Set End coordinates
    endx = endpt.X
    endy = endpt.Y

10.0

Hier ist das Hilfedokument zum Lesen von Geometrien in 10.0 mit arcpy: Lesen von Geometrien 10.0 In
diesem Dokument werden die Parameter für ein Geometrieobjekt erläutert: Geometrie

import arcpy

infc = arcpy.GetParameterAsText(0)

# Identify the geometry field
#
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName

# Create search cursor
#
rows = arcpy.SearchCursor(infc)

# Enter for loop for each feature/row
#
for row in rows:
    # Create the geometry object
    #
    feat = row.getValue(shapefieldname)

    # Print the current line ID
    #
    print "Feature %i:" % row.getValue(desc.OIDFieldName)

    #Set start point
    startpt = feat.firstPoint

    #Set Start coordinates
    startx = startpt.X
    starty = startpt.Y

    #Set end point
    endpt = feat.lastPoint

    #Set End coordinates
    endx = endpt.X
    endy = endpt.Y

Der Unterschied zwischen den beiden liegt im Wesentlichen darin, wie Sie auf die Feature-Geometrie zugreifen. In 10.1 wurden einige Verknüpfungen hinzugefügt , um den Zugriff auf das Geometrieobjekt zu erleichtern.

Holen Sie sich räumlich
quelle
6

Ich habe dies schon einmal gemacht und bevorzuge es, einen Suchcursor zu verwenden und die Geometrie zu lesen. Es erstellt eine Schleife und ermöglicht es Ihnen, Berechnungen für jede Form durchzuführen.

inFeatures = "Feature"
shapeName = arcpy.Describe (inFeatures).shapeFieldName
rows = arcpy.SearchCursor(inFeatures)
for row in rows:
    feat = row.getValue(shapeName)
    xy1 = feat.firstPoint
    xy2 = feat.lastPoint

Mit dieser Schleife können Sie einige Berechnungen hinzufügen und Form für Form gehen.

In der Hilfe finden Sie einige zusätzliche Hilfen: Arbeiten mit Geometrie in Python

Cody Brown
quelle
1

Sie sollten in der Lage sein, die Eigenschaften firstPoint und lastPoint des Polylinienobjekts zu verwenden .

twospeeder
quelle