Я пытаюсь взять вершины из многоугольника и сделать с ними что-то, чтобы воссоздать многоугольник в новом месте / повороте (по сути, это: https://community.esri.com/thread/46497). Пример кода ниже не совсем то, что я делаю , но демонстрирует проблему. Код будет работать за исключением того, что после того, как он захватит последнюю вершину многоугольника, он выдаст сообщение об ошибке, которое нарушает сценарий и останавливает все остальное для запуска рисования нового многоугольника. В противном случае, если я пройду код построчно я могу продолжить и создать новую функцию полигона:
AttributeError: объект 'NoneType' не имеет атрибута 'X'
Есть ли способ, которым я могу использовать цикл для прохождения через все, кроме "последней" вершины, которая либо имеет проблему, либо не существует?
import arcpy
import os
import random
import math
pa = 'protected_areas' # protected areas
sr = arcpy.Describe(pa).spatialReference # spatial ref
sa = 'study_area' # study area
x = [] # placeholder
with arcpy.da.SearchCursor(pa,'SHAPE@',spatial_reference=sr) as cursor: # for each polygon
for row in cursor:
centroid = row[0].centroid # calculate centroid
poly = row[0]
for part in poly: # for each polygon part
for pnt in part: # for each vertex
x.append(pnt.X)