.

Configurando as aplicações externas

The processing framework can be extended using additional applications. Currently, SAGA, GRASS, OTB (Orfeo Toolbox) and R are supported, along with some other command-line applications that provide spatial data analysis functionalities. Algorithms relying on an external application are managed by their own algorithm provider.

Este capítulo irá mostrar como configurar a infraestrutura do processamento para incluir estas aplicações adicionais, e irá explicar algumas características particulares baseado nos algoritmos. Uma vez feita a correta configuração do sistema, terá possibilidade de executar algoritmos externos a partir de qualquer componente como a caixa de ferramentas ou o modelador gráfico, assim como faz para outro geoalgoritmo.

Por padrão, todos os algoritmos que dependem de um aplicativo externo, ou seja, que não são disponibilizado com o QGIS não estão habilitados no programa. Você pode habilitá-los na janela de configurações do SEXTANTE. Antes de ativá-los, certifique-se de que o aplicativo correspondente já está instalado em seu sistema. A habilitação de um provedor de algoritmos sem ter o programa correspondente instalado no sistema permitirá que os algoritmos apareçam na caixa de ferramentas, mas um erro será exibido quando você tentar executá-los.

Isto porque os procedimentos característicos dos algoritmos (necessário para criar a janela de diálogo de parâmetros e dar as informações necessárias sobre o algoritmo) estão incluídos em cada aplicativo. Isto é, eles fazem parte do QGIS, então você os têm em sua instalação, mesmo que você não tenha instalado outro software qualquer. Entretanto, a execução do algoritmo, precisa dos códigos binários do software externo para ser instalado em seu sistema.

Uma nota para usuários Windows

Se você não for um usuário avançado e você estiver executando QGIS no Windows, você pode não estar interessado em ler o resto deste capítulo. Certifique-se de instalar QGIS em seu sistema usando o instalador independente. Isso irá instalar automaticamente SAGA, GRASS e OTB em seu sistema e configurá-los para que eles possam ser executados a partir QGIS. Todos os algoritmos da visão simplificada da caixa de ferramentas estarão prontos para serem executados sem a necessidade de qualquer configuração adicional. Se estiver instalando através da aplicação OSGeo4W, certifique-se que você selecionou SAGA para instalação e também o OTB.

Se desejar saber mais sobre como os fornecedores trabalham, ou deseja usar alguns algoritmos que não estão incluídos na caixa de ferramentas simplificada (como por exemplo os scripts R), continue a leitura.

Uma nota para os formatos dos arquivos

Ao usar um software externo, abrindo um arquivo no QGIS não significa que ele se comportará assim como no outro software. Na maioria dos casos, ele pode ler o que você abriu no QGIS, mas em alguns caos, isso pode dar incompatibilidade de tipo de arquivo. Ao usar bancos de dados ou formatos de arquivos incomuns, seja para camadas raster ou vetoriais, alguns problemas podem surgir. Se isso acontecer, tente usar formatos de arquivos conhecidos, que você tem certeza de que são aceitos por ambos os programas, e verifique a saída do console (na na janela de histórico de registros) para saber mais sobre o que está acontecendo de errado.

Usando as camadas raster GRASS, por exemplo, um dos casos em que pode ter problema e não seja possível completar o seu trabalho é se chamar um algoritmo externo usando uma camada como arquivo de entrada. Por esta razão, essas camadas não irão aparecer como disponíveis para os algoritmos.

Você deve, no entanto, não encontrar problemas sobretudo com camadas vetoriais, pois o qg| converte automaticamente do formato de arquivo original para ser aceito pelo aplicativo externo antes de passar a camada para ele. Isso adiciona um tempo de processamento extra, que pode ser significativo se a camada tem um tamanho grande, por isso não se surpreenda se for preciso mais tempo para processar uma camada em uma conexão com banco de dados do que uma camada de tamanho similar armazenada num shapefile.

Provedores que não usa aplicações externas podem processar qualquer camada aberta no QGIS.

