【问题标题】:NAME is not defined when defining class arcpy定义类 arcpy 时未定义 NAME
【发布时间】: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


【解决方案1】:

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

【讨论】: