定义类arcpy时未定义NAME

时间:2016-01-15 14:43:41

标签: arcpy

在使用如下方法创建类之前,我遇到了一个问题;

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)中但是错误保持不变,所以我甚至没有达到创建类的实例的意义,错误在我的类和方法定义的实际代码中。

我的代码或方法有什么错误?

1 个答案:

答案 0 :(得分:0)

问题是您的输入参数。由于我猜你在ArcMap中进行调试(不要那么做,使用PyScripter,PyCharm或至少IDLE),你可以使用arcpy.AddMessage( string )来查看地理处理结果消息中该参数的值,在要素类的情况下应该看起来像文件路径。在初始化课程之前,我会坚持其中一个,并且在故障点之前。让我知道会发生什么!