Получение (несколько) точек многоугольника - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь взять вершины из многоугольника и сделать с ними что-то, чтобы воссоздать многоугольник в новом месте / повороте (по сути, это: 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)

1 Ответ

1 голос
/ 26 июня 2019

Вы можете перебрать индекс и пропустить элемент las, изменив

 for pnt in part: # for each vertex
      x.append(pnt.X)

на

for k in range(len(pnt)-1): # for each vertex
    x.append(pnt[k].X)

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...