Amostragem de rasters em pontos pré-determinados no QGIS
de duas maneiras diferentes: uma delas, usando uma ferramenta nativa do QGIS, e outra, usando um plugin
Colegas pesquisadores e entusiastas de SIG de código-livre,
Bem-vindos ao meu blog!
Gostaria de começar com um aviso - posso ser uma pesquisadora desta área, mas isso não significa que tudo o que faço ou escrevo aqui funcionará para você, em suas próprias configurações de desktop e versões de packages. Não tenho nenhuma responsabilidade se você perder dados ou estragar sua instalação. Eu também não autorizo nenhuma cópia do meu conteúdo.
Hoje, vou escrever sobre como fazer amostragem de valores de rasters em pontos pré-determinados. Isso pode ser útil para uma variedade de aplicações, em especial, análises estatísticas.
Neste post, vou mostrar como realizar este processo usando duas ferramentas diferentes, uma delas é nativa do QGIS e a outra é um plugin disponível no repositório de plugins. Em seguida, vou comentar sobre como amostrar um raster usando interpolação do tipo cúbica, spline cúbica, bilinear, entre outras.
Para o exemplo mostrado aqui, estou usando o mesmo conjunto de dados que usei para a palestra no QGIS Open Day Brasil Setembro/2021, disponível em https://github.com/luisalucchese/QGISday_092021.
Os rasters são baseados em um Modelo Digital de Elevação (MDE) “imaginário”, criado usando o código dem-utils, desenvolvido por ArMoraer e disponível no GitHub. As projeções foram atribuídas às camadas apenas para fins de exemplo, pois o MDE não retrata uma parte real do globo.
Abrindo os rasters no QGIS 3.20 “Odense”, vejo isto:
Então, para este exemplo, eu crio uma camada vetorial de pontos e adiciono três pontos a ela.
Existem duas maneiras principais de extrair o valor dos rasters nos pontos fornecidos.
Usando a ferramenta nativa “Sample raster values”
Encontre a ferramenta “Sample raster values” ou “native: rastersampling” na sua caixa de ferramentas de processamento.
Usando este algoritmo, você deve amostrar cada camada raster individualmente.
Mudei o prefixo da coluna de saída para “DEM_” porque tenho vários rasters para amostrar e quero que as colunas resultantes fiquem com nomes diferentes.
Ao clicar em Run, o algoritmo foi executado sem problemas.
Abrindo a tabela de atributos da minha nova camada vetorial, encontro:
A coluna recebeu o sufixo “1”, provavelmente por ser a primeira e única banda do raster.
Dando zoom no raster na região em que cada ponto está localizado e colhendo os valores das células onde os pontos se localizam, encontro os valores:
Os valores das células do raster em que cada ponto está contido são iguais aos extraídos pelo algoritmo. Isso significa que o valor é simplesmente extraído do raster e nenhuma interpolação é realizada, o que é o mesmo que dizer que a ferramenta executou uma interpolação do tipo “Vizinho Mais Próximo”.
Para extrair os valores de todos os quatro rasters, execute a ferramenta mais três vezes. Em cada rodada, selecione o vetor que foi gerado na rodada anterior, mas escolha um raster diferente dos anteriores e ajuste o nome da coluna de acordo. Aqui, quando o processo foi concluído, abri a tabela de atributos da camada de pontos resultante:
Esse processo se torna tedioso se tiver muitas camadas raster para extrair as informações. E o processamento em lote disponível na própria interface do QGIS não é uma opção neste caso, já que você precisa da saída de uma rodada para usar como entrada na outra. Porém, uma opção para lidar com isso seria construir um raster multibanda a partir dos rasters que você tem em layers separados e, em seguida, executar o algoritmo neste raster multibanda.
Usando o plugin “Point Sampling Tool”
O plugin “Point Sampling Tool” pode ser encontrado no gerenciador de plugin do QGIS. Eu estou usando a versão 0.5.3 deste plugin.
Quando abro o plug-in, vejo a seguinte tela:
Selecione mais de um raster segurando Ctrl enquanto clica nos nomes dos layers.
Neste plugin, não é possível salvar um arquivo como temporário.
Seleciono a pasta do arquivo a ser gerado no botão “Browse” e, em seguida, clico em OK.
O plugin me mostrou este aviso “All layers must have the same coordinate refere system. The <layer name> layer seems to have different CRS id (0) than the point layer (32722) […]”
Nesse caso, estou usando MDEs criados apenas para fins de exemplo e tenho certeza de que todos eles “descendem” do mesmo raster, então cliquei em “Yes”. No entanto, você deve analisar caso a caso. Normalmente, é melhor reprojetar a camada raster ou a camada vetorial, para que estejam na mesma projeção.
Abrindo a tabela de atributos do vetor resultante:
Os valores na tabela de atributos ficaram semelhantes aos selecionados pela ferramenta nativa do QGIS, porém com menor número de algarismos significativos.
Eles também são amostrados sem interpolação, ou seja, pelo método “Vizinho mais próximo” (Nearest Neighbor).
Os nomes das colunas são baseados nos nomes com que as camadas estão em seu projeto do QGIS.
Extras
- Qual dos métodos devo usar?
Ambas as ferramentas funcionam muito bem. Na minha opinião, depende do número de rasters de que você quer extrair informações. Se forem apenas um ou dois rasters, eu usaria a ferramenta nativa, mas se forem mais do que isso, acho que vale mais a pena usar o plugin.
- Você mencionou que ambas as ferramentas usam a interpolação do tipo Vizinho Mais Próximo. Como faço para usar outro tipo de interpolação?
Bom, por meio das ferramentas em si, não é possível. Mas tem uma solução alternativa para isso. Usando a ferramenta “Warp (reproject)” (“gdal: warpreproject”), você pode fazer resample dos seus rasters usando um tamanho de pixel menor e um tipo diferente de interpolação e, em seguida, executar qualquer uma das ferramentas de amostragem que eu mostrei aqui.
Exemplo:
Raster original:
Escolhendo a interpolação “Cubic” e escolhendo um tamanho de pixel menor para o raster de saída, este é o raster resultante:
Agora, se eu extrair o valor deste ponto, ele será 61,9293, em vez de 61,7967. Neste caso, em que os pixels originais não eram muito grandes nem diferiam muito em valor entre si, a diferença no valor extraído foi da ordem de $10^{-1}$. Mas, dependendo do caso, pode ser bem maior. É sempre uma boa ideia examinar o seu raster e o uso pretendido dos valores extraídos, analisando a situação para ver se você deve reamostrar seu raster antes de iniciar a extração dos valores nos pontos.