gdal_calc.py Проблема NoDataValue - PullRequest
       69

gdal_calc.py Проблема NoDataValue

0 голосов
/ 01 ноября 2018

Как я вижу из исходного файла 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, не устанавливая их заранее в виде пикселей.

Помимо обходных путей, которые, конечно, существуют, в чем здесь проблема? Есть ли решение?

...