Configurazione di applicazioni esterne

Introduzione

SEXTANTE può essere esteso usando applicazioni aggiuntive richiamate dall’interno di SEXTANTE; al momento sono supportati: SAGA, GRASS,OrfeoToolBox e R oltre a qualche altra applicazione a linea di comando che fornisce funzionalità di analisi spaziale; Algoritmi che si appoggiano ad applicazoni esterne sono gestite dal proprio gestore.

Questo capitolo vi mostrerà come configurare SEXTANTE per includere queste applicazioni addizionali e vi spiegherà alcune prestazioni particolari degli algoritmi basati su di esse. Una volta configurato il sistema, sarete in grado di eseguire algoritmi esterni da ogni componente di SEXTANTE tipo il toolbox o il modellatore grafico, esattamente come ogni altro geoalgoritmo di SEXTANTE.

Inizialmente tutti gli algoritmi contenuti in applicazioni esterne non distribuite con QGIS non sono abilitate. Potete abilitarle nella finestra di configurazione di SEXTANTE. Assicuratevi che la corrispondente applicazione sia installata sul vostro sistema; l’abilitazione del gestore dell’algoritmo senza aver installato la corrispondente applicazione farà apparire l’algoritmo nella toolbox, ma genererà un errore quando cercherete di eseguirlo.

Questo dipende dal fatto che le descrizioni degli algoritmi (necessari a creare i parametri di configurazione ed a fornire a SEXTANTE le necessarie informazioni sugli stessi) non sono incluse nelle applicazioni ma in SEXTANTE; cioè sono parte di SEXTANTE, così le avete nella vostra installazione anche se non avete installato nessun altro software, tuttavia per il funzionamento è necessario aver installato sul vostro sistema i binari dell’applicazione.

Nota sui formati dei files

Quando si usa un software esterno, l’apertura di un file in QGIS non garantisce che il file venga aperto e trattato esattamente come nell’altro software. Nella maggior parte dei casi il file sarà letto in QGIS,ma in alcuni casi potrebbe non esserlo. Quando si usano databases o formati di files particolari, sia raster che vettoriali, potrebbe capitare qualche problema. Se ciò accade, assicuratevi di usare file in formati noti e riconosciuti da entrambi i programmi e controllate nella console (nello storico dei comandi o nel registro di controllo) per approfondire ciò che è andato storto.

L’uso di mappe raster di GRASS, ad esempio, è uno dei casi in cui potreste avere problemi e non riuscire a concludere il vostro lavoro nel caso doveste usare un algoritmo esterno per elaborare tale mappa. Per questo motivo queste mappe non appariranno disponibili per gli algoritmi di SEXTANTE (stiamo lavorando per risolvere questo problema, abbiate fiducia che arriverà presto).

D’altra parte non dovreste aver alcun problema con le mappe vettoriali in quantoSEXTANTE provvede automaticamente alla conversione in un formato adatto al programma esterno prima di passare la mappa. Questo aumenta il tempo di elaborazione che potrebbe diventare significativo con mappe di grande dimensione, quindi non stupitevi se richiede più tempo elaborare una mappa fornita da una connessione DB rispetto ad una di pari dimensione in formato SHP.

I gestori che non usano applicazioni esterne possono elaborare ogni mappa compatibile con QGIS perchè usano questo per aprirla.

Per quanto riguarda i formati di uscita le mappe raster posso essere salvate come files TIFF (.tif) mentre le mappe vettoriali sono salvate come files SHP. Questi sono stati scelti come “lingua franca” fra le applicazioni esterne e QGIS. Se scegliete un nome di file diverso dai precedenti, sarà modificato nel formato standard con l’aggiunta del suffisso adatto.

Nel casodi GDAL il numero di formati di uscita supportati è maggiore. Quando aprite la finestra di dialogo vedrete che avete a disposizione più formati (con le corrispondenti estensioni). Per maggiori informazioni sui formati di file supportati controllate la documentazione di GDAL.

Nota sulla selezione con mappe vettoriali

