Como usar a Calculadora Raster do SAGA no QGIS - um tutorial rápido

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, estou apresentando um tutorial rápido para usar a Calculadora Raster do SAGA GIS no QGIS. Usei o QGIS 3.18 “Zürich” para este tutorial.

A Calculadora Raster do SAGA é útil porque ela permite fazer alguns cálculos que a Calculadora Raster nativa do QGIS não faz. Especialmente, ela permite usar as coordenadas X e Y de um raster nos cálculos.

Vamos lá?

Ache SAGA Raster calculator na Processing Toolbox

where to find SAGA Raster Calculator

Esta é a janela do SAGA Raster calculator

SAGA Raster Calculator main window

Esta é a janela inicial da calculadora raster do SAGA no QGIS.

Main input layer

Layer principal.

O layer de entrada principal pode ser escolhido de uma lista de camadas do projeto ou carregado, clicando nos três pontinhos do lado direito.

Additional layers [optional]

Layers adicionais.

Os cálculos que você vai realizar podem usar apenas um layer raster, ou mais de um. Se você deseja usar mais de um raster como entrada, carregue os outros clicando nos três pontos à direita.

SAGA Raster Calculator main window

Para carregar a partir de um arquivo que não está no projeto, clique em “Add File(s)…”.

Formula

Neste campo, você escreverá a fórmula do cálculo que deseja realizar. Voltaremos a isso mais tarde.

Resampling method

Método de interpolação.

Existem quatro opções disponíveis para a interpolação.

SAGA Raster Calculator interpolators

[0] Nearest Neighbour (vizinho mais próximo): obtém o valor do pixel mais próximo e não faz nenhuma interpolação. Mais rápido e menos preciso.

[1] Bilinear Interpolation (interpolação bilinear): interpolação linear em ambas as direções X e Y.

[2] Bicubic Spilne Interpolation (interpolação de spline bicúbica): interpolação em spline cúbica, em ambas as direções X e Y.

[3] B-Spline Interpolation (interpolação de B-spline): interpolação de spline de base.

Qual devo usar?

Eu recomendo não usar o Nearest Neighbour, exceto se for considerar a distância entre os pontos de grade de um raster e de outro como desprezível.

O spline cúbico é, em teoria, mais aproximado que uma interpolação linear, porém, caso você saiba que seus dados contidos no raster têm um comportamento espacialmente linear, a interpolação linear deverá ser adequada.

Eu geralmente uso a opção [1] (interpolação bilinear) porque as malhas dos raster que eu uso cotidianamente são muito próximas umas das outras.

Output Data Type

Tipo do dado de saída.

SAGA Raster Calculator data types

Aqui você pode escolher o tipo de saída. Se você não sabe qual escolher, uma ótima opção é a “[7] 4 byte floating point number”, que representa números negativos e positivos, com precisão (machine epsilon) aproximada de $10^{- 7}$. Se for necessária mais precisão do que isso, salve o resultado como “[8] 8 byte floating point number”, mas esteja ciente de que está usando o dobro do espaço em disco do que a opção [7]. A opção “[0] bit” é para salvar booleanos (0 ou 1), e as opções 1-6 são usadas para salvar valores inteiros. Se você usá-las, os resultados do cálculo serão arredondados para números inteiros. O que ocupa menos espaço em disco é “[0] bit” porque usa apenas um bit para representar cada pixel, mas seu uso é limitado.

Calculated

Calculado.

Aqui você salva o arquivo resultante em um arquivo temporário ou em um local no computador.

Vamos construir a fórmula

O layer principal é denominado “a”.

SAGA Raster Calculator raster a

As camadas adicionais são chamadas de “b”, “c”, “d”, na ordem em que aparecem na lista. Mas apenas aquelas que você selecionar receberão uma letra.

SAGA Raster Calculator raster b and c

Agora, como você faria na Calculadora Raster nativa do QGIS, você pode simplesmente escrever a expressão, por exemplo,

a+b-c

Uma lista de funções nativas da calculadora raster do SAGA pode ser encontrada aqui.

Importante

Certifique-se de que os rasters estejam na mesma projeção antes de usá-los nesta calculadora.

Usando as coordenadas na Calculadora Raster SAGA

Para usar as coordenadas de cada pixel no cálculo, você pode usar xpos() para a coordenada x e ypos() para a coordenada y. Se o que você precisa é o índice da coluna ou da linha, então row() e col() servirão ao seu propósito.

