Eu tenho uma imagem que eu recortei com um polígono AOI. A área de contorno foi definida como valor de pixel = 0 e eu tenho um valor nodata de -32768. Eu quero redefinir o valor nodata em zero. Eu costumava fazer isso com o ArcMap facilmente na calculadora raster, mas no QGIS não vejo como eu poderia fazê-lo. Alguma ideia?
7
Respostas:
No QGIS, você pode usar a Calculadora de varredura com o seguinte cálculo:
Com este cálculo, se o valor da célula for -32768, você receberá um 0 nessa célula e se for diferente de -32768, a célula manterá o valor que tinha.
fonte
A solução de uma etapa mais simples e, IMO, mais consistente e confiável para reclassificar NoData para zero é usar a ferramenta Reclassify Grid Values (SAGA) na caixa de ferramentas de processamento.
Depois de selecionar a varredura a ser reclassificada, simplesmente role até a parte inferior da caixa de diálogo, verifique se a caixa de seleção
replace no data values
está marcada. O valor padrão é zero (mas você pode substituir outra coisa, é claro). Em seguida, desmarque areplace other values
caixa e deixe todos os outros campos em paz (tudo o que você está fazendo é garantir que uma caixa esteja marcada e desmarcar outra - nenhuma outra configuração é necessária).fonte
Eu encontrei uma solução para isso. Primeiro, converto a imagem em uma camada vrt (gdalbuildvrt) com -srcnodata 0, depois a converto novamente em um arquivo tif com gdal_translate -a_nodata. Funcionou bem! :)
fonte
Eu acho que você pode fazer isso com a calculadora raster .
Caso contrário, com a ajuda do plugin GRASS e do r.null, você o fará facilmente. Essa opção significa que você precisará primeiro criar um conjunto de mapas GRASS para importar sua varredura.
fonte
r.null
fez isso por mim.Tendo o mesmo problema, no final, usei o Python diretamente - você pode precisar ajustar o numpy.where para seu objetivo específico. No caso abaixo, os valores de pixel são mantidos como são se forem> = 0, todos os outros pixels - nesse caso, são apenas os que possuem o valor sem dados - são definidos como "0"
fonte
Eu tentei usar o plugin rastercalc e a Calculadora Raster e nem funcionou - Erro de sintaxe. O que funcionou foi a ferramenta Warp e a especificação dos valores nodata de origem e destino (consulte a resposta do underdark a uma pergunta semelhante Como excluir valores ausentes da camada rasterizada? )
fonte
O que funcionou para mim foi exportar a varredura como arquivo .asc, abrir em um editor de texto e usar localizar e substituir para substituir o antigo valor NoData pelo valor que eu queria.
fonte
No meu caso, era uma imagem de satélite que eu precisava converter para 8 bits e não produzia nenhum valor de dados ao usar -scale no gdal_translate.
Consegui resolver o problema exportando a varredura (camada com o botão direito do mouse -> exportar -> salvar camada como ...) para um novo arquivo como dados renderizados (caixa de seleção na parte superior da janela da caixa de diálogo).
fonte
Para script python, você pode usar a seguinte linha antes do WriteArray.
fonte