Получение координат начальной и конечной точки с помощью ArcPy? [закрыто]

9

Как получить координаты начальной и конечной точек с помощью ArcPy для класса объектов полилинии?

Я ожидаю передать идентификатор сегмента в подпрограмму и вернуть его начальные и конечные координаты. Метод Калькулятор поля не работает для меня, потому что мне нужно значение для других вычислений, которые не могут быть выполнены в нем. (Я также предпочитаю не изменять данные, чтобы сохранить эти координаты в качестве атрибутов.) Я пытаюсь рассчитать диапазон адресов для схемы адресации "от центра". Значение адреса зависит от расстояния до «центра округа».

Ивар Хуса
источник

Ответы:

15

Процесс для этого, кажется, изменился между ArcGIS 10.0 и 10.1. Я включу образец для обоих.

Вот справочный документ по чтению геометрии в 10.1 с использованием arcpy: Чтение геометрии 10.1 В
этом документе обсуждаются параметры для типа геометрии Polyline : 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

Вот справочный документ по чтению геометрии в 10.0 с использованием arcpy: Reading Geometries 10.0 В
этом документе обсуждаются параметры для объекта 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

Разница между ними заключается в том, как вы получаете доступ к геометрии объекта. В 10.1 было добавлено несколько ярлыков, чтобы упростить доступ к объекту геометрии.

Получить Пространственный
источник
6

Я делал это раньше и предпочитаю использовать курсор поиска и читать геометрию. Он создает цикл и позволяет выполнять вычисления для каждой фигуры.

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

Этот цикл позволяет вам добавлять некоторые расчеты и изменять их форму.

В справке есть некоторая дополнительная помощь: Работа с геометрией в Python

Коди Браун
источник
1

Вы должны иметь возможность использовать свойства firstPoint и lastPoint объекта Polyline .

twospeeder
источник