2014-08-27 53 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