Estou tentando processar alguns arquivos raster bioclimáticos, como os que podem ser baixados em http://www.worldclim.org/current (conjunto bioclim). Eles parecem ter valores nodata definidos de -3.4e+38
acordo com o QGIS (olhando para a saída do gdalinfo, é -3.39999999999999996e+38
).
Parece que as ferramentas gdal não são capazes de lidar com esse valor nodata, e o qgis também não parece reconhecê-lo. No estilo da camada, há uma entrada para -3,4e + 38 definida como 100% transparente, mas ainda exibe esses valores, mesmo que o seletor "Identificar recursos" mostre-os como tendo o valor -3,4e + 38.
Tentei criar um vrt para converter os valores de nodata para -9999, mas isso também não funcionou.
Como posso processar esses arquivos para terem valores de nodata utilizáveis?
Respostas:
GDAL pode lidar com esses valores. De fato, o valor NoData padrão do GDAL é praticamente o mesmo que o seu. Eu acho que o problema é um erro de ponto flutuante no QGIS. Eu tenho o mesmo problema com valores NoData de ponto flutuante.
Se você quiser alterar o valor NoData usando GDAL, poderá usar gdalwarp ou talvez gdal_translate e definir o valor nodata como um número inteiro a partir daí (-dstnodata e -a_nodata, respectivamente). Para começar, tive sucesso ao definir meu NoData Value como -999 em uma varredura de 64 bits no passado. No entanto, considerando que estabelecemos que há um problema de ponto flutuante nesse sentido, não gostaria de garantir que isso funcione em todos os casos.
fonte
gdal_translate -a_nodata -9999 input.tif output.tif
embora tenhagdalwarp -dstnodata -9999 input.tif output.tif
feito o truque. De um arquivo de entrada de 9 MB, minha abordagem resultou em um arquivo de 26 MB, enquanto o gdalwarp resultou em um arquivo de saída de 52 MB. No entanto, se a varredura contiver valores flutuantes, minha abordagem não funcionará onde esta.-co COMPRESS=LZW
.Consegui encontrar uma solução alternativa para esse problema convertendo o formato de dados para Int16 do Float32. O valor mínimo é então -32768 e pode ser processado como um valor nodata. O seguinte comando fez o truque:
Provavelmente existe uma solução melhor, mas isso resolve meu problema imediato, pelo menos.
fonte
A resposta a esta pergunta provavelmente também resolveria este problema: Alterando os pixels de nodata de -3.40282347e + 38 para um número diferente no QGIS
Em resumo, você pode usar r.null na caixa de ferramentas de processamento para alterar os valores.
fonte
você pode tentar gdal_calc.py input.tif --outfile = output.tif --calc = "A * (A> 0)" --NoDataValue = 0
fonte