Quanto aos formatos de saída, todos os formatos suportados pelo QGIS pode ser usado, tanto para camadas raster e vetores. Alguns provedores não suportam determinados formatos, mas todos podem exportar para formatos camada raster em comuns que podem mais tarde ser transformados poelo | qg | automaticamente. Como no caso de camadas de entrada, se for necessária a conversão, pode aumentar o tempo de processamento

Se a extensão do nome de arquivo especificado ao chamar um algoritmo não coincide com a extensão de qualquer um dos formatos suportados pelo | qg |, então o sufixo será adicionado para definir um formato padrão. No caso de camadas raster, a: file:. Extensão .tif ‘é usado, enquanto que: file:.`.sh` é usado para camadas vetoriais.

Uma nota para as seleções da camada vetorial

Aplicações externas podem também estar cientes das seleções que existem em camadas vetoriais dentro do | qg |. No entanto, isso requer reescrever todas as camadas de entrada de vetores, como se fossem originalmente em um formato não suportado pelo aplicativo externo. Somente quando não houver seleção, ou o Use somente recursos selecionados a opção não está habilitado na configuração geral processamento, pode ser uma camada diretamente passada para um aplicativo externo.

Noutros casos, exportando apenas os elementos seleccionados é necessário, o que em alguns casos os tempos de execução serão mais longos.

SAGA

Algoritmos SAGA pode ser executado a partir de | qg | se você tiver SAGA instalado em seu sistema e configurar a estrutura de processamento adequada para que ele possa encontrar seus executáveis ​​. Em particular, o executável de linha de comando SAGA é necessário para executar seus algoritmos.

Caso esteja utilizando o sistema Windows, os instaladores stand-alone ou o instalador OSGeo4W, ambos instalam o SAGA juntamente com o QGIS, e o caminho é automaticamente configurado, portanto não é necessário fazer mais nada.

