Recuperando coordenadas de ponto inicial e final com o ArcPy? [fechadas]

9

Como recupero as coordenadas de ponto inicial e final com o ArcPy para uma classe de recurso de polilinha?

Espero passar um identificador de segmento para uma sub-rotina e fazer com que ela passe de volta as coordenadas de início e fim. O método da calculadora de campo não funciona para mim, porque preciso do valor para outros cálculos que não podem ser executados nele. (Também prefiro não alterar os dados para armazenar essas coordenadas como atributos.) Estou tentando calcular o intervalo de endereços para um esquema de endereçamento "centralizado". O valor do endereço depende da distância do "centro do condado".

Ivar Husa
fonte

Respostas:

15

O processo para isso parece ter mudado entre o ArcGIS 10.0 e 10.1. Vou incluir uma amostra para ambos.

Aqui está o documento de ajuda sobre a leitura de geometrias na 10.1 usando o arcpy: Reading Geometries 10.1
Este documento discute os parâmetros para um tipo de geometria da polilinha : 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

Aqui está o documento de ajuda sobre a leitura de geometrias na 10.0 usando o arcpy: Reading Geometries 10.0
Este documento discute os parâmetros para um objeto 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

A diferença entre os dois reside basicamente em como você acessa a geometria do recurso. Alguns atalhos foram adicionados na versão 10.1 para facilitar o acesso ao objeto de geometria.

Get Spatial
fonte
6

Já fiz isso antes e prefiro usar um Cursor de Pesquisa e ler a geometria. Ele cria um loop e permite fazer cálculos em cada 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

Esse loop permite adicionar alguns cálculos e dar forma a forma.

Há alguma ajuda extra na Ajuda: Trabalhando com geometria no Python

Cody Brown
fonte
1

Você deve poder usar as propriedades firstPoint e lastPoint do objeto Polyline .

twospeeder
fonte