Configurando aplicativos externos

Introdução

O SEXTANTE pode ser extendido usando aplicativos adicionais, chamando-os de dentro do SEXTANTE. Atualmente, GRASS, SAGA, OTB (Orfeo Toolbox) e R são suportados, juntamente com alguns outros aplicativos que fornecem funcionalidades de análise de dados espaciais. Algoritmos que dependem de uma aplicação externa são geridos por seu próprio provedor de algoritmos.

Este capítulo irá mostrar-lhe como configurar o SEXTANTE para incluir esses aplicativos adicionais, e explicaremos ainda algumas características particulares dos seus algoritmos. Depois de ter configurado corretamente os aplicativos, você será capaz de executar algoritmos externos de qualquer componente SEXTANTE por meio da caixa de ferramentas ou do modelador gráfico, assim como se faz com qualquer outro geoalgoritmo do SEXTANTE.

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ê tenta executá-los.

Isto porque os procedimentos característicos dos algoritmos (necessário para criar a janela de diálogo de parâmetros e dar ao SEXTANTE as informações necessárias sobre o algoritmo) estão incluídos em cada aplicativo do SEXTANTE. Isto é, eles fazem parte do SEXTANTE, então você os têm em sua instalação SEXTANTE, 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.

Notas sobre os formatos de arquivos

Ao usar um software externo, abrindo um ficheiro 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 outros, 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.

Using GRASS raster layers is, for instance, one case in which you might have trouble and not be able to complete your work if you call an external algorithm using such a layer as input. For this reason, these layers will not appear as available to SEXTANTE algorithms (we are currently working on solving this, and expect to have it ready soon).

Você deve, no entanto, não encontrar problemas sobretudo com camadas vetoriais, pois o SEXTANTE converte automaticamente do formato de arquivo original para um 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 em um shapefile.

Provedores que não usam aplicativos externos podem processar qualquer camada que pode ser aberta no QGIS.

Regarding output formats, raster layers can be saved as TIFF (.tif) files, while vector layers are saved as shapefiles (.shp). These have been chosen as the ‘lingua franca’ between supported third party applications and QGIS. If the output filename that you select is not one of the above, it will be modified, adding the corresponding suffix, and the default file format will be used.

No caso de GDAL, o número de formatos de saída suportados é maior. Quando você abre a janela de seleção de arquivos, você verá que existem mais formatos (e suas extensões correspondentes disponíveis). Para mais informações sobre quais formatos são suportados, consulte a documentação GDAL.

Notas sobre seleção de camadas vetoriais

By default, when an external algorithm takes a vector layer, it will use all its features, even if a selection exist in QGIS. You can make an external algorithm aware of that selection by checking the Use selected features in external applications item in the General settings group. When you do so, each time you execute an external algorithm that uses a vector layer, the selected features of that layer will be exported to a new layer, and the algorithm will work with that new layer instead.

Note que se esta opção for selecionada, uma camada com nenhuma seleção vai se comportar como uma camada com todos os seus componentes selecionados, e não como uma camada vazia.

SAGA

Algoritmos SAGA podem ser executados a partir do SEXTANTE, se você tinver o SAGA instalado em seu sistema e configurar o SEXTANTE corretamente para que ele possa encontrar os qrquivos executáveis do SAGA. Em particular, linhas de comando são necessárias para executar algoritmos SAGA. Os códigos binários do SAGA não estão incluídos no SEXTANTE, então você tem que baixar e instalar o software manualmente. Visite o site do SAGA para mais informações. a versão do SAGA 2.0.8 é necessária.

Once SAGA is installed, and if you are running Windows, open the SEXTANTE configuration dialog. In the SAGA block you will find a setting named SAGA Folder. Enter the path to the folder where SAGA is installed. Close the configuration dialog and now you are ready to run SAGA algorithms from SEXTANTE.

No caso se você estiver usando Linux, não há necessidade de configurar isso, verá que não existe essa configuração de pasta. Em vez disso, deve se certificar de que o aplicativo SAGA está devidamente instalado e sua pasta, adicionada no ambiente PATH do Linux. Para confirmar, basta abrir um console e digitar o comando saga_cmd para verificar se o aplicativo SAGA pode ser encontrado.

