Eu tenho um conjunto de rasters (.vrt) com dados diários de umidade do solo. Quero somar os pixels de todos os rasters para ter uma medida por mês. No entanto, o mundo inteiro não é coberto todos os dias, o que resulta em valores nodata em locais onde as medidas existem nos outros dias.
O que eu quero fazer é somar os valores de cada raster. No entanto, parece que cada vez que um pixel nodata está na soma, o pixel resultante é categorizado diretamente como nodata. Eu gostaria de ter o oposto: ignorando todos os valores nodata e somando o resto.
Pensei em duas maneiras de resolver o problema:
- somando rasters ignorando valores nodata
- conversão de pixels nodata no valor 0 e, em seguida, somar todas as rasters
Infelizmente, não consigo encontrar nenhuma ferramenta para fazer isso.
Alguém pode me ajudar?
Respostas:
Se você tiver acesso ao ArcGIS, a ferramenta Cell Statistics tem o opcional de ignorar os nodata que você soma \ mean \ min \ max suas rasters.
fonte
Primeiramente, você pode usar gdal_calc.py para alterar todos -9999 para 0 e definir o valor NoData como 0.
Por exemplo:
Em seguida, você pode ignorar o valor NoData usando gdal_translate com a opção -a_nodata seguida por none .
Exemplo:
fonte
gdal_translate -a_nodata none ...
. Por exemplo:gdal_calc.py -A input.tif --outfile=input_with_NoData.tif --type=Int16 --calc="A+9999*(A==-9999)" --NoDataValue=0
cd
comando e tente novamente apenas para ter-A test.tif
.Em R:
fonte
s
, com o argumentona.rm=TRUE
resultando emNA
valores sendo ignorados. Objeto de saídass
é umraster
objeto que pode ser exportado comwriteRaster
(consulte?writeRaster
). (@RobertH é o criador do Rraster
pacote.)A Ferramenta Condicional no Spatial Analyst é uma maneira fácil de converter valores nulos em zeros. Então, tomar as somas deve ser rápido.
fonte
Eu tive o mesmo problema há um tempo atrás e consegui resolvê-lo.
Assim como uma observação sobre a exibição dos valores de nodata no QGIS: os valores de nodata são sempre mostrados como valores de nodata na janela do mapa e ao usar a ferramenta "informações do objeto", não importa se eles realmente têm o valor -9999, 0, NULL etc. Portanto, após a reclassificação dos valores de nodata para 0, se você selecionar as configurações da camada, encontrará nos metadados que os nodata têm o valor 0.
Finalmente encontrei a ferramenta perfeita para a missão, o GRASS
r.series
. Com a configuração "operação agregada" "máximo" e os "NULLs de propagação" desmarcados, a ferramenta criará uma Camada que atenda às suas necessidades.fonte
Lembro-me de ter esse problema há um tempo. Como solução, acho que fiz +1 em todas as células da varredura, adicionei os rasters juntos e fiz uma subtração final (de quantos + 1s você adicionou). É bem grosseiro, mas se o trabalho for feito ...!
Como alternativa, use os 'Reclassificar valores da grade' na caixa de ferramentas Processando no QGIS para converter seus valores nulos em zero.
fonte