想要使用 ArcPY 对栅格进行一些计算
Want to do some computation on Raster using ArcPY
我想从栅格中计算重复值并将其保存到字典中,我该怎么做?我已经完成了一些编码,但它不起作用帮助我解决问题。下面是我的代码:
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
其实我想实现下面的公式:
1.png
其中 g 是绑定组的数量,tp 是第 p 组中的数据数量。例如,在序列 {23, 24, trace, 6, trace, 24, 24, trace, 23} 中,我们有 g = 3,t{ = 2 表示绑定值 23,t2 = 3 表示绑定值 24,对于三个跟踪值,r3 = 3,其中 n = 1
根据您提供的代码,问题可能是 "raster" 变量未定义。这样的事情可能会奏效:
rasterlist = arcpy.ListRasters()
raster = rasterlist[0] #The first item in rasterlist
array = arcpy.RasterToNumPyArray(raster,nodata_to_value=0)
希望这对您有所帮助。关于您遇到的错误的更多详细信息也很有用。
汤姆
我想从栅格中计算重复值并将其保存到字典中,我该怎么做?我已经完成了一些编码,但它不起作用帮助我解决问题。下面是我的代码:
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
其实我想实现下面的公式: 1.png 其中 g 是绑定组的数量,tp 是第 p 组中的数据数量。例如,在序列 {23, 24, trace, 6, trace, 24, 24, trace, 23} 中,我们有 g = 3,t{ = 2 表示绑定值 23,t2 = 3 表示绑定值 24,对于三个跟踪值,r3 = 3,其中 n = 1
根据您提供的代码,问题可能是 "raster" 变量未定义。这样的事情可能会奏效:
rasterlist = arcpy.ListRasters()
raster = rasterlist[0] #The first item in rasterlist
array = arcpy.RasterToNumPyArray(raster,nodata_to_value=0)
希望这对您有所帮助。关于您遇到的错误的更多详细信息也很有用。
汤姆