2016-01-15 50 views
2

我遇到了一個問題,在使用下面的方法創建類之前我沒有遇到過這個問題;定義類arcpy時未定義NAME

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 = ['[email protected]'] 

    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」。

OR

如果刪除 「FC = self.InFC」,並與內SearchCursor self.inFC代替FC然後我於行「與arcpy.da.SearchCursor得到一個錯誤(self.inFC,字段) 「這表明」self.inFC沒有定義「。

我已經嘗試將類定義直接粘貼到python解釋器(ArcCatalog-> Geoprocessing-> Python)中,但錯誤保持不變,所以我甚至都沒有創建類的實例,錯誤在我的類和方法定義的實際代碼中。

我的代碼或我的方法有什麼錯誤?

+0

只是爲了檢查:你的縮進是否正確,只是在這裏粘貼錯了? – Erica

+0

如果包含'if arcpy.exists(inFC):print「它存在」'在處理'pointobject'之前檢查某處,結果如何?問題可能是它得到的最初輸入。 – Erica

回答

0

問題是您的輸入參數。由於我猜測你在ArcMap中進行調試(不要那麼做,請使用PyScripter,PyCharm或至少IDLE),您可以使用arcpy.AddMessage(字符串)查看該參數的值地理處理結果消息,對於要素類應該看起來像文件路徑。在初始化課程之前,我會堅持其中之一,並且在失敗之前一次。讓我知道發生什麼事!