Exemplo: usando a Calculadora Raster do SAGA no QGIS para calcular a distância de cada pixel em um raster até um determinado ponto

Queremos calcular a distância entre um determinado ponto e todos os pixels em um raster.

Para este exemplo, usarei este raster e este ponto:

Raster and point

O raster é um mapa de declividades calculado a partir do SRTM, descrito neste post, e baseado nos dados de elevação do CIAT-CSI SRTM.

O ponto é apenas um ponto (shapefile) que criei, no mesmo sistema de coordenadas.

Vou para a Tabela de Atributos, seleciono tudo, copio e colo em outro lugar, a maneira mais simples de obter as coordenadas do ponto:

wkt_geom: Point (356258.6043489066651091 7469890.33019922021776438)

Primeiro, construo a expressão

A expressão que usaremos é simplesmente a da distância cartesiana.

how to calculate cartesian distance

Se p1 (coordenadas $x_1$ e $y_1$) é o ponto fixo, e p2 (coordenadas $x_2$ e $y_2$) é um pixel do raster, então, a distância na direção $y$ é $y_2-y_1$, e a distância na direção $x$ é $x_2-x_1$. Isso significa que a distância entre p1 e p2 é $d$, sendo que $d= \sqrt{(x_2-x_1)^2 +(y_2-y_1)^2}$.

Adaptando para o nosso caso, $x_1$ e $y_1$ são conhecidos, e a expressão fica:

d= sqrt((x2-356258.6043489066651091)^2 +(y2-7469890.33019922021776438)^2)

Sabendo que $x_2$ é simplesmente xpos() e $y_2$ é ypos(), pode-se deduzir a expressão para ser utilizada na calculadora raster como:

sqrt((xpos()-356258.6043489066651091)*(xpos()-356258.6043489066651091)+(ypos()-7469890.33019922021776438)*(ypos()-7469890.33019922021776438))  

Note que não usei o símbolo global de “elevado a” (^) pois dependendo, ele pode gerar erros.

Rode em “Run”

how to calculate cartesian distance

Resultados

raster and point 2 raster legend on qgis

O pixel mais próximo ao ponto está a 34.1 m.

Se você quiser mostrar, sobre o raster da declividade, a área que está a menos de 10 km do ponto, isso pode ser feito em ajustes de simbologia. Após ajustar a simbologia do layer recém-gerado de “distância”:

final raster

Pronto!

A SAGA GIS Raster Calculator é especialmente útil para aquelas aplicações que são muito complexas para serem feitas na calculadora raster do QGIS, mas muito simples para justificar escrever um código em Python.

Extras:

  • A calculadora raster do SAGA GIS funcionou perfeitamente no QGIS, mas a camada resultante está vazia.

Certifique-se de que as camadas de entrada estejam na mesma projeção.

  • Estes cálculos de distância exemplificados podem ser feitos em qualquer projeção?

Não. As coordenadas projetadas devem representar uma (boa) aproximação de distância, para que o resultado do cálculo saia correto.

  • Executei o algoritmo e obtive o seguinte erro no Log: “The following layers were not correctly generated. [lugar do seu arquivo] You can check the ‘Log Messages Panel’ in QGIS main window to find more information about the execution of the algorithm. ”

Role para cima para ver se há mais informações sobre o erro. Um erro comum se dá como “Error: error in formula: [aqui a fórmula que você escreveu] Error: executing tool [Grid Calculator]”. Neste caso, algo não está certo com a fórmula que você escreveu. Tente uma solução alternativa.

Se, rolando para cima no log, você não conseguir encontrar o erro que gerou o problema, pode ser um erro de salvamento. Se você estiver usando salvamento em arquivo temporário, tente escolher uma pasta permanente para salvar. Tente também escolher um caminho mais curto, sem espaços ou caracteres especiais.

  • Não obtive erros, mas recebi o seguinte aviso: “Warning: The number of supplied grids exceeds the number of variables in formula. (3 > 2)”.

Uma possível causa é que você marcou mais linhas na lista de Additional Layers do que acabou usando na sua fórmula. Outra possibilidade, é que quando você usa a posição espacial dos pixels (xpos, ypos), mas não usa o raster original, este aviso também pode aparecer.

Luísa Vieira Lucchese
Luísa Vieira Lucchese
Pós-doutoranda

Pós-doutoranda na Universidade de Pittsburgh

Relacionados