Na documentação do gdal_calc , é apresentada a calculadora raster de linha de comando com sintaxe numpy . Mais tarde, existem poucos exemplos em que um deles:
gdal_calc.py -A input.tif --outfile = result.tif --calc = "A * (A> 0)" --NoDataValue = 0 - significa definir valores de zero e abaixo como nulos
Infelizmente, não há exemplo em operadores lógicos como:
--calc = "A * (A> 0 e A> B)" - significa manter A se A maior zero e maior B e definir o restante como nulo
Com base nas funções lógicas Numpy / Scipy, eu esperaria escrever operadores lógicos como:
--calc = "A * lógica_e (A> 0, A> B)"
Eu tentei isso e parece funcionar, mas gostaria de ter certeza de que está correto.
Da mesma forma, se você deseja um mínimo de A e B:
--calc = "A * (A <= B) + B * (A> B)"
Você pode simplesmente escrever:
--calc = "mínimo (A, B)"
Meu problema é que não consigo encontrar nenhum livro de receitas para garantir que esteja certo. Existe algum bom livro de receitas com exemplos avançados do que é e não é possível com o gdal_calc?
Seguindo a resposta de Benjamin, você pode usar logic_or () ou logic_and (). Consulte http://docs.scipy.org/doc/numpy/reference/routines.logic.html . O exemplo a seguir funcionou bem para mim. Isso define todos os valores entre 177 e 185 (inclusive) para 0, que é tratado como nodata.
fonte
Eu tinha uma varredura em que os valores variavam entre -1 e 3, em que zero é um número válido. Eu tive alguns problemas ao criar uma expressão gdal_calc, então criei esta solução rápida e furiosa.
fonte