Se você instalou o SAGA (lembre-se, você precisará da versão 2.1), o caminho para o executável SAGA deve ser configurado. Para fazer isso, abra a janela de configuração. No: guilabel: ``SAGA` block, você vai encontrar um ambiente com o nome: guilabel: SAGA Folder.. Digite o caminho para a pasta onde está instalado SAGA. Feche a janela de configuração, e agora você está pronto para executar algoritmos de SAGA a partir do QGIS.

Se estiver utilizado o linux, os binários SAGA não estão incluídos no SEXTANTE, portanto precisa baixar e instalar o software. Por favor verifique o sítio na internet do SAGA para maisinformações. É necessário o SAGA 2.1.

Neste caso não necessita de configurar o caminho para o executável SAGA, e não irá ver aquelas pastas. Em vez disso, deve garantir que o SAGA está instalado corretamente e a sua pasta adicionada à variável de ambiente PATH. Apenas abra o console e digite saga_cmd para verificar se o sistema encontra onde os binários SAGA estão localizados.

Sobre as limitações do sistema de grid do SAGA

A maior parte dos algoritmos SAGA que requerem várias camadas raster de entrada, exigem que elas tenham o mesmo sistema de projeção. Ou seja, para cobrir a mesma área geográfica e tenham uma mesma resolução espacial . Ao chamar algoritmos SAGA do QGIS, você pode usar qualquer camada, independentemente da sua resolução espacial e extensão, de forma individual. Quando múltiplas camadas raster são utilizados como entrada para um algoritmo SAGA, o QGIS irá adaptá-los a um sistema de coordenadas comum e, em seguida, transportará ao SAGA (ao menos que o algoritmo SAGA não possa operar com camadas de diferentes sistemas de projeção).

A definição do sistema de projeção comum é controlado pelo usuário, você vai encontrar vários parâmetros no grupo SAGA da janela de configuração para definí-lo. Existem duas maneiras de definir o sistema de projeção:

  • Configure-o manualmente. Você define a extensão configurando os valores dos seguintes parâmetros:

    • Reamostragem do X min

    • Reamostragem do X máx

    • Reamostragem do Y min

    • Reamostragem do Y máx

    • Reamostragem do tamanho da célula

    Tenha em atenção que o QGIS irá reamostrar as camadas de entrada para essa extensão, mesmo que não se sobreponham.

  • Configurando automaticamente a partir das camadas de entrada. Para selecionar esta opção, verifique a opção:guilabel:Use min covering grid system for resampling. Todas as outras configurações irão ser ignoradas e a extensão mínima que cobre todas as camadas de entrada serão usadas. O tamanho de célula da camada de destino é o máximo de tamanho de célula de todas as camadas de entrada.

Para algoritmos que não usam camadas raster múltiplas, ou para aquelas que não necessitam de um único sistema de grid de entrada, não será feito uma reamostragem antes de chamar o SAGA, e esses parâmetros não serão usados.

Limitações para camadas multi-banda

Ao contrário do | qg |, o SAGA não tem suporte para multi-camadas da banda. Se você quiser usar uma camada multibanda (como um RGB ou imagem multiespectral), você primeiro tem que dividí-la em imagens individuais. Para fazer isso, você pode usar o ‘SAGA/Grid - Tools/Split RGB image’ algoritmo (que cria três imagens de uma imagem RGB) ou o ‘SAGA/Grid - Tools/Extract band’ algoritmo (para extrair uma única faixa) .

Limitações na resolução espacial

O SAGA pressupõe que as camadas raster têm o mesmo tamanho de célula no eixo X e Y. Se estiver trabalhando com uma camada com diferentes valores para o tamanho de célula horizontal e vertical, deverá obter resultados inesperados. Nesse caso, um aviso será adicionado ao registo do processamento, indicando que a camada de entrada não se adapta de forma a ser processado pelo SAGA.

Registrando

Quando o QGIS chama o SAGA, ele faz isso usando a interface de linha de comando, passando assim um conjunto de comandos para executar toda a operação requerida. O SAGA mostra seu progresso, escrevendo informações para o console, que inclui a porcentagem de processamento já realizado, juntamente com o conteúdo adicional. Esta saída é filtrada e usada ​​para atualizar a barra de progresso durante a execução do algoritmo.

Ambos os comandos enviados pelo QGIS e as informações adicionais impressas pelo SAGA pode ser registrada juntamente com outras mensagens de registro de ​​processamento, e você pode encontrá-los úteis para acompanhar em detalhes o que está acontecendo quando o | qg | executa um algoritmo SAGA. Você vai encontrar dois cenários, a saber: Log console output e Log execution commands, para ativar esse mecanismo de registro.

A maioria dos outros fornecedores que usam uma aplicação externa e chamam a partir da linha de comandos têm opções semelhantes, portanto irá encontrar noutros sítios da lista de configurações do processamento.

R. Creating R scripts

A integração da linguagem R com o QGIS é diferente do SAGA em que não há um conjunto de algoritmos predefinido que pode rodar (com exceção de alguns exemplos). Em vez disso, você deve escrever seus scripts e chamar os comandos R, e de uma forma muito semelhante ao que vimos no capítulo dedicado ao processamento de scripts. Este capítulo mostra a sintaxe para usar e para chamar os comandos de R no SEXTANTE além de como usar objetos SEXTANTE (camadas, tabelas) nestes scripts.

A primeira coisa que você tem que fazer, como vimos no caso da SAGA, é dizer ao QGIS onde seus binários R estão localizados. Você pode fazer isso usando o:guilabel:R folder entrando na janela de configuração de processamento. Depois de definir esse parâmetro, você pode começar a criar e executar seus próprios scripts R.

Uma vez mais, isto é diferente no Linux, e só tem de ter certeza que a pasta do R está incluída na variável de ambiente PATH. Se conseguir iniciar o R, apenas introduza R na consola, e estará pronto a começar.

Para adicionar um novo algoritmo que usa uma função R (ou um script R mais complexo que você desenvolveu e que você gostaria de ter disponível a partir do QGIS), você tem que criar um arquivo de script que informa a estrutura de processamento e como proceder com essa operação e inserir os comandos correspondentes em R.

Os arquivos de script R têm a extensão .rsx e é fácil criá-los se tiver o conhecimento básico da sintaxe do R e do código R. Eles devem ficar armazenados na pasta scripts R. Pode definir esta pasta no grupo de configurações R (disponível a partir do diálogo de configurações do processamento), como faz com a pasta para scripts normais do processamento.

Vamos dar uma olhada em um arquivo muito simples de script, que chama o método R spsample para criar uma rede aleatória dentro do limite dos polígonos em uma dada camada de polígono. Este método pertencem ao pacote maptools`. Uma vez que quase todos os algoritmos que você gostaria de incorporar ao |qg| vai usar ou gerar dados espaciais, conhecimento de pacotes espaciais como ``maptools e, especialmente, sp, é obrigatório.

