ฉันต้องการคัดลอกคลาสคุณลักษณะรูปหลายเหลี่ยมและชดเชยรูปหลายเหลี่ยมทั้งหมดประมาณ 10 ฟุตในทิศทาง x และ y ฉันถามว่ามีวิธีการทำสัปดาห์นี้หรือไม่และฉันได้รับแจ้งว่าฉันน่าจะต้องสร้างสคริปต์ของตัวเองโดยใช้อาร์คปี ฉันสร้างสคริปต์ของตัวเองโดยใช้ 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
ฉันไม่สามารถหาสาเหตุที่ทำให้เกิดข้อผิดพลาดนี้ได้เนื่องจากฉันกำหนดอินพุตเป็นอาร์เรย์
ไม่มีใครรู้ว่าทำไมฉันถึงได้รับข้อผิดพลาดนี้?