gdal_calc.py - 如何正确使用numpy.any()?

时间:2016-09-19 13:14:10

标签: python numpy

我在单独的tif文件中有R,G,B波段。每个文件都有掩码,其中没有数据值为0。 以下命令可以完成工作:

gdal_calc.py -A red.tif --A_band=2 -B green.tif --B_band=2 -C blue.tif --C_band=2 --outfile=mask.tif --calc="255*logical_or(logical_or(A==0,B==0),C==0)" --NoDataValue=255

但是,我可以有更多的band,我想使用numpy.any()动态生成命令:

gdal_calc.py -A red.tif --A_band=2 -B green.tif --B_band=2 -C blue.tif --C_band=2 --outfile=mask.tif --calc="255*any([A==0,B==0,C==0])" --NoDataValue=255

然而,似乎any()总是返回True而mask.tif的所有像素值都是255.我想使用255的值作为掩码,因为255 *(真/假)是0/255与0相反*(真/假)始终为0.

感谢您的帮助。

修改

通过dnalow注释,我将轴参数添加为0并且命令正常工作:

gdal_calc.py -A red.tif --A_band=2 -B green.tif --B_band=2 -C blue.tif --C_band=2 --outfile=mask.tif --calc="255*any([A==0,B==0,C==0],axis=0)" --NoDataValue=255

0 个答案:

没有答案