##polyg=vector
##numpoints=number 10
##output=output vector
##sp=group
pts=spsample(polyg,numpoints,type="random")
output=SpatialPointsDataFrame(pts, as.data.frame(pts))

As primeiras linhas, que começam com um comentário sinal duplo Python (##), dizem entradas do algoritmo QGIS descrito no arquivo e as saídas que irá gerar. Eles trabalham com exatamente a mesma sintaxe que os scripts de Sextante que já vimos, para que eles não sejam descritos aqui novamente.

Quando você declara um parâmetro de entrada, o QGIS usa essa informação para duas coisas: criar a interface do usuário para pedi-lo o valor desse parâmetro e criando uma variável de R correspondente, que pode mais tarde ser usado como entrada para os comandos R.

No exemplo acima, estamos declarando uma entrada do tipo vetorial chamado polyg. Ao executar o algoritmo, o QGIS vai abrir em R a camada selecionada pelo usuário e armazená-lá em uma variável também chamado polyg. Assim, o nome de um parâmetro também é o nome da variável que pode usar em R para concordar com o valor daquele parâmetro (portanto, você deve evitar o uso de palavras reservadas ao R como nomes de parâmetro).

Elementos espaciais como camadas vetoriais e raster são lidos usando os comandos readOGR () `` e ``brick() (você não tem que se preocupar com a adição desses comandos para o seu arquivo de descrição pois o QGIS fará) , e eles são armazenados como objetos Spatial*DataFrame . Campos da tabela são armazenados como strings contendo o nome do campo selecionado.

Tabelas são abertas usando o comando read.csv(). Se uma tabela inserida pelo usuário não está no formato CSV, será convertida antes de importá-la para R.

Adicionalmente, os arquivos raster pode ser lidos usando o comando readGDAL() em vez de brick(), usando o ##usereadgdal.

Se você é um usuário avançado e não quer o | qg | para criar o objeto que representa a camada, você pode usar o `` # # passfilename `` tag para indicar que você prefere um texto com o nome do arquivo em seu lugar. Neste caso, cabe a você abrir o arquivo antes de realizar qualquer operação com os dados que ele contém.

Com a informação em cima, podemos agora perceber a primeira linha do nosso primeiro script exemplo (a primeira linha que não começa com o comentário Python).

pts=spsample(polyg,numpoints,type="random")

A variável polygon já contém o objecto SpatialPolygonsDataFrame, portanto pode ser usado para chamar o método spsample, tal como o numpoints, que indica o número de pontos a ser adicionados ao grid de amostra criada.

Desde que declarado uma saída do tipo vetor chamado out, temos que criar uma variável chamada out e armazenar um ` Spatial*DataFrame objeto nele (neste caso, um SpatialPointsDataFrame). Você pode usar qualquer nome para as variáveis ​​intermediárias. Apenas certifique-se de que a variável que armazena o resultado final tem o mesmo nome que você usou para declará-la, e que contém um valor adequado.

Neste caso, o resultado obtido a partir do método `spsample tem que ser convertido diretamente no SpatialPointsDataFrame" objeto, uma vez que é por si um objeto de classe ``ppp, o que não é uma classe adequada para ser devolvida ao | qg |.

Se o seu algoritmo gera camadas raster, a maneira como eles são salvos vai depender se você tem usado ou não usou a opção `` #dontuserasterpackag . O que você tem usado, as camadas são salvas usando o método `` writeGDAL () ``. Se não, o `` writeRaster () `` método do pacote de  ``raster será usado.

Se usou a opção #passfilename, os arquivos de saída são gerados usando o pacote raster (com writeRaster()), mesmo que não seja usado nos arquivos de entrada.

Se o seu algoritmo não gera qualquer camada, mas sim um resultado de texto no console em vez disso, você tem que indicar que deseja que o console seja exibido uma vez que a execução seja concluída. Para isso, basta começar as linhas de comando que produzem os resultados que você deseja imprimir com a > (‘greater’) sign. A saída de todas as outras linhas não serão mostradas. Por exemplo, aqui está o arquivo de descrição de um algoritmo que realiza um teste de normalidade em um determinado campo (coluna) dos atributos de uma camada vetorial:

##layer=vector
##field=field layer
##nortest=group
library(nortest)
>lillie.test(layer[[field]])

A saída da última linha é impressa, mas a saída da primeira não é (e nem são as saídas de outras linhas de comando adicionadas automaticamente pelo QGIS).

Se o seu algoritmo criar qualquer tipo de gráficos (usando o método ``plot()), adicione a seguinte linha:

##showplots

Isto fará com que o QGIS redirecione todas as saídas gráficas R para um ficheiro temporário, que poderá ser mais tarde aberta quando a execução do R é finalizada.

Tanto os gráficos como os resultados do console serão exibidos no gestor de resultados do processamento.

Para mais informações, consulte os arquivos de script fornecidos com o SEXTANTE. A maioria deles são bastante simples e vai lhe ajudar muito a entender como criar as seus próprios scripts.

Nota

Bibliotecas rgdal e maptools são carregadas por padrão, então você não tem que adicionar os comandos correspondentes library() (você só tem que ter certeza de que esses dois pacotes estão instalados na sua distribuição R). No entanto, outras bibliotecas adicionais que você pode precisar têm que ser carregadas explicitamente. Basta adicionar os comandos necessários no início do seu script. Você também tem que ter certeza de que os pacotes correspondentes estão instalados na distribuição R usada pelo QGIS. A estrutura de processamento não vai cuidar de qualquer instalação de pacotes. Se você executar um script que requer um pacote que não está instalado a execução irá falhar e o Processamento irá tentar detectar quais pacotes estão faltando. Você deve instalar as bibliotecas que faltam manualmente antes de executar o algoritmo.

GRASS

Configurar o GRASS não é muito diferente de configurar o SAGA. Primeiro, o caminho para a pasta GRASS tem de ser definida, mas apenas se estiver a correr o Windows. Adicionalmente, um interpretador shell, (normalmente o msys.exe, que pode ser encontrado na maioria das distribuições do GRASS para o Windows) tem de ser definido e o seu caminho configurado.

Por padrão, a estrutura de processamento tenta configurar seu conector GRASS para usar a distribuição que conecta junto com o | qg |. Isso deve funcionar sem problemas na maioria dos sistemas, mas se você tiver problemas, você pode ter que configurar o conector GRASS manualmente. Além disso, se você quiser usar uma instalação GRASS diferente, você pode alterar essa configuração e aponte para a pasta onde a outra versão está instalada. GRASS 6.4 é necessário para os algoritmos funcionarem corretamente.

Se está a trabalhar em Linux, só necessita de ter a certeza que o GRASS está corretamente instalado, e pode ser executado sem problema a partir do console.

Algoritmos GRASS usar uma região para os cálculos. Esta região pode ser definida manualmente usando valores semelhantes aos encontrados na configuração saga, ou automaticamente, tendo a extensão mínima que abrange todas as camadas de entrada usadas para executar o algoritmo de cada vez. Se esta abordagem é o comportamento que você preferir, basta verificar o Use min covering region nos parâmetros de configuração GRASS.

O último parâmetro que tem que ser configurado está relacionada com o mapset. O mapset é necessário para executar o GRASS, e a estrutura de processamento cria um mapset temporário para cada execução. Você tem que informar ao sistema se os dados que você está trabalhando são geográficos (latitude/longitude) ou coordenadas projetadas.

GDAL

Não é necessário configurações adicionais para correr os algoritmos GDAL, uma vez que já está incorporado no QGIS e os algoritmos podem inferir na sua configuração a partir dele.

Orfeo Toolbox

Algoritmos do Orfeo Toolbox (OTB) pode ser executado a partir de QGIS se este sistema estiver instalado em seu sistema e configurou QGIS corretamente, para que ele possa encontrar todos os arquivos necessários (ferramentas de linha de comando e bibliotecas).

Se estiver utilizado o Linux, os binários SAGA não estarão incluídos no QGIS, portanto precisa de transferir e instalar o software. Por favor verifique o sítio na internet do OTB para mais informação sendo necessário o SAGA 2.1.

Uma vez instalado o OTB, inicie o QGIS, abra a janela de configuração do processamento e configure o provedor de algoritmo OTB. No :guilabel: `Orfeo Toolbox (image analysis)`bloco, você vai encontrar todas as definições relacionadas com a OTB. Em primeiro lugar, garanta que os algoritmos estão habilitados.

Em seguida, configure o caminho para a pasta onde estão as ferramentas da linha de comandos OTB e as bibliotecas estão instaladas:

  • nix normalmente OTB applications folder encaminha para /usr/lib/otb/applications e OTB command line tools folder é /usr/bin

  • win | Se você usar o instalador OSGeo4W, instale o pacote otb-bin e entre C:\OSGeo4W\apps\orfeotoolbox\applications como OTB applications folder e `C:\OSGeo4W\bin as OTB command line tools folder. Estes valores devem ser configurados por padrão, mas se você tiver uma instalação OTB diferente, configure-os para os valores correspondentes no seu sistema.

TauDEM

Para usar este provedor necessita de instalar as ferramentas da linha de comandos do TauDEM.

Windows

Por favor visite o sítio na internet do TauDEM para as instruções de instalação e os binários dos sistemas para 32bit e 64bit precompilados. IMPORTANTE: necessita os executáveis do TauDEM 5.0.6. A versão 5.2 não é suportada atualmente.

Linux

Não existem pacotes para a distribuição Linux, então você deve compilar o TauDEM manualmente. Como o TauDEM usa MPICH2, tem que instalá-lo primeiro usando algum gerenciador de pacotes de aplicativos. Como alternativa, o TauDEM trabalha bem com o Open MPI, assim é possível usá-lo no lugar do MPICH2.

Baixe o `código-fonte do TauDEM 5.0.6 `<http://hydrology.usu.edu/taudem/taudem5.0/TauDEM5PCsrc_506.zip>`_ e extrai-a os arquivos numa pasta.

Abra o arrquivo linearpart.h e depois a linha

#include "mpi.h"

adicione uma nova linha com

#include <stdint.h>

e irá obter

#include "mpi.h"
#include <stdint.h>

Salve as alterações e feche o arquivo. Agora abra o arquivo tiffIO.h, encontre a linha #include "stdint.h" e substitua as entre aspas (“”) com ``<>, para que possa obter

#include <stdint.h>

Salve as alterações e feche o arquivo. Crie um diretório de compilação e cd para ele

mkdir build
cd build

Configure a sua compilação com o comando

CXX=mpicxx cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..

e de seguida compile

make

Finalmente, instale o TauDEM em /usr/local/bin e execute

sudo make install