मैं एक बहुभुज सुविधा वर्ग की नकल करना चाहता हूं और सभी बहुभुजों को x और y दोनों दिशाओं में लगभग 10 फीट तक भर देना चाहता हूं। मैंने पूछा कि क्या पिछले सप्ताह ऐसा करने का कोई तरीका था, और मुझे सूचित किया गया था कि मुझे सबसे अधिक संभावना होगी कि मैं आर्कपी का उपयोग करके अपनी खुद की पायथन स्क्रिप्ट बनाऊं। मैंने अपना स्क्रिप्ट आर्कपी का उपयोग करके बनाया है, लेकिन यह काम नहीं कर रहा है:
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
मैं यह पता नहीं लगा सकता कि मुझे यह त्रुटि क्यों दी जा रही है, क्योंकि मैंने इनपुट को एक सरणी के रूप में परिभाषित किया है।
क्या किसी को पता है कि मुझे यह त्रुटि क्यों हो रही है?