2014-08-27 4 views
0

안녕하세요. 저는 최소한의 파이썬 경험이 있으며 왜이 형식 오류가 발생하는지 잘 모릅니다. 초기 env.workspace 이외의 다른 작업 공간에서 래스터와 함께 폴리곤 변환을 수행하려고합니다. 이것이 가능한가? 그리고 어떻게 raster2 Listasters()에 데이터 오류가 없습니까?ListRasters, TypeError : 'NoneType'개체가 반복 가능하지 않습니다.

reclassify 명령은 올바르게 작동하고 정의 된 폴더에 출력을 생성하지만 래스터에서 다각형 도구는 오류를 알리는 신호입니다.

도움을 주셔서 감사합니다. 가능한 한 빨리 작업해야합니다. 지침 또는 제안을 줄 수있는 사람에게 사전에

# 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..."` 

감사 :

여기
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 

코드입니다 : 여기

오류입니다!

+0

'arcpy.ListRasters()'는'None'을 반환합니다. 이것이 문제입니다. 나는 함수가 몇몇 매개 변수를 기대한다고 확신한다. – poke

+0

그래, 정말 고마워. 나는 그것을 시도했다. 그리고 그것은 'All'이 정의되지 않았다라고 말한다. 그래서 나는 그것을 다른 어떤 곳에서 정의해야한다. – mk24

답변

0

arcpy.ListRasters()에는 필수 인수가 없으므로 help page을 참조하십시오. Reclass 폴더에 래스터가 있습니까? 그들은 Reclassify_3d에 의해 성공적으로 생성 되었습니까? 제 생각에 outraster은 경로에서 단일 및 이중 백 슬래시를 결합 할 때 잘 이해되지 않습니다. 대신 스크립트의 처음 부분에 outraster = os.path.join(folder, raster)import os을 작성하십시오.

또한 raster2은 아마도 raster.tiff 또는 raster.jpg와 비슷할 수 있기 때문에 스크립트에서 다각형을 만드는 데 문제가 있습니다. 이것을 사용하여 출력 셰이프 파일의 이름을 지정합니다. 래스터의 확장자가있는 경우 예를 들어를 사용하여 잘라야합니다. arcpy.Describe(raster).baseName. 그리고 어떤 경우 든 출력을 폴더에 저장하면서 .shp을 추가하십시오.

편집 : 두 번째 작업 공간에 오타가 , 당신은 r"C:Users\mkelly\Documents\Namibia\Raster_Water\1993\Reclass"에서 C 후 \를 잊어 버렸습니다. 작업 공간이 잘못되었으므로 래스터 목록이 비어 있습니다.

래스터는 어떤 형식입니까? 확장자 (예 : '.tiff')는 출력 셰이프 파일의 이름으로 사용되므로 제거해야합니다. 저것은 나가 '손질'에 의하여 의미하는 무슨을이다. 그리고 '.shp'을 추가해야합니다.

+0

안녕 GISGe, 당신의 도움에 대해 당신에게 정말로 감사합니다. Reclass 폴더에는 래스터가 있으며, 나는 그것을 열고 Arcmap을 열 수 있습니다. 나는 또한 제안한 것처럼 outraster = os.path.join (폴더, 래스터)을 import os로 추가하려고 시도했지만 arcpy.ListRasters ("", "All")의 raster2에 대해 'NoneType') 선. – mk24

+0

확장 기능을 잘라내는 것이 무슨 뜻인지 잘 모르겠지만 내 파일은 13 자 (경로, 행, 연도 및 줄리안 날짜 포함)이므로 확장자를 추가 할 수 없거나 이름이 잘못되었습니다. 너무 오래. 이 때문에 "_poly"확장명을 추가하고 원본과 동일한 폴더에 유지하는 대신 출력을 새 폴더에 추가합니다. arcpy.Describe (raster) .baseName을 시도했는데 이제는 새로운 오류가 발생합니다. – mk24

+0

편집 된 답변보기 – GISGe