Normalmente quando un programma esterno tratta una mappa vettoriale,elabora tutti gli oggetti presenti, anche nel caso sia stata attivata una selezione parziale in QGIS. Potete limitare l’esecuzione del programma solo agli oggetti selezionati spuntando la casella Usa i comandi esterni sugli oggetti selezionati presente nel gruppo Generale. In tal caso ogni volta che eseguirete un programma esterno che usa mappe vettoriali gli oggetti selezionati saranno esportati in una nuova mappa; sarà questa ad essere elaborata dal programma.

Ricordate che selezionando questa opzione una mappa senza selezione attiva verrà tratta come una mappa con tutti gli oggetti selezionati, non come una mappa vuota.

SAGA

Per poter eseguire gli algoritmi di SAGA attraverso SEXTANTE dovete avere SAGA installato nel vostro sistema e configurato opportunamente SEXTANTE in modo che possa trovare gli eseguibili di SAGA. In particolare per eseguire gli algoritmi di SAGA sono necessari i suoi eseguibili a linea di comando. Gli eseguibili di SAGA non sono inclusi in SEXTANTE, quindi dovete scaricare ed installare il software direttamente. Controllate il sito web di SAGA per maggiori informazioni. E’ necessaria la versione SAGA 2.0.8.

Una volta installallato SAGA e nel caso stiate usando Windows, aprite la finestra di configurazione di SEXTANTE; nella casella SAGA troverete una casella cartella di SAGA; inserite il percorso della cartella dove avete installato SAGA; chiudete la finestra di configurazione ed avete SAGA pronto per essere usato in SEXTANTE.

Nel caso stiate usando Linux, questo non è necessario e non vedrete queste cartelle; al contrario dovrete assicurarvi che SAGA sia correttamente installato nel vostro sistema e che la cartella di installazione sia aggiunta alla variabile di ambiente PATH; aprite una console e date l’istruzione saga_cmd per controllare che il sistema riesca a trovare la cartella dove SAGA è stato installato.

Le limitazioni del sistema di griglia di Saga

Numerosi algoritmi di SAGA che operano su diversi layers raster, richiedono che gli stessi abbiano la stessa griglia, cioè che abbiano la stessa estensione geografica e la stessa dimensione di cella, in modo che la loro griglia coincida. Quando usate algoritmi SAGA da SEXTANTE non dovete preoccuparvi della loro estensione e della loro cella; quando date in pasto a SAGA parecchi layers raster SEXTANTE li ricampiona ad una griglia comune e quindi li passa a SAGA, a meno che gli algoritmi di SAGA siano in grado di operare direttamente su layer con griglie diverse.

La definizione della griglia comune è controllata dall’utente, troverete parecchi parametri nello gruppo SAGA della finestra di configurazione; ci sono due modi definire la griglia voluta:

  • Configurazione manuale: potete definire i valori dei seguenti parametri:

    • dimensione minima della cella in X

    • dimensione massima della cella in X

    • dimensione minima della cella in Y

    • dimensione massima della cella in Y

    • Ricampionamento della dimensione di cella

    Attenzione: SEXTANTE ricampionerà il layer in ingresso a questa griglia anche se non coincidente.

  • Configurazione automatica in funzione del layer in ingresso: per selezionare questa opzione basta spuntare la casella Usa la minima griglia che copre i layers per il ricampionamento; tutte gli altri parametri di configurazione verranno trascurati e verrà usata l’estensione minima che ingloba tutti il ayers (inviluppo); la dimensione di cella sarà quella massima dei layers in ingresso.

Per gli algoritmi che non operano su molteplici layers o che non necessitano di un’unica griglia, non verrà operato alcun campionamento.

Limitazioni per i raster multi-banda

Diversamente da QGIS, SAGA non ha supporto per i raster multibanda. Per usare raster multibanda (ad es. come immagini RGB o multispettrali) dovete prima scomporli in raster mono banda; per farciò potete usare l’algoritmo ‘SAGA/Grid - Tools/Split RGB image’ (che crea 3 immagini da un RGB) o l’algoritmo ‘SAGA/Grid - Tools/Extract band’ (per estrarre una singola banda).

Limitazioni nella dimensionedi cella

