다각형 피쳐 클래스를 복제하고 모든 다각형을 x 및 y 방향으로 약 10 피트 오프셋합니다. 지난주 에이 작업을 수행 할 수있는 방법이 있는지 물어 보았고 arcpy를 사용하여 내 자신의 파이썬 스크립트를 만들어야한다고 들었습니다. arcpy를 사용하여 자체 스크립트를 만들었지 만 작동하지 않습니다.
import arcpy
from arcpy import env
import os
env.overwriteOutput = True
# Get arguments:
# Input polygon feature class
# Output polygon feature class
#
inputFeatureClass = arcpy.GetParameterAsText(0)
outputFeatureClass = arcpy.GetParameterAsText(1)
xShift = arcpy.GetParameterAsText(2)
yShift = arcpy.GetParameterAsText(3)
shapeName = arcpy.Describe(inputFeatureClass).shapeFieldName
# Create the output feature class with the same fields and spatial reference as the input feature class
arcpy.CreateFeatureclass_management(os.path.dirname(outputFeatureClass), os.path.basename(outputFeatureClass), "POLYGON", inputFeatureClass, "", "", inputFeatureClass)
# Create a search cursor to iterate through each row of the input feature class
inrows = arcpy.SearchCursor(inputFeatureClass)
# Create an insert cursor to insert rows into the output feature class
outrows = arcpy.InsertCursor(outputFeatureClass)
# Create empty Point and Array objects
pntArray = arcpy.Array()
partArray = arcpy.Array()
# Loop through each row/feature
for row in inrows:
# Create the geometry object
feature = row.getValue(shapeName)
partnum = 0
# Count the total number of points in the current multipart feature
partcount = feature.partCount
while partnum < partcount:
part = feature.getPart(partnum)
pnt = part.next()
pntcount = 0
# Enter while loop for each vertex
#
while pnt:
pnt = part.next()
shiftedPoint = arcpy.Point()
try:
shiftedPoint.ID = pnt.ID
shiftedPoint.X = pnt.X + float(xShift)
shiftedPoint.Y = pnt.Y + float(yShift)
except AttributeError:
continue
#shiftedPoint = arcpy.Point(float(pnt.X) + float(xShift), float(pnt.Y) + float(yShift))
pntArray.add(shiftedPoint)
pntcount += 1
# If pnt is null, either the part is finished or there is an
# interior ring
#
if not pnt:
pnt = part.next()
if pnt:
arcpy.AddMessage("Interior Ring:")
# Create a polygon using the array of points
polygon = arcpy.Polygon(pntArray)
# Empty the array for the next run through the loop
pntArray.removeAll()
# Add the polygons (or 'parts') to an array. This is necessary for multipart features, or those with holes cut in them
partArray.add(polygon)
arcpy.AddMessage("Added a polygon to the partArray!")
partnum += 1
# Create a new row object that will be inserted into the ouput feature class. Set newRow = row so that it has the same attributes
# Set newRow.shape = partArray so that the only thing different about this new feature is that its geometry is different (shifted)
newRow = row
newRow.shape = partArray
outrows.insertRow(newRow)
# Empy the array for the next run through the loop
partArray.removeAll()
del inrows, outrows
70 행에서이 오류가 계속 발생합니다.
<type 'exceptions.ValueError'>: Array: Add input not point nor array object
입력을 배열로 정의했기 때문에 왜이 오류가 발생하는지 알 수 없습니다.
왜 내가이 오류가 발생하는지 알고 있습니까?