Mesclando DEM e DSM em um único raster
Em primeiro lugar, eu sou completamente novo nisso, então, por favor, descubra comigo se isso não está claro, pois não tenho o vocabulário.
Eu tenho duas camadas raster (um DEM e um DSM). A camada DEM cobre uma grande região retangular, enquanto o DSM cobre apenas uma parte da mesma região (a parte Urbana) e a forma da área é um polígono complicado.
Eu quero produzir um único raster que terá todas as informações do DEM e do DSM. Quando tento mesclar os dois, obtenho um resultado válido (tudo se alinha bem), no entanto, parece que o DSM está sendo projetado no DEM e isso resulta em lacunas.
Tenho grandes esperanças de que a imagem anexada esclareça a situação. Abaixo você pode ver o resultado da fusão dos rasters DEM e DSM na visualização 3D (superior) e na visualização 2D (inferior).
PS: Tentei usar o GRASS, r.patchmas infelizmente sua UI não permite escolher a ordem das camadas no QGIS 3.10.
Respostas
Acho que, como diz @MrXsquared, você deve primeiro resolver o problema de não dados ou nulos. Isso é muito comum, depende do tipo de dado e de como o raster foi gerado.
Você pode pesquisar neste site para descobrir como resolvê-lo.
Se seu valor nulo for reconhecido por QGis , por exemplo -9999 (usado por SAGA ). Você pode executar o procedimento Raster Calculatorcom uma simples soma de ambos os rasters. Algo parecido:
(@dsm > 0 ) * (@dem + @dsm)
Explicação da operação :
Leia da esquerda para a direita, a primeira coisa é uma condicional que exclui valores nulos, então, o operador de multiplicação faz uma atribuição, aos pixels que cumprem a condição atribui o resultado da soma de ambos os rasters.
Para cobrir o que não atende à condição, você pode concatenar outra operação com o sinal de soma, ficaria assim:
(@dsm > 0) * (@dem + @dsm) + (@dsm < 0) * @dem
Na calculadora raster, você atribui a extensão do DEM. Dependendo do valor de no data, você pode variar esta operação.
Mas se o valor de no data não permite que você execute a operação, você deve primeiro alterá-lo com o processo de tradução ou outra opção como eu disse no início.
Solução 1:
r.patchresolveu o problema se os arquivos DSM e DEM foram inseridos corretamente no algoritmo. Infelizmente, a alteração da ordem dos arquivos na IU não é clara. Você precisa arrastá-los em ordem na janela de seleção antes de clicar em OK.
Solução 2:
Como @MrXsquared descreveu em um comentário na postagem inicial, esse problema ocorre quando "áreas nodata" são descritas como dados (no meu caso com zeros). Nesse caso, r.nulltambém resolve o problema, mas requer conhecimento prévio do valor dos dados que você deseja remover. Tive que descobrir isso por tentativa e erro (-9999, NULL, 0 etc)
Com meu conhecimento limitado dos dados GIS, a solução r.null parece melhor, pois ela realmente corrige os dados, enquanto o r.patch está apenas resolvendo o problema. No entanto, se você estiver trabalhando no nível do mar, isso pode causar alguns problemas!
Resultado de r.null
Resultado da final merge
Obrigado a todos!