SAGA presume che i layers raster abbiano la stessa dimensione di cella sia in direzione X che in Y, se state lavorando con layer di cella rettangolare, potreste ottenere risultati inaspettati; in tal caso SEXTANTE emetterà un avviso nel log di SEXTANTE per indicare che il layer in ingresso potrebbe non essere adatto per essere elaborato da SAGA.

Registrazioni di controllo

Quando SEXTANTE chiama SAGA, lo fa attraverso l’interfaccia a linea di comando , passando una lista di istruzioni per completare tutte le operazioni richieste. SAGA mostra la progressione dell’attività visualizzando informazioni sulla console compresa la stima percentuale dell’attività già eseguita, insieme ad informazioni aggiuntive; queste informazioni sono filtrate da SEXTANTE e usate per aggiornare la barra di stato durante l’esecuzione dei comandi.

Sia i comandi impartiti da SEXTANTE che le informazioni emesse da SAGA possono essere registrate insieme alle altre registrazioni di controllo di SEXTANTE; queste potrebbero rivelarsi utili per seguire in dettaglio quello che avviene mentre SEXTANTE esegue gli algoritmi di SAGA; troverete due caselle di spunta Stampa dei messaggi in console e Rigestrazione della esecuzione dei comandi per attivare il meccanismo di registrazione.

Alcuni altri gestori che usano applicazioni esterne mediante istruzioni a linea di comando hanno opzioni simili, quindi le potreste trovare in altre situazioni della configurazione di SEXTANTE.

R e gli scripts R

R è integrato in SEXTANTE in modo diverso da SAGA perchè non c’è un insieme predefinito di algoritmi che potete lanciare (salvo alcuni casi); al contrario dovete scrivere i vostri scripts e chiamare i comandi di R esattamente come fareste in R e in modo molto simile a quanto abbiamo detto nel capitolo dedicato agli scripts diSEXTANTE. Questo capitolo vi mostra la sintassi da usare per chiamare i comandi di R dall’interno di SEXTANTE e come usare gli oggetti di SEXTANTE (layers,tabelle) in questo.

La prima cosa da fare,come abbiamo già detto per SAGA, è dire a SEXTANTE dove sono installati gli eseguibili di R. Potete farlo usando la casella cartella di R nella finestra di configurazione di SEXTANTE. Una volta configurato questo parametro potete cominciare a creare i vostri scripts per R ed a eseguirli.

Ancora una volta, la cosa è diversa in Linux e dovete solo assicurarvi che la cartelladiR sia inclusa nella variabile di ambiente PATH; se eseguendo il comando R in una console, R si avvia, allora siete pronti per partire.

Per aggiungere un nuovo algoritmo che chiama una funzione di R (o un più complesso script che avete sviluppato e vorreste averlo disponibile in SEXTANTE) dovete creare uno script che dica a SEXTANTE come eseguire quell’operazione ed attivare i corrispondenti comandi di R.

I files di script hanno l’estensione .rsx e crearliè molto facile se avete la conoscenza basilare della sintassi di Re delle sue regole di scripting; devono essere salvati nella cartella di R; potete configurare tale cartella nel gruppo di configurazione di R (disponibile nella finestra di dialogo di SEXTANTE), esattamente come per la cartella dei normali script di SEXTANTE.

Diamo uno sguardo ad uno script molto semplice che chiama la funzione di R “spsample” per creare una griglia casuale all’interno dei confini dei poligoni (di un polygon layer); questa funzione appartiene al pacchetto “maptools”. Poichè la gran parte degli algoritmi che vorrete incorporare in SEXTANTE useranno o genereranno dati spaziali, la conoscenza dei pacchetti spaziali tipo “maptools” e specialmente “sp” è obbligatoria.

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

