Como e por que usar o SAGA GIS em Linha de Comando (saga_cmd)?
Colegas pesquisadores e entusiastas do GIS de código aberto,
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, vamos falar do SAGA GIS por linha de comando “saga_cmd”, que é utilizado dentro do QGIS 3.16 (e também outras versões do QGIS).
Primeiramente, tenho algumas dicas para usar a versão da linha de comando e uma racionalização sobre por que uso a versão em linha de comando com mais freqüência do que a GUI do QGIS para executar algoritmos do SAGA.
O SAGA GIS (Sistema de Análises Geocientíficas Automatizado) é um software livre composto por diversos algoritmos de geoprocessamento. Nunca ouviu falar dele? Mas se você é um usuário do QGIS, provavelmente já usou o SAGA em algum momento. Mas o que quero dizer com isso?
O SAGA GIS é incluído dentro do QGIS e se você pesquisar na Processing Toolbox do QGIS, muitos algoritmos SAGA estarão lá, disponíveis. Por exemplo, algoritmos que geram arquivos com a extensão .sdat são provavelmente provenientes do SAGA.
Por que usar o SAGA em linha de comando?
O SAGA tem sua própria Interface Gráfica do Utilizador (Graphical User Interface - GUI). E tem também uma versão para uso em linha de comando. Alguém pode perguntar, por que uma pessoa escolheria deliberadamente usar uma versão de linha de comando em detrimento de uma interface gráfica? Rodar uma GUI usa memória, CPU, e às vezes GPU. Por outro lado, ao executar na linha de comando, as mesmas saídas estão disponíveis lá, e você não tem o uso extra de recursos pela GUI. Isso é especialmente útil se você estiver trabalhando com um grande volume de dados espaciais em um computador que não foi construído para isso, como, por exemplo, um notebook. Então, se você estiver trabalhando com big data ou em um computador antigo, considere usar a versão de linha de comando.
Se você não costuma usar a GUI do SAGA diretamente, pode haver um motivo extra para usar a linha de comando.
Se você está acostumado a executar algoritmos SAGA em um software diferente, como o QGIS, verifique a versão SAGA que está sendo chamada pelo programa. Para referência, agora, em março de 2021, a versão atual do SAGA é 7.9.0. Por exemplo, no QGIS 3.16.4 Hannover, a versão que vem incluída SAGA é a 2.3.2. Se você realmente gosta de usar a GUI (não julgo!) mas ainda assim quer a versão do SAGA mais recente, existe um plug-in experimental que permite o uso de versões mais recentes do SAGA dentro do QGIS, mas ainda não experimentei instalá-lo.
Na minha humilde opinião, a maneira mais fácil de usar a versão mais recente do SAGA é baixar e usar a versão de linha de comando via Prompt de Comando.
Para o QGIS executar algoritmos SAGA, o que ele faz é coletar as informações de entrada (inputs) que os usuários fornecem na GUI e, em seguida, executar o SAGA de linha de comando “saga_cmd” em segundo plano.
Ao executar um algoritmo da Processing Toolbox no QGIS, a guia “Log” mostra a evolução do algoritmo. A maior parte de nós não costuma ler o que diz nessa janela, ela mostra o que o QGIS está rodando em segundo plano, no caso, o algoritmo SAGA.
Por exemplo, se eu abrir uma janela no QGIS para executar um algoritmo SAGA:
Clico em “Run” e a guia muda automaticamente para “Log”. Quando terminar a execução, você pode rolar para cima nesta guia, e ver o que foi executado.
Peraí, esse é o cabeçalho do SAGA!
Role um pouco mais para cima e você encontrará o código que foi executado, algo mais ou menos assim:
io_gdal 0 -TRANSFORM 1 -RESAMPLING 3 -GRIDS \
"C:/Users/L/AppData/Local/Temp/processing/fe9d7f3f0a155/teste.sgrd" \
-FILES "D:/mapateste/teste.tif"
contrib_perego "Destriping" -INPUT "C:/Users/L/AppData/Local/Temp/processing/fe9d7f3f0a155/teste.sgrd" \
-ANG 0.0 -R 10.0 -D 2.0 \
-RESULT3 "C:/Users/L/AppData/Local/Temp/processing/fe9d7f3f0a155/RESULT3.sdat" \
-RESULT1 "C:/Users/L/AppData/Local/Temp/processing/fe9d7f3f0a155/RESULT1.sdat" \
-RESULT2 "C:/Users/L/AppData/Local/Temp/processing/fe9d7f3f0a155/RESULT2.sdat"
A partir deste comando, você pode ver que a estrutura é:
Primeiro:
saga_cmd io_gdal 0
io_gdal 0 é “GDAL Raster Import” – uma ferramenta usada para importar arquivos .tif
Segundo:
saga_cmd contrib_perego “Destriping”
contrib_perego “Destriping” é do módulo Destriping do SAGA, uma ferramenta usada para remover linhas dos rasters.
Assim, o que podemos constatar é que é possível observar na aba “Log” os algoritmos SAGA que estão sendo utilizados pelo QGIS. Isso é especialmente útil se você tiver erros na execução – falaremos disso outro dia.
OK! Eu quero executar o SAGA na linha de comando, mas como faço isso?
Para os usuários do Windows, é mais fácil: basta baixar a versão mais recente (http://www.saga-gis.org/). Eu não instalei o SAGA. saga_cmd funciona bem para mim apenas abrindo o prompt de comando na mesma pasta em que o executável saga_cmd.exe está localizado e executando ele diretamente.
No Linux, você provavelmente terá que compilar o aplicativo, a menos que use a versão do repositório, que acredito ser mais antiga do que a disponível para compilação (mas verifique no seu gerenciador de pacotes para ter certeza). Acesse o site do SAGA (www.saga-gis.org) para obter mais instruções.
Em seguida, digite no prompt “saga_cmd” (ou, se você estiver no Ubuntu, digite isso no Terminal). Se tudo correr bem, será exibida uma lista das categorias de scripts disponíveis:
“ta” é a abreviação dada a Terrain Analysis ou Análise de Terreno. Certo, vamos olhar dentro da library “ta_preprocessor” digitando no prompt saga_cmd ta_preprocessor:
Em ta_preprocessor, tem sete algoritmos disponíveis. Vamos olhar o quinto deles, Fill Sinks XXL por Wang and Liu. Escreva saga_cmd ta_preprocessor 5 para ver como usá-lo.
Veja a linha usage: saga_cmd ta_preprocessor 5 -ELEV -FILLED -MINSLOPE
str significa que o algoritmo está procurando por uma string naquele local, como uma palavra, ou, neste caso, o nome e o caminho do arquivo. Double significa que ele está procurando um número com precisão dupla, o que significa que pode ser qualquer número, mas será salvo como precisão dupla (double) enquanto o algoritmo está em execução.
Para usar este algoritmo, eu digitaria algo assim:
saga_cmd ta_preprocessor 5 -ELEV C:/minha_pasta/meu_modelo_digital_de_elevacao.tif -FILLED C:/minha_pasta/nome_arquivo_de_saida.sdat -MINSLOPE 0.1
Espere até o final do comando e verifique seu raster (o arquivo .sdat).
Para isso, gosto de abrir o QGIS novamente, verificar se o raster foi gerado corretamente e depois salvar este raster como .tif exportando-o a partir do QGIS.
Para verificar as entradas obrigatórias e opcionais de cada algoritmo, e as suas referências, cheque a Documentação do SAGA GIS, disponível em http://www.saga-gis.org/saga_tool_doc.
Para executar o mesmo comando que foi executado no QGIS lá em cima, eu executaria o mesmo algoritmos que vimos no Log. No caso, o equivalente seria o contrib_perego 5:
saga_cmd contrib_perego 5 -INPUT teste.tif -RESULT3 destriped.tif -RESULT2 saida2.tif -RESULT1 saida1.tif
Dá muito trabalho – será que vale a pena?
Eu acho que sim. Com o tempo, eu me acostumei a usar o saga_cmd diretamente. Além disso, o uso dessa versão de linha de comando permite que você execute longos algoritmos em partes e faça processamento em lotes (batch processing) facilmente. Abordarei esse assunto no futuro. Ele também economiza memória e uso de CPU, permitindo que rasters maiores sejam processados.
Então, você acha que a existência do SAGA GIS dentro do QGIS é inútil?
Não, de jeito nenhum! É muito importante a integração do SAGA com o QGIS! E traz uma maneira rápida de usar os algoritmos do SAGA! Eu só queria mostrar que existe outra opção, sem necessidade de uma interface gráfica, que as pessoas podem não conhecer. Existem também outras opções que eu não citei aqui, mas que pretendo abordar futuramente.
Extras:
- Eu quero parar este algoritmo, como posso fazer isso?
Pressione Ctrl + C.
- Não sei onde está meu arquivo de saída.
Verifique na pasta onde está saga_cmd.exe.
- Eu não quero digitar tudo à mão.
Você pode digitar em outro lugar, como no Bloco de notas, e depois colar no Prompt. Além disso, a flecha para cima mostra o último comando que você usou no prompt, pode ser útil.
- Ocorreu um erro e “usage” do algoritmo foi apresentado de volta para mim.
Tente o mesmo algoritmo no QGIS. Se o erro persistir… acho que vou abordar esse assunto aqui, em breve.
- A versão do Saga usada não é a mais recente, embora eu tenha baixado a mais recente./ ‘saga_cmd’ não é reconhecido como um comando interno ou externo, um programa operável ou um arquivo em lotes.
Verifique se você está na mesma pasta na qual se encontra o executável saga_cmd.exe. Escreva o comando dir no prompt para mostrar todos os arquivos na pasta e procure por saga_cmd.exe. Ele deve estar na mesma pasta.