2015-01-29 5 views
0

래스터에서 반복되는 값을 계산하여 dict에 저장하고 싶습니다. 어떻게해야합니까? 나는 코딩을했는데 문제가 해결되지 않으면 작동하지 않는다.ArcPy를 사용하여 Raster에서 계산을하고 싶습니다.

import numpy as np 
import arcpy 
from arcpy import env 

env.workspace = r"D:Results" 
rasterlist = arcpy.ListRasters() 
array = arcpy.RasterToNumPyArray(raster,nodata_to_value=0) 
array1 = np.reshape(array, (1,np.product(array.shape))) 

mydict = {} 
for i in array1: 
    if i in mydict: 
     mydict[i] += 1 
    else: 
     mydict[i] = 1 
print mydict 

이 사실 난 다음 공식을 구현하려는 : g가 연결 그룹과 TP의 번호입니다 p 번째 그룹에있는 데이터의 수입니다 1.png 아래에있는 내 코드입니다. 예를 들어, 시퀀스 {23, 24, trace, 6, trace, 24, 24, trace, 23}에서 g = 3, t {= 2, tied 값 23, t2 = 3, 3 개의 추적 값에 대해 r3 = 3, 여기서 n은 1입니다.

답변

1

제공 한 코드에 따르면 "raster"변수가 정의되지 않았을 수 있습니다. 이 같은 것이 작동 할 수도 있습니다.

rasterlist = arcpy.ListRasters() 
raster = rasterlist[0] #The first item in rasterlist 
array = arcpy.RasterToNumPyArray(raster,nodata_to_value=0) 

이 기능이 도움이되기를 바랍니다. 정확히 어떤 오류가 발생했는지에 대한 자세한 내용도 유용 할 것입니다.