Configurazione di applicazioni esterne

L’ambiente Processing può essere esteso usando applicazioni aggiuntive. Al momento sono supportati: SAGA, GRASS, OTB (OrfeoToolBox) e R oltre a qualche altra applicazione a linea di comando che fornisce funzionalità di analisi spaziale. Algoritmi che si appoggiano ad applicazioni esterne sono gestiti dal loro stesso gestore.

Questo capitolo vi mostrerà come configurare Processing per includere queste applicazioni addizionali e vi spiegherà alcune caratteristiche particolari degli algoritmi basati su di esse. Una volta configurato in maniera corretta il sistema, sarete in grado di eseguire algoritmi esterni da qualsiasi componente, come Strumenti o il modellatore grafico, esattamente come si fa con qualsiasi altro geoalgoritmo.

Per default, tutti gli algoritmi che si affidano ad una applicazione esterna non fornita con QGIS, non sono abilitati. E’ possibile abilitarli nella finestra di configurazione. Siate sicuri che la corrispondente applicazione sia già installata nel vostro sistema. Abilitando un fornitore di algoritmi senza aver installato l’applicazione per esso necessaria, farà si che l’algoritmo appaia tra gli strumenti, ma un errore verrà generato quando si cercherà di eseguirlo.

Questo dipende dal fatto che le descrizioni degli algoritmi (necessarie a creare i parametri di configurazione ed a fornire le necessarie informazioni sugli stessi) non sono incluse nelle applicazioni ma in QGIS. Cioè sono parte di QGIS, 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 per gli utenti Windows

Se tu non sei un utente avanzato e stai eseguendo QGIS su windows, potresti non essere interessato nella lettura del resto del capitolo. Siate sicuri che avete installato QGIS nel vostro sistema usando l’applicazione OSGeo4W. Essa installerà automaticamente nel sistema SAGA, GRASS e OTB, e li configurerà in modo che possano essere lanciati da QGIS. Tutti gli algoritmi nella vista semplificata del toolbox saranno pronti per essere eseguiti, senza la necessità di ulteriori configurazioni.

Se volete sapere di più su come questi gestori di algoritmi funzionano, o volete usare alcuni algoritmi non inclusi nella visualizzazione semplificata (come ad esempio gli script R), continuate a leggere

Nota sui formati dei file

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 database o formati di file 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 layer raster GRASS è, per esempio, un caso in cui potreste avere problemi e non essere in grado di completare il vostro lavoro se lanciate un algoritmo esterno usando in input questo layer. Per questa ragione questi layer non appariranno disponibili agli algoritmi

D’altra parte non dovreste aver alcun problema con le mappe vettoriali in quanto QGIS 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.

Fornitori di algoritmi che non usano applicazioni esterne possono elaborare qualsiasi layer aperto in QGIS, poichè essi lo aprono in analisi tramite QGIS.

Per quanto concerne i formati di output, tutti i formati supportati possono essere usati, sia essi layer raster o vettore. Alcuni fornitori di algoritmi non supportano alcuni formati, ma tutti possono esportare file in comuni formati raster che possono essere trasformati automaticamente da QGIS. Come nel caso di layer di input, se è necessaria questa conversione, ciò incrementerà il tempo di elaborazione.

Se l’estensione del nome file specificato quando si chiama un algoritmo non si adatta con l’estensione di nessuno dei formati supportati da QGIS, allora un suffisso verrà aggiunto per impostare un formato di default. Nel caso di layer raster sarà usata l’estensione tif, mentre per layer vettore è usato shp

Nota sulla selezione di layer vettore

Le applicazioni esterne sono anche sensibili alla selezione che si esegue sui layer vettore in QGIS. Comunque ciò richiede la riscrittura di tutti i layer vettoriali di input, come se essi fossero originariamente in un formato non supportato da un’applicazione esterna. Solo quando non esiste selezione, o non è abilitata l’opzione Use only selected features nella configurazione generale di processing, è possibile che un layer possa essere direttamente passato a una applicazione esterna.

In altri casi, è necessaria l’esportazione delle sole caratteristiche selezionate, che comporta un allungamento dei tempi di esecuzione

SAGA

Gli algoritmi di SAGA possono essere lanciati da QGIS se avete SAGA installato nel vostro sistema e se configurate l’ambiente di processing in modo che possa ritrovare l’eseguibile SAGA. In particolare, è necessario l’eseguibile SAGA da riga di comando, per lanciare gli algoritmi SAGA.

Nel caso di esecuzione su Windows, il programma di installazione standalone o l’installatore OSGEO4W, installa SAGA insieme a QGIS, e il percorso è automaticamente configurato, dunque non è necessario fare nient’altro.

Se avete installato SAGA da voi (ricorda che è necessaria la versione 2.1), deve essereconfigurato il percorso all’eseguibile SAGA. per far ciò, aprite la finestra di configurazione. Nel blocco SAGA troverete un’impostazione denominata SAGA Folder. Inserite il percorso alla cartella dove SAGA è installato. Chiudete la finestra di configurazione e adesso sarete pronti per lanciare gli algoritmi SAGA da QGIS.