Le prime linee, che partono con una coppia di simboli di commento del Python (##) comunicano a SEXTANTE i valori di ingresso degli algoritmi descritti nel file ed i valori di uscita che genereranno. Essi usano la stessa sintassi degli script di SEXTANTE che abbiamo già visto, quindi non li ripeteremo quì; controllate la corrispondente sezione per maggiori ragguagli.

Quando dichiarate un parametro di ingresso, SEXTANTE usa quell’informazione per due scopi:creare l’interfaccia per la richiesta all’utente del valore di quel parametro e creare una corrispondente variabile di R che può essere passata successivamente ai comandi di R.

Nel precedente esempio abbiamo dichiarato un valore di ingresso di tipo “vettore” chiamato “polyg”. Nell’esecuzione dell’algoritmo SEXTANTE aprirà in R il layer selezionato dall’utente e lo memorizzerà in una variabile di nome “polyg”, quindi il nome del parametro è anche il nome della variabile che si usa in R per accedere al valore del parametro (di conseguenza evitate di usare parole riservate di R come nomi di parametro).

Elementi spaziali tipo layer vettoriali e raster sono letti usando i comandi readOGR() e readGDAL() (non dovete preoccuparvene in quanto ci penserà SEXTANTE ad aggiungere tali comandi al vostro file di descrizione) e salvati come oggetti ``Spatial*DataFrame``I campi di una tabella sono salvati come stringhe contenenti il nome del campo selezionato.

Le tabelle sono aperte usando il comando read.csv().Se la tabella non è in formato CSV sarà preventivamente convertita in tale formato prima di essere importata in R.

Detto ciò, ora possiamo capire la prima linea del nostro script di esempio (la prima senza il segno di commento in Python).

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

La variabile polygon contiene un oggetto SpatialPolygonsDataFrame così può essere usato per chiamare la funzione spsample o similmente la funzione numpoints che indica il numero di punti da aggiungere alla griglia creata.

Avendo dichiarato un risultato di tipo vettore chiamato out, dobbiamo creare una variabile di nome out e memorizzarvi un oggetto Spatial*DataFrame (in questo caso un SpatialPointsDataFrame). Potete usare qualsiasi nome per le variabili intermedie, assicuratevi però che la variabile contenente il risultato finale abbia lo stesso nome con cui l’avete dichiarata e che contenga un valore appropriato.

In questo caso il risultato ottenuto dalla funzione spsample deve essere convertito esplicitamente in un oggetto SpatialPointsDataFrame in quanto è nativamente un oggetto di classe ppp che non è una classe adatta per SEXTANTE.

Se il vostro algoritmo non genera un layer ma un risultato testuale, dovete dire a SEXTANTE che volete attivare la console una volta finita l’elaborazione. Per farlo iniziate la linea di comando che produce il risultato che volete visualizzare con il carattere > (maggiore di); il risultato di tutti gli altri comandi non sarà mostrato. Ad esempio quì c’è il file di descrizione di un algoritmo che esegue un test di normalità su un dato campo (colonna) degli attributi di un layer vettoriale:

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

Il risultato dell’ultima linea sarà stampato,ma il risultato della prima no (e nemmeno quelli delle altre linee aggiunte automaticamente da SEXTANTE).

Se il vostro algoritmo produce qualche tipo di risultato grafico (usando la funzione plot()) dovete aggiungere la linea seguente:

##showplots

Questo provocherà la redirezione di tutti i risultati grafici di R verso un file temporaneo che potrà essere aperto ad avvenuta esecuzione di R.

I risultati sia grafici che testuali saranno visualizzati nel gestore dei risultati di SEXTANTE.

Per maggiori informazioni controllate gli script forniti con SEXTANTE; la maggior parte di essi sono molto semplici e vi aiuteranno moltissimo a capire come costruire i vostri.

GRASS

La configurazione di GRASS non è molto differente da quella di SAGA. Per prima cosa occorre definire, ma solo nel caso di Windows, il percorso della cartella di GRASS; Inoltre occorre definire la shell di interfaccia normalmente msys.exe che si trova in molte distribuzioni di GRASS per Windows) ed il suo percorso.

Normalmente SEXTANTE cerca di configurare il suo connettore per GRASS per usare la distribuzione inclusa in QGIS; questo dovrebbe funzionare senza problemi nella maggior parte dei casi, ma se riscontrate dei problemi, avete la possibilità di agire manualmente. Inoltre se volete usare una versionedi GRASS differente, potete cambiare la configurazione per indirizzarla verso il percorso della cartella dove avete salvato la versionedi GRASS che volete usare. Per un corretto funzionamento degli algoritmi è richiesta la versione 6.4 d iGrass.

