gdal_calc.py NoDataValue问题

时间:2018-11-01 17:51:19

标签: python gdal no-data

从gdal_calc.py的源文件中可以看到:

""" Perform raster calculations with numpy syntax.
Use any basic arithmetic supported by numpy arrays such as +-*\ along with logical
operators such as >. Note that all files must have the same dimensions, but no projection checking is performed.

Keyword arguments:
    [A-Z]: input files
    [A_band - Z_band]: band to use for respective input file

Examples:
add two files together:
    Calc("A+B", A="input1.tif", B="input2.tif", outfile="result.tif")

average of two layers:
    Calc(calc="(A+B)/2", A="input1.tif", B="input2.tif", outfile="result.tif")

set values of zero and below to null:
    Calc(calc="A*(A>0)", A="input.tif", A_Band=2, outfile="result.tif", NoDataValue=0)

我尝试将像素值0和以下设置为nodata,例如-10000。 从这个意义上说,我尝试以下操作:

cmd1 = 'gdal_calc -A ' + a_tif + ' --outfile=' + new_tif + ' --calc="A*(A>0)" --NoDataValue=-10000 --type="Float32" --overwrite'
os.system(cmd1)

据我了解,我声明输出将仅包含来自A波段(第一个)的像素,该像素> 0,因此其余部分将被视为无数据像素,因此分配了我想要的-10000值拥有。

在结果输出中,我想成为nodata和-10000的所有像素现在的值为0。但是它知道nodatavalues为-10000。

一个重要方面是输入栅格没有设置nodatavalues,因为它是2波段alpha合成。因此,gdal_calc.py可能无法将这些未设置的像素理解为任何东西,而是将它们设置为默认的0值,而无需事先使它们成为无数据像素。

除了变通办法之外,当然还有哪个,这里的问题是什么?有解决办法吗?

0 个答案:

没有答案