Sobre as limitações do sistema 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 (cellsize). Ao chamar algoritmos SAGA do SEXTANTE, você pode usar qualquer camada, independentemente da sua resolução espacial (cellsize) e extensão, de forma individual. Quando múltiplas camadas raster são utilizados como entrada para um algoritmo SAGA, o SEXTANTE irá adaptá-los a um sistema de coordenadas comum e, em seguida, passará ao SAGA (a 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 grid de destino:

  • Setting it manually. You define the extent setting the values of the following parameters:

    • Reamostragem min X

    • Reamostragem max X

    • Reamostragem min Y

    • Reamostragem max Y

    • Reamostragem da resolução espacial (cellsize)

    Observe que o SEXTANTE irá reprojetar as camadas de entrada,na mesma medida, mesmo que não se sobreponham.

  • Setting it automatically from input layers. To select this option, just check the Use min covering grid system for resampling option. All the other settings will be ignored and the minimum extent that covers all the input layers will be used. The cellsize of the target layer is the maximum of all cellsizes of the input layers.

Para algoritmos que não usam múltiplas camadas do tipo raster, ou para aquelas camadas que não precisam de um sistema de projeção único de entrada, esses parametros serão executados sem reprojeção antes de chamar o SAGA.

Limitações para multiplas bandas de camadas

Unlike QGIS, SAGA has no support for multiband layers. If you want to use a multiband layer (such as an RGB or multispectral image), you first have to split it into singlebanded images. To do so, you can use the ‘SAGA/Grid - Tools/Split RGB image’ algorithm (which creates 3 images from an RGB image) or the ‘SAGA/Grid - Tools/Extract band’ algorithm (to extract a single band).

Limitações na resolução espacial (cellsize)

O SAGA pressupõe que camadas raster têm a mesma cellsize no eixo X e Y. Se você está trabalhando com uma camada com valores diferentes para seus cellsizes horizontal e vertical, você pode obter resultados inesperados. Neste caso, uma mensagem de advertência será adicionada ao log SEXTANTE, o que indica que uma camada de entrada pode não estar adequada para ser processada pelo SAGA.

Carregando

Quando o SEXTANTE 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 pelo SEXTANTE e usada ​​para atualizar a barra de progresso durante a execução do algoritmo.

Both the commands sent by SEXTANTE and the additional information printed by SAGA can be logged along with other SEXTANTE log messages, and you might find them useful to track in detailed what is going on when SEXTANTE runs a SAGA algorithm. You will find two settings, namely Log console output and Log execution commands to activate that logging mechanism.

A maioria dos outros provedores que usam uma aplicação externa e são chamados através de linhas de comandos tem opções semelhantes, de modo que você vai encontrá-los, bem como em outros lugares na lista de configurações do SEXTANTE.

R and R scripts

A integração da linguagem R com o SEXTANTE é 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 aos scripts SEXTANTE. 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.

The first thing you have to do, as we saw in the case of SAGA, is to tell SEXTANTE where you R binaries are located. You can do so using the R folder entry in the SEXTANTE configuration dialog. Once you have set that parameter, you can start creating your own R scripts and executing them.

Mais uma vez, esta configuração é diferente no Linux, e você só tem que ter certeza de que a pasta R está incluído no ambiente PATH. Para isso você pode começar apenas digitando R no console, e assim R está pronto para uso.

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 SEXTANTE), você tem que criar um arquivo de script que informa ao SEXTANTE como proceder com essa operação e inserir os comoandos correspondentes em R.

Script files have the extension .rsx and creating them is pretty easy if you just have a basic knowledge of R syntax and R scripting. They should be stored in the R scripts folder. You can set this folder in the R settings group (available from the SEXTANTE settings dialog), just like you do with the folder for regular SEXTANTE scripts.

Vamos dar uma olhada em um arquivo muito simples de script, que chama o método R spsample para criar uma grade aleatória dentro do limite dos polígonos em uma dada camada do polígono. Este método pertencem ao pacote maptools`. Uma vez que quase todos os algoritmos que você gostaria de incorporar ao Sextante 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 sinal de duplo comentário Python (##), informa ao SEXTANTE as entradas do algoritmo descrito no arquivo e as saídas que ele vai gerar. Eles trabalham exatamente com a mesma sintaxe que os scripts SEXTANTE que já vimos, para que não sejam descritos aqui novamente. Verifique a seção correspondente para obter mais informações.

When you declare an input parameter, SEXTANTE uses that information for two things: creating the user interface to ask the user for the value of that parameter and creating a corresponding R variable that can be later used as input for R commands.

No exemplo acima, estamos declarando uma entrada do tipo vetorial chamado polyg. Ao executar o algoritmo, o SEXTANTE 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 podemos usar em R, exceto para o valor do parâmetro (portanto, você deve evitar o uso de palavras reservadas ao R como nomes de parâmetro).

Elementos espaciais, tais como vetores e camadas raster são lidos usando os comandos readOGR() e readGDAL() (você não tem que se preocupar em acrescentar os comandos para o seu arquivo de descrição, o SEXTANTE vai fazer isso) e armazená-las como objetos ``Spatial*DataFrame`. Campos de tabelas são armazenados como texto 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.

Sabendo disso, podemos agora compreender a primeira linha do nosso script de exemplo (a primeira linha que não começa com um comentário Python).

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

A variável polygon já contém um objeto SpatialPolygonsDataFrame, para que possa ser usado para chamar o método spsample, assim como um numpoints, o que indica o número de pontos a serem adicionados para a grade de amostra criada.

