Czy pobierasz współrzędne punktu początkowego i końcowego za pomocą ArcPy? [Zamknięte]

9

Jak pobrać współrzędne punktu początkowego i końcowego za pomocą ArcPy dla klasy obiektów polilinii?

Spodziewam się przekazać identyfikator segmentu do podprogramu i przekazać mu współrzędne początkowe i końcowe. Metoda kalkulatora pola nie działa dla mnie, ponieważ potrzebuję wartości do innych obliczeń, których nie można w nim wykonać. (Wolę też nie zmieniać danych, aby przechowywać te współrzędne jako atrybuty.) Próbuję obliczyć zakres adresów dla schematu adresowania „na środku”. Wartość adresu zależy od odległości do „centrum hrabstwa”.

Ivar Husa
źródło

Odpowiedzi:

15

Wydaje się, że proces ten zmienił się między ArcGIS 10.0 a 10.1. Dołączę próbkę dla obu.

Oto dokument pomocy dotyczący odczytu geometrii w 10.1 za pomocą arcpy: Reading Geometries 10.1 W
tym dokumencie omówiono parametry typu geometrii polilinii : Polyline (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

Oto dokument pomocy dotyczący odczytu geometrii w 10.0 za pomocą arcpy: Reading Geometries 10.0 W
tym dokumencie omówiono parametry obiektu Geometry : Geometry

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

Różnica między nimi polega w zasadzie na dostępie do geometrii elementu. W 10.1 dodano kilka skrótów, które ułatwiają dostęp do obiektu geometrii.

Uzyskaj przestrzenny
źródło
6

Zrobiłem to już wcześniej i wolę używać kursora wyszukiwania i czytać geometrię. Tworzy pętlę i pozwala robić cielęta na każdym kształcie.

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

Ta pętla umożliwia dodawanie do niej obliczeń i przechodzenie kształt po kształcie.

Dodatkowa pomoc znajduje się w Pomocy: Praca z geometrią w Pythonie

Cody Brown
źródło
1

Powinieneś mieć możliwość korzystania z właściwości firstPoint i lastPoint obiektu Polyline .

dwa razy
źródło