【发布时间】:2026-02-16 01:50:02
【问题描述】:
我遇到了一个在使用以下方法创建类之前没有遇到过的问题;
class Points:
def __init__(self, inFC, buffDist, sector): #Must have a set of points and a value to buffer these by. Also, sector.
self.inFC = inFC
self.buffDist = buffDist
self.sector = sector
def getCoords(self): #getting the coordinates of the points.
fc = self.inFC
fields = ['SHAPE@XY']
coordsList = []
with arcpy.da.SearchCursor(fc, fields) as rows:
coordsList = [r[0] for r in rows]
self.coordsList = coordsList
del coordsList
在我的脚本末尾创建了类并从此代码调用了方法;
if __name__ == '__main__':
inFC = arcpy.GetParameterAsText(0)
buffDist = arcpy.GetParameterAsText(1)
sector = arcpy.GetParameterAsText(2)
outFC_data = arcpy.GetParameterAsText(3)
fcName = outFC_data.rpartition("\\")[2]
fcPath = outFC_data.rpartition("\\")[0]
outFC = arcpy.CreateFeatureclass_management(fcPath, fcName, "POLYGON")
pointobject = Points(inFC, buffDist, sector)
pointobject.getCoords()
这会在 fc = self.inFC 行返回错误“fc is not defined”。
或
如果我在 SearchCursor 中删除“fc = self.InFC”并将 fc 替换为 self.inFC,则在“with arcpy.da.SearchCursor(self.inFC, fields)”行出现错误,指出“self.inFC”。 inFC 未定义”。
我尝试将类定义直接粘贴到 python 解释器(ArcCatalog->Geoprocessing->Python),但错误仍然存在,所以我什至没有达到创建类实例的地步,错误在我的类和方法定义的实际代码中。
我的代码或方法有什么错误?
【问题讨论】:
-
只是为了检查:您的缩进是否正确,只是在这里粘贴错误?
-
如果您在处理
pointobject之前在某处包含if arcpy.exists(inFC): print "it exists"检查,结果是什么?问题可能在于它获得的初始输入。
标签: arcpy