Как я вижу из исходного файла 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)
Как я понимаю, я утверждаю, что выходные данные будут состоять только из пикселей из диапазона А (первых), которые> 0, и в результате остальные будут считаться пикселями ноданных, таким образом назначается значение -10000, которое я хочу им иметь.
В результате выведите все пиксели, которые я хотел бы превратить в nodata, и -10000 теперь имеют значение 0. Однако он понимает, что nodatavalues равно -10000.
Одним из важных аспектов является то, что входной растр не установил nodatavalues, поскольку это двухполосный альфа-композит. Таким образом, gdal_calc.py, вероятно, не воспринимает эти неустановленные пиксели как что-либо и устанавливает для них значение по умолчанию 0, не устанавливая их заранее в виде пикселей.
Помимо обходных путей, которые, конечно, существуют, в чем здесь проблема? Есть ли решение?