【发布时间】:2016-10-17 20:33:23
【问题描述】:
我正在尝试计算仅部分被数据覆盖的图像的统计信息。我想知道 ComputeBandStats 是否忽略与文件 nodata 具有相同值的像素。
这是我的代码:
inIMG = gdal.Open(infile)
# getting stats for the first 3 bands
# Using ComputeBandStats insted of stats array has min, max, mean and sd values
print "Computing band statistics"
bandas = [inIMG.GetRasterBand(b+1) for b in range(3)]
minMax = [b.ComputeRasterMinMax() for b in bandas]
meanSD = [b.ComputeBandStats(1) for b in bandas]
print minMax
print meanSD
对于没有 nodata 属性的图像,输出为:
Computing band statistics
[(0.0, 26046.0), (0.0, 24439.0), (0.0, 22856.0)]
[(762.9534697777777, 647.9056493556284), (767.642869, 516.0531530834181), (818.0449643333334, 511.5360132592902)]
对于 nodata = 0 的图像,输出为:
Computing band statistics
[(121.0, 26046.0), (202.0, 24439.0), (79.0, 22856.0)]
[(762.9534697777777, 647.9056493556284), (767.642869, 516.0531530834181), (818.0449643333334, 511.5360132592902)]
最小值和最大值已更改,因此 0 不再是最小值,这是有道理的,因为在第二个版本中,它是 nodata,因此不会被 ComputeRasterMinMax() 考虑。但是,均值和标准差没有改变。
这是否意味着 ComputeBandStats 不会忽略 nodata 值?
有什么方法可以强制 ComputeBandStats 忽略 nodata 值?
【问题讨论】:
标签: python python-2.7 python-3.x numpy gdal