I file binari di SAGA non sono inclusi in Processing nel caso in cui state eseguendo linux, per cui dovete scaricare e installare il software da voi. Per favore controllate il sito di SAGA per maggiori informazioni. E’ necessario SAGA 2.1.

In questo caso non è necessario configurarlo, e non vedrete tali cartelle. Piuttosto dovete verificare che SAGA sia correttamente installato e le sue cartelle siano aggiunte alla variabile di ambiente PATH. Aprite una console e digitate saga_cmd per verificare che il sistema può trovare dove i binari di SAGA sono localizzati.

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 QGIS non dovete preoccuparvi della loro estensione e della loro cella; quando date in pasto a SAGA parecchi layers raster |qg|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:

    • Resampling min X
    • Resampling max X
    • Resampling min Y
    • Resampling max Y
    • Resampling cellsize

    Attenzione: QGIS 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

Al contrario di QGIS, SAGA non ha il supporto per layer multi-banda. Se volete usare layer multi-banda (coem un layer RGB o multispettrale), dovete per prima cosa dividerlo in immagini a singola banda. Per far ciò, potete usare l’algoritmo ‘SAGA/Grid - Tools/Split RGB image’ (che crea 3 immagini da un’immagine RGB) o l’algoritmo ‘SAGA/Grid - Tools/Extract band’ (per estrarre una singola banda).

Limitazioni nella dimensionedi cella

SAGA presuppone che i layer raster hanno la stessa risoluzione lungo gli assi X e Y. Se state lavorando con un layer con differenti valori di risoluzioni orizzontale e verticale, potrete ottenere risultati inattesi. in questo caso, un messaggio di avviso sarà aggiunto al file log, indicando che un layer di input può non essere adatto per essere processato da SAGA.

Registrazioni di controllo

Quando |qg|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|qg| e usate per aggiornare la barra di stato durante l’esecuzione dei comandi.

Sia i comandi inviati da QGIS che le informazioni aggiuntive stampate da SAGA possono essere registrati in altri messaggi di registro di processing, e si potrebbe ritenerli utilil per monitorare in dettaglio cosa succede quando QGIS esegue un algoritmo SAGA.

Molti altri fornitori di algoritmi che usano applicazioni esterne e le chiamano tramite la linea di comando hanno simili opzioni, così che troverete esse anche in altri posizioni nella lista di impostazioni di processing.

R. Creating R scripts

R è integrato in QGIS 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 di QGIS. Questo capitolo vi mostra la sintassi da usare per chiamare i comandi di R dall’interno di |qg|e come usare gli oggetti di |qg| (layers, tabelle) in questo.

La prima cosa da fare,come abbiamo già detto per SAGA, è dire a QGIS dove sono installati gli eseguibili di R. Potete farlo usando la casella R folder nella finestra di configurazione di QGIS. 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 cartella di R 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 QGIS) dovete creare uno script che dica a QGIS come eseguire quell’operazione ed attivare i corrispondenti comandi di R.