Se state usando Linux dovete solo assicurarvi che GRASS è correttamente installato e che può essere attivato senza problemi da una console.

Gli algoritmi di GRASS usano una regione per le loro elaborazioni.Questa regione può essere definita manualmente, usando valori simili a quelli usati per la configurazione di SAGA, o automaticamente, prendendo ogni volta la minima estensione geografica che contiene i layers usati per il calcolo. Se preferite questo funzionamento spuntate la casella Usa la minima regione disponibile nei parametri di configurazione di GRASS.

GRASS contiene dei files di aiuto che descrivono ogni algoritmo. Se spuntate la casella GRASS cartella di aiuto SEXTANTE l’aprirà quando userete il bottone [Visualizza aiuto] della finestra dei parametri dell’algoritmo.

L’ultimo parametro da configurare è legato al mapset. È necessanio un mapset. per eseguire GRASS e SEXTANTE ne crea uno provvisorio per ogni esecuzione. Dovete segnalare a SEXTANTE se state usando coordinate geografiche (lat/lon) o proiettate.

GDAL

Per eseguire GDAL non è necessaria alcuna configurazione perchè è già incorporato in QGIS e SEXTANTE preleva da lì la propria configurazione.

Orfeo ToolBox

Gli algoritmi di Orfeo ToolBox (OTB) possono essere usatiin SEXTANTE seavete OTB installato sul vostro sistema e configurato opportunamente SEXTANTE in modo che possa trovare tutti i files necessari (comandi a linea e librerie). Prendete nota che gli eseguibili di SEXTANTE non sono inclusi in SEXTANTE,per cui dovete scaricarli ed installarli da soli. Controllate il sito di OTB per maggiori informazioni.

Una volta installato OTB, avviate QGIS, aprite la finestra di configurazione di SEXTANTE e inserite il gestore degli algoritmi di OTB. Nella casella Orfeo Toolbox (analisi di immagini) troverete ogni parametro relativo a OTB; per prima cosa assicuratevi che gli algoritmi di OTB sono abilitati.

Quindi configurate il percorso della cartella che contiene i comandi e le librerie di OTB:

  • nix normalmente OTB cartella dell’applicazione punta a /usr/lib/otb/applications e OTB cartella dei comandi è /usr/bin

  • win se usate l’installatore OSGeo4W allora installate il pacchetto otb-bin ed inserite C:\OSGeo4W\apps\orfeotoolbox\applications come OTB cartella dell’applicazione e C:\OSGeo4W\bin come OTB cartella dei comandi

TauDEM

Per installare questo gestore dovete installare gli strumenti di TauDEM a linea di comando.

Windows

Per le istruzioni di installazione e gli eseguibili precompilati per sistemi a 32bit e 64bit visitate il sito TauDEM <http://hydrology.usu.edu/taudem/taudem5.0/downloads.html>. IMPORTANTE: servono gli eseguibili della versione 5.0.6, la versione 5.2 non è al momento supportata.

Linux

Per molte distribuzioni Linux non sono disponibili pacchetti precompilati così dovete compilare TauDEM da soli. Poichè TauDEM usa MPICH2, per prima cosa dovete installarlo mediante il vostro gestore dei pacchetti preferito. TauDEM lavora bene anche con OpenMPI, quindi potete usare questo in sostituzione di MPICH2.

Scaricate i sorgenti di TauDEM 5.0.6 dal sito <http://hydrology.usu.edu/taudem/taudem5.0/TauDEM5PCsrc_506.zip>` e scompattate i files in qualche cartella.

Aprite il file linearpart.h ed aggiungete dopo la linea

#include "mpi.h"

aggiungete una nuova linea con

#include <stdint.h>

così avrete

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

Salvate le modifiche e chiudete il file. Ora aprite il file tiffIO.h, cercate la linea #include "stdint.h" e sostituite gli apostrofi ("") con <>, così avrete

#include <stdint.h>

Salvate le modifiche e chiudete il file.Create la cartella di compilazione e spostatevi in essa

mkdir build
cd build

Preparate la vostra compilazione con il comando

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

e quindi compilate

make

Infine per installare TauDEM in /usr/local/bin eseguite

sudo make install