2014-08-27 85 views
0

您好我有非常小的python經驗,我不知道爲什麼我得到這種類型的錯誤。我正嘗試使用與初始env.workspace不同的工作空間中的柵格對柵格進行柵格轉換。這可能嗎?那麼在raster2 Listasters()中怎麼會有一個沒有數據錯誤?ListRasters,TypeError:'NoneType'對象不可迭代

重新分類命令工作正常,並在定義的文件夾中創建輸出,但柵格到多邊形工具是指示錯誤的信號。

感謝您的幫助,我需要儘快完成這項工作。

以下是錯誤:

Traceback (most recent call last): 
    File "C:\Users\mkelly\Documents\Namibia\Raster_Water\Script_try2.py", line 30, in <module> 
    for raster2 in arcpy.ListRasters(): 
TypeError: 'NoneType' object is not iterable 

下面是代碼:

# Import arcpy module 
import arcpy 
from arcpy import env 

arcpy.env.overwriteOutput = True 

# Check out any necessary licenses 
arcpy.CheckOutExtension("3D") 

#Set the workplace 
arcpy.env.workspace = r"C:\Users\mkelly\Documents\Namibia\Raster_Water\1993" 

#for all files in 1993, reclassify to water only rasters 
for raster in arcpy.ListRasters(): 
    folder = r"C:\Users\mkelly\Documents\Namibia\Raster_Water\1993\Reclass" + "\\" 
    outraster = folder + raster 
    arcpy.Reclassify_3d(raster, "Value", "1 1", outraster, "NODATA") 

#Can I set up a new env workspace to get reclassified rasters from "Reclass" folder? 
arcpy.env.workspace = r"C:Users\mkelly\Documents\Namibia\Raster_Water\1993\Reclass" 

#for all files in 1993\Reclass, perform RastertoPolygon 
for raster2 in arcpy.ListRasters(): 
    folder2 = r"C:\Users\mkelly\Documents\Namibia\Raster_Water\1993\Polygons" + "\\" 
    outraster2 = folder2 + raster2 
    arcpy.RasterToPolygon_conversion(raster2, outraster2, "NO_SIMPLIFY", "VALUE") 

print "end Processing..."` 

在此先感謝任何人,可以給予指導或建議!

+0

'arcpy.ListRasters()'返回'None',那就是你的問題。我很確定這個函數需要一些參數。 – poke 2014-08-27 17:28:58

+0

好的,非常感謝。我試過了,它說'所有'沒有定義,所以也許我必須在其他地方定義它 – mk24 2014-08-27 17:36:25

回答

0

arcpy.ListRasters()不帶任何強制性參數,請參閱help page。你確定Reclass文件夾中有任何柵格嗎?他們是否成功創建了Reclassify_3d?我的猜測是,outraster不是很好理解,因爲您在路徑中組合單反斜槓和雙反斜槓。相反,在腳本的開頭寫入outraster = os.path.join(folder, raster)import os

此外,該腳本在創建多邊形時會遇到麻煩,因爲raster2可能類似於raster.tiff或raster.jpg。您正在使用它來命名您的輸出shapefile。如果你的光柵有一個擴展名,你應該用例如arcpy.Describe(raster).baseName。無論如何,在將輸出保存在文件夾中時,請添加.shp

編輯: 有第二工作區中的錯字,你忘了的C後\r"C:Users\mkelly\Documents\Namibia\Raster_Water\1993\Reclass"。 工作空間錯了,所以你的柵格列表是空的。

你的柵格是什麼格式?擴展名(例如'.tiff')將用於輸出shapefile的名稱中,因此您必須將其刪除。這就是我所說的「修剪」。你應該添加'.shp'

+0

嗨GISGe,非常感謝你的幫助。 Reclass文件夾中有柵格,我可以打開它們和Arcmap,它們看起來就像它們應該那樣。正如你所建議的那樣,我也試着用import os添加outraster = os.path.join(文件夾,光柵),但是我仍然在arcpy.ListRasters(「」,「All」)中獲得了raster2的'NoneType' )線。 – mk24 2014-08-28 15:39:00

+0

我不太清楚你的修剪擴展名是什麼意思,但我的文件是13個字符(包括路徑,行,年和朱利安日期),所以我不能添加任何擴展名,或者我得到名稱爲太長。這就是爲什麼我將輸出添加到新文件夾而不是僅添加「_poly」擴展名並將它們保留在與原始文件夾相同的文件夾中。我嘗試了arcpy.Describe(柵格).baseName,現在我得到一個新的錯誤 – mk24 2014-08-28 15:43:32

+0

請參閱編輯答案 – GISGe 2014-08-29 09:00:30