I file script hanno estensione :file:`.rsx`e crearli è abbastanza facile se avete una conoscenza di base della sintassi di R e delle regole di scrittura di R. Essi dovrebbero essere memorizzati nella cartella R-scripts. Potete selezionare questa cartella nel gruppo di impostazione :guilabel:`R`(disponibile dalla finestra di impostazione di processing), così come si fa per la cartella dei normali script di processing.

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 in un dato layer di tipo poligono. Questa funzione appartiene al pacchetto “maptools”. Poichè la gran parte degli algoritmi che vorrete incorporare in QGIS 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 righe, che iniziano con un doppio simbolo di commento Python (##), indicano a QGIS gli input dell’algoritmo descritto nel file e gli output che esso produrrà. Esse funaionano esattamente con la stessa sintassi degli script di QGIS che si son già visti, cosicchè non saranno descritti qui ancora una volta. Selezioante la sezione processing_scripts per maggiori informazioni.

Quando dichiarate un parametro di ingresso, QGIS 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 QGIS 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 come i layer vettore e i layer raster sono letti usando i comandi readOGR() and brick() (non dovete essere preoccupati di aggiungere questi comandi al vostro file di descrizione, lo farà QGIS) e memorizzati come oggetti Spatial*DataFrame. I campi tabella sono memorizzati 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.

Inoltre i file raster possono essere letti usando il comando readGDAL()``invece di ``brick(), usando ##usereadgdal.

Se siete degli utenti avanzati e non volete che sia QGIS a creare l’oggetto che rappresenta il layer, potete usare l’etichetta ``##passfilename``per indicare che invece, preferite una stringa con il nome del file. In questo caso è di vostra competenza l’apertura del file prima di eseguire le operazioni sui dati in esso contenuti.

Dalla precedente informazione, è possibile capire la prima riga del nostro primo file script di esempio (prima riga che non inizia con un commento Python).

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

La variabile polygon contiene un oggetto SpatialPolygonsDataFrame che 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 dal metodo spsample` deve essere convertito esplicitamente in un oggetto SpatialPointsDataFrame, poichè è esso stesso un oggetto di classe ppp, che non è una classe adatta ad essere restituita a QGIS.

Se il vostro algoritmo genera dei layer raster, la modalità con cui sono memorizzati dipenderà se avete usato o meno l’opzione #dontuserasterpackage. Se l’avete usata, i layer sono memorizzati usando il metodo writeGDAL(). In caso contrario verrà usato il metodo writeRaster()``dal pacchetto ``raster.

Se avete usato l’opzione #passfilename, gli output sono generati usando il pacchetto raster (con writeRaster()), anche se non esso non è usato per gli input.

Se il vostro algoritmo non genera alcun layer, ma piuttosto un risultato testuale nella console. dovete indicare che volete la visualizzazione della console al termine dell’esecuzione. Per fare questo, lanciare la riga di comando che produce il risultato che vogliamo stampare con il simbolo > (‘maggiore’). L’output di tutte le altre righe non verrà visualizzato. Per esempio, qui è rioportata la descrizione di un file di un algoritmo che svolge un test di normalità di un dato campo (colonna) degli attributi di un layer vettore:

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

L’output dell’ultima riga viene stampata, ma non l’uscita della prima (e neanche gli output delle altre righe aggiunte in automatico da QGIS).

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.

Sia i risultati grafici che quelli da console saranno mostrati nel gestore risultati di processing.

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.

Nota

Le librerie rgdal e maptools sono caricate di default così che non dovete aggiungere i corrispondenti comandi library() (dovete essere sicuri, comunque, che questi due pacchetti sono installati nella vostra distribuzione R). Tuttavia, altre librerie aggiuntive che potrebbero essere necessarie devono essere esplicitamente caricate. Basta aggiungere i comandi necessari all’inizio del vostro script. È inoltre necessario assicurarsi che i relativi pacchetti sono installati nella distribuzione R utilizzata da QGIS. L’ambiente processing non si prenderà cura dell’installazione dei pacchetti. Se lanciate uno script che richiede un pacchetto non installato, l’esecuzione fallirà e QGIS proverà a rivelare quali pacchetti mancano. Dovete installare le librerie mancanti manualmente prima di lanciare l’algoritmo.

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.

Per default, l’ambiente processing prova a configurare il suo connettore GRASS in modo da poter usare la distribuzione di GRASS fornita insieme a QGIS. Ciò dovrebbe funzionare nella maggior parte dei sistemi, ma se riscontrate problemi, potreste doverlo fare manualmente. Inoltre, se volete usare una differente installazione di GRASS, dovete cambiare quell’impostazione e scegliere la cartella dove essa è installata. GRASS 6.4 è necessario per il funzionamento corretto degli algoritmi.

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.

L’ultimo parametro che deve essere configurato è in relazione con il mapset. Un mapset è necessario per lanciare GRASS, e l’ambiente processing ne crea uno temporaneo in ciascuna esecuzione. Dovete specificare se i dati con cui lavorate usano coordinate geografiche (lat/lon) o proiettate.

GDAL

Per eseguire GDAL non è necessaria alcuna configurazione perchè è già incorporato in QGIS e gli algoritmi possono prelevare da lì la loro configurazione.

Orfeo ToolBox

Gli algoritmi di Orfeo Toolbox (OTB) possono essere lanciati da QGIS se avete OTB installato nel vostro sistema e se configurate QGIS propriamente, in modo che possa ritrovare tutti i file necessari (strumenti da linea di comando e librerie).

Come nel caso di SAGA i file binari di OTB sono inclusi nell’installazione autonoma per Windows, ma non sono inclusi se si esegue Linux, quindi è necessario scaricare e installare il software da soli. Si prega di controllare il sito web OTB per maggiori informazioni.

Una volta che OTB è installato, lanciare QGIS, aprire la finestra di configurazione e configurare il gestore di algoritmi OTB. Nel blocco :guilabel:`Orfeo Toolbox(Image Analysis) troverete tutte le impostazioni relative a OTB. Per primo assicuratevi che gli algoritmi sono abilitati.

Quindi configurare il percorso della cartella in cui sono installati gli strumenti a linea di comando e le librerie di OTB:

  • nix normalmente OTB applications folder punta a /usr/lib/otb/applications e OTB command line tools folder è /usr/bin

  • win se si usa l’installatore OSGeo4W, allora installare il pacchetto otb-bin e inserire C:OSGeo4Wappsorfeotoolboxapplications` come OTB applications folder e C:\OSGeo4W\bin come OTB command line tools folder. Questi sono i valori impostati come impostazione predefinita, ma se avete una diversa installazione di OTB, configurateli ai valori correspondenti nel vostro sistema.

TauDEM

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

Windows

Si consiglia di visitare la homepage di `TauDEM <http://hydrology.usu.edu/taudem/taudem5.0/downloads.html>`_per le istruzioni di installazione e per i binari precompilati per sistemi a 32 e 64 bit. IMPORTANTE: è necessario l’eseguibile di TauDEM 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