Como declaramos uma saída vetorial, chamada out, temos que criar uma variável chamada out e criar nela um grupo de objetos Spatial*DataFrame` (neste caso, um ``SpatialPointsDataFrame). Você pode usar qualquer nome para as variáveis ​​intermediárias. Apenas certifique-se que a variável que armazena o resultado final tem o mesmo nome que você usou para declará-la, e contém um valor adequado.

Neste caso, o resultado obtido a partir do método spsample tem que ser convertido em um objeto explicito SpatialPointsDataFrame, uma vez que é em si mesmo um objeto da classe ppp, o que não é aceitável em uma classe a ser enviada para o SEXTANTE.

If you algorithm does not generate any layer, but a text result in the console instead, you have to tell SEXTANTE that you want the console to be shown once the execution is finished. To do so, just start the command lines that produce the results you want to print with the > (‘greater’) sign. The output of all other lines will not be shown. For instance, here is the description file of an algorithms that performs a normality test on a given field (column) of the attributes of a vector layer:

##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 é (assim como as saídas de outras linhas de comando adicionadas automaticamente pelo SEXTANTE não serão).

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

##showplots

This will cause SEXTANTE to redirect all R graphical outputs to a temporary file, which will be later opened once R execution has finished.

Ambos, os gráficos e os resultados do console serão mostrados no gerenciador de resultados do SEXTANTE.

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.

GRASS

Configuring GRASS is not much different from configuring SAGA. First, the path to the GRASS folder has to be defined, but only if you are running Windows. Additionaly, a shell interpreter (usually msys.exe, which can be found in most GRASS for Windows distributions) has to be defined and its path set up as well.

Por padrão, o SEXTANTE tenta configurar uma conexão com o GRASS usando a distribuição GRASS que vem junto com QGIS. Isso deve funcionar sem problemas na maioria dos sistemas, mas se você tiver problemas, é necessário fazer isso manualmente. Além disso, se você quiser usar uma versão do GRASS diferente, é possivel alterar essa configuração e apontar o caminho para a pasta onde essa outra versão se encontra. o GRASS 6.4 é necessário para os algoritmos funcionarem corretamente.

Se você estiver executando o QGIS no Linux, só tem que se certificar de que o GRASS está instalado corretamente, e que ele pode ser executado sem problemas a partir de um console.

GRASS algorithms use a region for calculations. This region can be defined manually using values similar to the ones found in the SAGA configuration, or automatically, taking the minimum extent that covers all the input layers used to execute the algorithm each time. If this is the behaviour you prefer, just check the Use min covering region option in the GRASS configuration parameters.

GRASS includes help files describing each algorithm. If you set the GRASS help folder parameter, SEXTANTE will open them when you use the [Show help] button from the parameters window of the algorithm.

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

GDAL

Nenhuma configuração adicional é necessária para executar algoritmos GDAL, uma vez que ele já é incorporado ao QGIS e o SEXTANTE pode inferir sua configuração.

Orfeo ToolBox

Os algoritmos Orfeo Toolbox (OTB) podem ser executados a partir do SEXTANTE, desde que você tenha instalado o OTB em seu sistema e configurado corretamente o SEXTANTE para que ele possa encontrar todos os arquivos necessários (linha de comando, ferramentas e bibliotecas). Observe que os códigos binários do OTB não estão incluídos no SEXTANTE, então você tem que baixar e instalar o software manualmente. Visite o site do OTB para mais informações.

Once OTB is installed, start QGIS, open the SEXTANTE configuration dialog and configure OTB algorithm provider. In the Orfeo Toolbox (image analysis) block you will find all settings related to OTB. First ensure that algorithms are enabled.

Em seguida, configure o caminho para a pasta onde o OTB (linha de comando ferramentas e bibliotecas) estão instalados:

  • nix usually OTB applications folder point to /usr/lib/otb/applications and OTB command line tools folder is /usr/bin
  • win if you use OSGeo4W installer, than install otb-bin package and enter C:\OSGeo4W\apps\orfeotoolbox\applications as OTB applications folder and C:\OSGeo4W\bin as OTB command line tools folder

TauDEM

To use this provider you need to install TauDEM command line tools.

Windows

Please visit TauDEM homepage for installation instructions and precompiled binaries for 32bit and 64bit systems. IMPORTANT: you need TauDEM 5.0.6 executables, version 5.2 currently not supported.

Linux

Não existem pacotes para a distribuição Linux, então você deve compilar o TauDEM manualmente. Como TauDEM usa MPICH2, primeiro tem que instalá-lo usando algum gerenciador de pacotes de aplicativos. TauDEM também funciona bem com OpenMPI, assim é possível usá-lo em vez de MPICH2.

Download TauDEM 5.0.6 source code and extract files in some folder.

Open linearpart.h file and add after line

#include "mpi.h"

adicione uma nova linha com

#include <stdint.h>

para obter sucesso

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

Save changes and close file. Now open tiffIO.h, find line #include "stdint.h" and replace quotes ("") with <>, so you’ll get

#include <stdint.h>

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

mkdir build
cd build

Configure a sua compilação com o comando

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

e então compile

make

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

sudo make install