获取多边形的(某些)点



我试图从多边形那里抓住顶点,并向他们做一些事情以在新的位置/旋转中重新创建多边形(本质上是:https://community.esri.com/thread/46497(。下面的示例代码并不是我在做什么,而是显示问题。该代码将工作起作用,除了它抓住多边形的最后一个顶点之后,它会引发一个错误消息,该错误消息破坏脚本并停止其他所有内容,无法运行绘制新的多边形。否则,如果我逐条浏览代码,我可以继续并创建新的多边形功能:

attributeError:'nontype'对象没有属性'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)

您可以在索引上迭代并跳过LAS元素,更改

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

to

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

希望它有帮助

最新更新