Recupero delle coordinate del punto iniziale e finale con ArcPy? [chiuso]


9

Come posso recuperare le coordinate del punto iniziale e finale con ArcPy per una classe di caratteristiche polilinea?

Mi aspetto di passare un identificatore di segmento a una subroutine e di riportare indietro le coordinate di inizio e fine. Il metodo Field Calculator non funziona per me, perché ho bisogno del valore per altri calcoli che non possono essere eseguiti al suo interno. (Preferisco anche non modificare i dati per memorizzare queste coordinate come attributi.) Sto tentando di calcolare l'indirizzo che va per uno schema di indirizzamento "centrato". Il valore dell'indirizzo dipende dalla distanza dal "centro della contea".

Risposte:


15

Il processo per questo sembra essere cambiato tra ArcGIS 10.0 e 10.1. Includerò un campione per entrambi.

Ecco il documento di aiuto sulla lettura delle geometrie in 10.1 usando arcpy: Reading Geometries 10.1
Questo documento discute i parametri per un tipo di geometria Polilinea : Polilinea (arcpia)

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

Ecco il documento di aiuto sulla lettura delle geometrie in 10.0 usando arcpy: Reading Geometries 10.0
Questo documento discute i parametri per un oggetto 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

La differenza tra i due fondamentalmente sta nel modo in cui si accede alla geometria della funzione. Sono stati aggiunti alcuni collegamenti in 10.1 per facilitare l'accesso all'oggetto geometria.


6

L'ho già fatto e preferisco usare un cursore di ricerca e leggere la geometria. Crea un ciclo e ti permette di fare calcoli su ogni forma.

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

Quel ciclo ti consente di aggiungere alcuni calcoli con esso e andare forma per forma.

C'è un ulteriore aiuto nella Guida: lavorare con la geometria in Python


1

Dovresti essere in grado di utilizzare le proprietà firstPoint e lastPoint dell'oggetto Polyline .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.