在使用如下方法创建类之前,我遇到了一个问题;
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未定义"在fc = self.inFC。
行OR
如果我删除" fc = self.InFC"并在SearchCursor中用self.inFC替换fc然后我在第34行使用arcpy.da.SearchCursor(self.inFC,fields)"声明" self.inFC未定义"。
我已经尝试将类定义直接粘贴到python解释器(ArcCatalog-> Geoprocessing-> Python)中但是错误保持不变,所以我甚至没有达到创建类的实例的意义,错误在我的类和方法定义的实际代码中。
我的代码或方法有什么错误?
答案 0 :(得分:0)
问题是您的输入参数。由于我猜你在ArcMap中进行调试(不要那么做,使用PyScripter,PyCharm或至少IDLE),你可以使用arcpy.AddMessage( string )来查看地理处理结果消息中该参数的值,在要素类的情况下应该看起来像文件路径。在初始化课程之前,我会坚持其中一个,并且在故障点之前。让我知道会发生什么!