Eu tenho uma varredura DEM com valores de pixel entre cerca de 3000 e -0.0003. Preciso definir todos os pixels com o valor 0 e menor (<= 0) como "nodata" (para cálculos de varredura posteriores e para reduzir o tamanho do arquivo).
Parece-me que esta é uma tarefa para a calculadora raster (definir valor de pixels <= 0 para "nodata") ou uma reclassificação (definir valor de pixels <= 0 para "nodata" e manter todos os outros valores), mas eu não saber como.
Respostas:
Não encontrei uma solução de uma ferramenta, mas você pode primeiro usar a calculadora raster para zerar todos os valores abaixo de um determinado limite e, em seguida, usar gdal_translate com -a_nodata 0 para transformar 0 em nodata.
fonte
Aqui estão as expressões mapcalc do GRASS para definir um intervalo como NULL:
fonte
Isso pode ser feito em uma etapa do QGIS na calculadora raster.
No QGIS3, para uma camada raster denominada "x", use a seguinte expressão:
Esse truque mapeia os valores de varredura x> 0 na proporção x / 1 = x, e os valores de varredura x <= 0 na proporção 0/0 = NaN. Esse NaN é renderizado como FLOAT_MIN (também conhecido como -3.402832 ... e + 38) se a varredura for flutuante de 4 bytes.
Estranhamente, essa pergunta parece ter sido feita há algum tempo, com (até onde minha pesquisa rápida no Google mostra hoje) a maioria dos entrevistados dizendo que não pode ser feita em uma única etapa. Certamente não deveria ser invadido dessa maneira. A documentação do QGIS também poderia ser melhor.
fonte
Muito obrigado a Dominik. Minha primeira resposta não está correta para o QGIS 2.8.3 (a expressão
"myraster@1" > 0
retorna 0 ou 1 para entrada não nodata , para entrada nodata ela retorna nodata ).A seguinte expressão da Calculadora de varredura QGIS deve ser suficiente (camada raster denominada "myraster"), pois a Calculadora de varredura QGIS define todos os pixels que não satisfazem a condição como nodata :A solução a seguir é baseada em https://docs.qgis.org/2.8/en/docs/training_manual/processing/no_data.html e funciona no QGIS 2.8.3 com SAGA 2.1.2.
No processamento QGIS, use a calculadora SAGA Raster e digite o seguinte na fórmula :
ou
Isso transformará todos os valores menores ou iguais a 0 em nodata (0/0).
fonte
Você também pode salvar a camada (clique com o botão direito, salvar como ...) e especificar um intervalo de nodata. Isso manterá os nodatas originais e criará novos nodatas para o intervalo de valores especificado.
fonte
Eu tive um problema semelhante, mas tinha os dois valores que desejava converter para dados sem dados E valores sem dados existentes na varredura.
Vim a esta página para obter ajuda, mas acho que há uma ressalva nas abordagens aqui. Os métodos do @underdark e do @Micha parecem funcionar apenas onde não há valores sem dados existentes na varredura.
Para contornar isso, você precisa converter os valores sem dados e os valores que deseja converter em sem dados, em um número consistente. Não há problema em usar o segundo passo do @underdark.
Para fazer isso, use a Caixa de ferramentas de processamento> Reclassificar valores de grade (SAGA) para converter os valores e os valores sem dados em um número comum (por exemplo, -999), ao mesmo tempo. Especificamente, use o método "range" e especifique o intervalo. Em seguida, em substituir valores sem dados, escolha esse mesmo valor (por exemplo, -999). Desmarque substituir outros valores. Isso funciona para uma única alteração de valor ou alterações mais complexas também.
Em seguida, siga o método @underdark e salve a varredura usando Raster> Conversão> Traduzir e marque sem dados, digitando o valor que você usou (por exemplo, -999).
fonte
Clique com o botão direito do mouse na varredura, vá para propriedades da varredura, selecione a terceira opção "transparência", na guia sem valor de dados, adicione valor adicional 0 e clique em Aplicar. Esta é a opção semelhante "exibir valor de plano de fundo" no arcgis.
fonte