Importante

Translation is a community effort you can join. This page is currently translated at 90.48%.

17.8. Rodando um algoritmo externo

Nota

Nesta lição veremos como usar algoritmos que dependem de um aplicativo de terceiros, particularmente o SAGA, que é um dos principais provedores de algoritmos.

Todos os algoritmos que executamos até agora fazem parte da estrutura de processamento. Ou seja, eles são algoritmos nativos implementados no complemento e executados pelo QGIS, assim como o próprio complemento é executado. No entanto, um dos maiores recursos da estrutura de processamento é que ele pode usar algoritmos de aplicativos externos e ampliar as possibilidades desses aplicativos. Esses algoritmos são agrupados e incluídos na caixa de ferramentas, para que você possa usá-los facilmente no QGIS e usar dados do QGIS para executá-los.

Alguns dos algoritmos que você vê na visão simplificada exigem aplicativos de terceiros para ser instalado em seu sistema. Um provedor de algoritmo de especial interesse é o SAGA (Sistema Automatizado de Análise Geoespacial). Primeiro, precisamos configurar tudo para que o QGIS pode chamar corretamente o SAGA. Isso não é difícil, mas é importante entender como funciona. Cada aplicativo externo tem a sua própria configuração, e mais tarde neste mesmo manual, vamos falar sobre alguns dos outros, mas o SAGA vai ser o nosso principal exemplo, então vamos discutí-lo aqui.

Se você estiver no Windows, a melhor maneira de trabalhar com algoritmos externos é instalar QGIS usando o instalador independente. Ele vai cuidar de instalar todas as dependências necessárias, incluindo o SAGA, por isso, se você tê-lo usado, não há mais nada a fazer. Você pode abrir a janela de configurações e vá para o grupo Providers/SAGA.

../../../_images/saga_config.png

O caminho do SAGA já deve estar configurado e apontando para a pasta onde o SAGA está instalado.

Se você instalou o QGIS que não usa o instalador independente, digite o caminho para a instalação do SAGA (que você deve ter instalado separadamente) lá. A versão necessária é o SAGA 2.1 [isso está mudando de acordo com os lançamentos do SAGA].

Caso esteja usando Linux, não é necessário definir o caminho para a instalação do SAGA na configuração de processamento. Em vez disso, você deve instalar o SAGA e garantir que a pasta SAGA esteja no PATH, para que possa ser chamada no console (basta abrir um console e digite saga_cmd para verificá-lo). No Linux, a versão de destino do SAGA também é 2.1, mas em algumas instalações (como o OSGeo Live DVD) você pode ter apenas 2.0.8 disponível. Existem alguns pacotes 2.1 disponíveis, mas eles geralmente não são instalados e podem ter alguns problemas; portanto, se você preferir usar o 2.0.8 mais comum e estável, poderá fazê-lo ativando a compatibilidade com o 2.0.8 na caixa de diálogo de configuração, em o grupo SAGA.

../../../_images/enable208.png

Uma vez que o SAGA está instalado, você pode iniciar um algoritmo do SAGA dando duplo clique sobre seu nome, como com qualquer outro algoritmo. Desde que nós estamos usando a interface simplificada, você não saberá quais algoritmos são baseados noSAGA ou em outro aplicativo externo, mas se der duplo clique em um deles e o aplicativo correspondente não estiver instalado, você vai ver algo como isto.

../../../_images/missing_saga.png

No nosso caso, observamos que o SAGA está corretamente instalado e configurado, e por isso você não deve ver esta janela, e vai chegar a caixa de parâmetros em vez desta janela.

Vamos tentar abrir um algoritmo baseado no SAGA, o chamado Split shapes layer randomly / divisão das formas de uma camada aleatoreamente.

../../../_images/split.png

Use a camada de pontos no projeto correspondente a esta lição como entrada, e os valores de parâmetros padrão, e você terá algo como isto (a divisão é aleatória, para que o seu resultado possa ser diferente).

../../../_images/split_layer.png

A camada de entrada foi dividida em duas camadas, cada uma com o mesmo número de pontos. Esse resultado foi calculado pela SAGA, e posteriormente executado pelo QGIS e adicionado ao projeto do QGIS.

Se tudo correr bem, você não vai notar nenhuma diferença entre este algoritmo do SAGA e um dos outros que temos executado anteriormente. No entanto, o SAGA pode, por alguma razão, não ser capaz de produzir um resultado e não gerar o arquivo que o QGIS está esperando. Nesse caso, não haverá problemas em adicionar o resultado para o projecto QGIS, e uma mensagem de erro como esta será mostrada.

../../../_images/missing_result.png

Estes tipos de problemas podem acontecer, mesmo se o SAGA (ou qualquer outra aplicação que estamos chamando a partir da estrutura de processamento) está instalado corretamente, e é importante saber como lidar com eles. Vamos produzir uma daquelas mensagens de erro.

Abra o algoritmo Create graticule / Criar retícula e usar os seguintes valores.

../../../_images/create_graticule.png

Nós estamos usando de largura e altura valores que são maior do que na medida especificada, assim o SAGA não pode produzir qualquer saída. Em outras palavras, os valores dos parâmetros estão errados, mas eles não são verificadas até o SAGA recebe-los e tentar criar a retícula. Uma vez que não pode criá-lo, ele não vai produzir a camada esperado, e você verá a mensagem de erro mostrada acima.

Nota

In SAGA >= 2.2.3, the command will adjust automatically wrong input data, so you’ll not get an error. To provoke an error, use negative values for division.

Entender esse tipo de problema vai ajudá-lo a resolvê-los e encontrar uma explicação para o que está acontecendo. Como você pode ver na mensagem de erro, é executado um teste para verificar se a conexão com o SAGA está funcionando corretamente, o que indica que pode haver um problema na forma como o algoritmo foi executado. Isso se aplica não só para o SAGA, mas também para outras aplicações externas.

Na próxima lição, vamos introduzir o registo de processamento, onde as informações sobre os comandos executados pelos geoalgorítimos são mantidas, e você vai ver como obter mais detalhes quando questões como esta aparecer.