23.5. Il modellatore grafico

Il modellatore grafico ti consente di creare modelli complessi utilizzando un’interfaccia semplice e facile da usare. Quando lavori con un GIS, la maggior parte delle operazioni di analisi non sono isolate, ma piuttosto fanno parte di una catena di operazioni. Usando il modellatore grafico, la successione dei processi può essere confezionata in un unico processo, quindi è più conveniente eseguire come un processo singolo anche su diversi input. Non importa quanti passi e diversi algoritmi coinvolge, un modello è eseguito come un unico algoritmo, risparmiando così tempo e fatica.

Il modellatore grafico può essere aperto dal menu Processing (Processing ► Modellatore Grafico…).

Il modellatore ha un’area grafica di lavoro dove viene mostrata la struttura del modello e il flusso di lavoro che rappresenta. La parte sinistra della finestra è una sezione con cinque pannelli che possono essere utilizzati per aggiungere nuovi elementi al modello:

  1. Proprietà Modello: puoi specificare il nome del modello e il gruppo che lo conterrà

  2. Input: tutti gli input che daranno forma al tuo modello

  3. Algoritmi: gli algoritmi di Processing disponibili

  4. Variabili: puoi anche definire variabili che saranno disponibili solo nel Processing del Modellatore.

  5. Storico dei comandi: questo pannello registrerà tutto ciò che accade nel modellatore, rendendo facile eliminare le cose che hai fatto in modo errato.

../../../_images/modeler_canvas.png

Fig. 23.16 Modellatore

La creazione di un modello comporta due passi fondamentali:

  1. Definizione degli input necessari. Questi input saranno aggiunti alla finestra dei parametri, in modo che l’utente possa impostare i loro valori quando esegue il modello. Il modello stesso è un algoritmo, quindi la finestra dei parametri viene generata automaticamente come per tutti gli algoritmi disponibili nel framework Processing.

  2. Definizione del flusso di lavoro. Utilizzando i dati in ingresso del modello, il flusso di lavoro viene definito aggiungendo algoritmi e selezionando come utilizzano gli input definiti o gli output generati da altri algoritmi nel modello.

23.5.1. Definizione dei dati in ingresso

Il primo passo è quello di definire gli input per il modello. I seguenti elementi si trovano nel pannello Input sul lato sinistro della finestra del modellatore:

  • Configurazione Autenticazione

  • Booleano

  • Colore

  • Nome Connessione

  • Gestione Coordinate

  • SR

  • Schema del Database

  • Tabella Database

  • Datetime

  • Distanza

  • Enum

  • Espressione

  • Estensione

  • Aggregati campo

  • Mappatura campi

  • File/Cartella

  • Geometria

  • Layer Mappa

  • Tema Mappa

  • Matrice

  • Layer Mesh

  • Ingressi multipli

  • Numero

  • Punto

  • Layout di stampa

  • Oggetto del Layout di stampa

  • Intervallo

  • Banda Raster

  • Layer Raster

  • Scala

  • Stringhe di testo

  • Layer creazione TIN

  • Elementi vettoriali

  • Campo del Vettore

  • Vettore

  • Layer vettoriali di generatori di tasselli

Nota

Passando con il mouse sopra gli input verrà mostrato un tooltip con informazioni aggiuntive.

Quando si fa doppio clic su un elemento, viene mostrata una finestra di dialogo che permette di definire le sue caratteristiche. A seconda del parametro, la finestra di dialogo conterrà almeno un elemento (la descrizione, che è ciò che l’utente vedrà quando esegue il modello). Per esempio, quando si aggiunge un valore numerico, come si può vedere nella prossima figura, oltre alla descrizione del parametro, si deve impostare un valore predefinito e la gamma dei valori validi.

../../../_images/models_parameters.png

Fig. 23.17 Definizione Parametri del modello

Puoi definire l’input come obbligatorio per il tuo modello selezionando l’opzione checkbox Obbligatorio e selezionando la checkbox unchecked Avanzato puoi impostare l’input all’interno della sezione Avanzato`. Questo è particolarmente utile quando il modello ha molti parametri e alcuni di essi non sono semplici, ma vuoi in ogni caso sceglierli.

La scheda Commenti ti permette di etichettare l’input con più informazioni, per descrivere meglio il parametro. I commenti sono visibili solo nell’area grafica del modellatore e non nella finestra di dialogo finale dell’algoritmo.

Per ogni input aggiunto, un nuovo elemento viene aggiunto all’area grafica del modellatore.

../../../_images/models_parameters2.png

Fig. 23.18 Parametri modello

Puoi anche aggiungere degli input trascinando il tipo di input dalla lista e facendolo cadere nella posizione in cui vuoi che sia nell’area grafica del modellatore. Se vuoi cambiare un parametro di un input esistente, basta fare doppio clic su di esso, e la sua stessa finestra di dialogo apparirà.

23.5.2. Definizione del flusso operativo

Nel seguente esempio aggiungeremo due input e due algoritmi. Lo scopo del modello è quello di copiare i valori di elevazione da un layer raster DEM a un vettore lineare usando l’algoritmo Drape, e poi calcolare l’ascesa totale del layer di linee usando l’algoritmo Climb Along Line.

Nella scheda Input, scegli i due input come Vector Layer per la linea e Raster Layer per il DEM. Ora siamo pronti ad aggiungere gli algoritmi al flusso di lavoro.

Gli algoritmi possono essere trovati nel pannello Algoritmi, raggruppati nello stesso modo in cui sono nella casella degli strumenti di Processing.

../../../_images/models_parameters3.png

Fig. 23.19 Input al modello

Per aggiungere un algoritmo a un modello, fai doppio clic sul suo nome o trascinalo, proprio come per gli input. Come per gli input è possibile cambiare la descrizione dell’algoritmo e aggiungere un commento. Quando si aggiunge un algoritmo, apparirà una finestra di esecuzione, con un contenuto simile a quello che si trova nel pannello di esecuzione che viene mostrato quando si esegue l’algoritmo dalla barra degli strumenti. L’immagine seguente mostra entrambe le finestre di dialogo dell’algoritmo Drape (set Z value from raster) e Climb along line.

../../../_images/models_parameters4.png

Fig. 23.20 Parametri dell’algoritmo del modello

Come puoi vedere ci sono alcune differenze.

Hai quattro scelte per definire gli input dell’algoritmo:

  • integer Valore: permette di impostare il parametro da un layer caricato nel progetto QGIS o di sfogliare un layer da una cartella

  • |Espressione| Valore precalcolato: con questa opzione puoi aprire il Costruttore di Espressioni e definire la tua espressione per inserire il parametro. Gli input del modello insieme ad alcune altre statistiche del layer sono disponibili come variabili e sono elencate nella parte superiore della finestra di dialogo Cerca del Costruttore di Espressioni

  • processingModel Model Input: scegli questa opzione se il parametro proviene da un input del modello che hai definito. Una volta cliccata, questa opzione elencherà tutti gli input adatti al parametro

  • processing Risultato algoritmo: è utile quando il parametro di input di un algoritmo è un output di un altro algoritmo

Gli output dell’algoritmo hanno l’opzione aggiuntiva processingOutput Model Output che rende l’output dell’algoritmo disponibile nel modello.

Se un layer generato dall’algoritmo deve essere usato solo come input per un altro algoritmo, non modificare quella casella di testo.

Nell’immagine seguente puoi vedere i due parametri di input definiti come Model Input e il layer di output temporaneo:

../../../_images/models_parameters5.png

Fig. 23.21 Parametri in ingresso e in uscita dell’algoritmo

In tutti i casi, troverai un parametro aggiuntivo chiamato Dependencies che non è disponibile quando chiami l’algoritmo dal toolbox. Questo parametro permette di definire l’ordine di esecuzione degli algoritmi, definendo esplicitamente un algoritmo come parent di quello corrente. Questo forzerà l’algoritmo parent ad essere eseguito prima di quello corrente.

Quando usi l’output di un algoritmo precedente come input del tuo algoritmo, questo imposta implicitamente l’algoritmo precedente come genitore di quello attuale (e pone la freccia corrispondente nell’area grafica del modellatore). Tuttavia, in alcuni casi un algoritmo potrebbe dipendere da un altro anche se non utilizza alcun oggetto in uscita da esso (per esempio, un algoritmo che esegue una frase SQL su un database PostGIS e un altro che importa un layer nel medesimo database). In questo caso, basta selezionare l’algoritmo precedente nel parametro Dipendenze e saranno eseguiti nell’ordine corretto.

Una volta che tutti i parametri sono stati assegnati valori validi, clicca su OK e l’algoritmo sarà aggiunto all’area grafica. Sarà collegato agli elementi dell’area grafica (algoritmi o input) che forniscono oggetti utilizzati come input per l’algoritmo.

Gli elementi possono essere trascinati in una posizione diversa sull’area grafica. Questo è utile per rendere la struttura del modello più chiara e intuitiva. Puoi anche ridimensionare gli elementi. Questo è particolarmente utile se la descrizione dell’input o dell’algoritmo è lunga.

I collegamenti tra gli elementi sono aggiornati automaticamente e si può vedere un pulsante più in alto e in basso di ogni algoritmo. Facendo clic sul pulsante verranno elencati tutti gli ingressi e le uscite dell’algoritmo in modo da poter avere una rapida panoramica.

Puoi ingrandire e rimpicciolire usando la rotella del mouse.

../../../_images/models_model.png

Fig. 23.22 Un modello completo

Puoi eseguire il tuo algoritmo in qualsiasi momento cliccando sul pulsante start. Per utilizzare l’algoritmo dalla casella degli strumenti, deve essere salvato e la finestra di dialogo del modellatore chiusa, per permettere alla casella degli strumenti di aggiornare il suo contenuto.

23.5.3. Interagire con l’area grafica e gli elementi

Puoi usare i pulsanti zoomIn, zoomOut, zoomActual e zoomFullExtent per zoomare l’area grafica del modellatore. Il comportamento dei pulsanti è fondamentalmente lo stesso della barra degli strumenti principale di QGIS.

Il pannello Storico dei comandi insieme ai pulsanti undo e redo sono estremamente utili per tornare rapidamente a una situazione precedente. Il pannello Storico dei comandi elenca tutto ciò che hai fatto quando hai creato il flusso di lavoro.

Puoi spostare o ridimensionare molti elementi allo stesso tempo, selezionandoli prima e trascinando il mouse.

Se vuoi agganciare gli elementi mentre li sposti nell’area grafica puoi scegliere Visualizza ► Abilita aggancio.

Il menu Modifica contiene alcune opzioni molto utili per interagire con gli elementi del modello:

  • selectAllSeleziona tutto: seleziona tutti gli elementi del modello

  • Aggancia Elementi selezionati al Reticolo: aggancia e allinea gli elementi in una griglia

  • undoUndo: annulla l’ultima azione

  • redoRedo: ripristina l’ultima azione

  • editCutCut: taglia gli elementi selezionati

  • editCopyCopy: copia gli elementi selezionati

  • editPastePaste: incolla gli elementi

  • deleteSelectedElimina componenti selezionati: elimina tutti gli elementi selezionati dal modello

  • Aggiungi una cornice per il gruppo: aggiunge una cornice trascinabile all’area garafica. Questa funzione è molto utile in grandi modelli per raggruppare elementi nel nell’area grafica del modellatore e per mantenere pulito il flusso di lavoro. Per esempio potremmo raggruppare tutti gli input dell’esempio:

    ../../../_images/model_group_box.png

    Fig. 23.23 Cornice raggruppamento del modello

Puoi cambiare il nome e il colore delle cornici. Le cornici di gruppo sono molto utili se utilizzate insieme a Visualizza ► Zoom su. Questo permette di zoomare su una parte specifica del modello.

Potresti voler cambiare l’ordine degli input e come sono elencati nella finestra di dialogo principale del modello. In fondo al pannello Input troverai il pulsante Riordina Modelli in Ingresso... e cliccando su di esso si apre una nuova finestra di dialogo che ti permette di cambiare l’ordine degli input:

../../../_images/model_reorder_inputs.png

Fig. 23.24 Riordinare Modelli in ingresso

23.5.4. Salvataggio e caricamento di modelli

Usa il pulsante fileSaveSalva modello per salvare il modello corrente e il pulsante fileOpenApri modello per aprire un modello precedentemente salvato. I modelli sono salvati con l’estensione .model3. Se il modello è già stato salvato dalla finestra del modellatore, non verrà richiesto il nome del file. Poiché c’è già un file associato al modello, quel file sarà usato per i salvataggi successivi.

Prima di salvare un modello, devi inserire un nome e un gruppo per esso nelle caselle di testo nella parte superiore della finestra.

I modelli salvati nella cartella models (la cartella predefinita quando viene richiesto un nome di file per salvare il modello) appariranno nella casella degli strumenti nel ramo corrispondente. Quando la barra degli strumenti viene attivata, cerca nella cartella models i file con estensione .model3 e carica i modelli contenuti. Poiché un modello è esso stesso un algoritmo, può essere aggiunto alla barra degli strumenti proprio come qualsiasi altro algoritmo.

I modelli possono anche essere salvati all’interno del file di progetto usando il pulsante addToProjectSalva modello nel progetto. I modelli salvati con questo metodo non saranno scritti come file .model3 su disco ma saranno incorporati nel file di progetto.

I modelli di progetto sono disponibili nel menu qgsProjectFile:guilabel: Modelli di progetto della barra degli strumenti.

Puoi specificare la cartella dei modelli nella finestra di configurazione di Processing, presente nel gruppo Modellatore.

I modelli caricati dalla cartella models appaiono non solo nella casella degli strumenti, ma anche nell’albero degli algoritmi nella scheda Algoritmi della finestra del modellatore. Ciò significa che si può incorporare un modello come parte di un modello più grande, proprio come altri algoritmi.

I modelli appariranno nel pannello Browser e possono essere eseguiti da lì.

23.5.4.1. Esportare un modello come immagine, PDF o SVG

Un modello può anche essere esportato come immagine, SVG o PDF (per scopi illustrativi) cliccando su saveMapAsImage:sup: Esporta come immagine, saveAsPDFEsporta come PDF o saveAsSVGEsporta come SVG.

23.5.5. Aggiornare il modello

Puoi modificare il modello che stai creando, ridefinendo il flusso di lavoro e le relazioni tra gli algoritmi e gli input che definiscono il modello.

Se clicchi con il tasto destro del mouse su un algoritmo nell’area grafica, vedrai un menu contestuale come quello mostrato qui accanto:

../../../_images/modeler_right_click.png

Fig. 23.25 Click destro sul modellatore

Selezionando l’opzione Remove rimuoverai l’algoritmo selezionato. Non potrai rimuovere un algoritmo se altri algoritmi dipendono da lui, ovvero quando un algoritmo vuole come input il risultato di un altro algoritmo. Se provi a rimuovere comunque uno di questi algoritmi, apparirà una finestra di avviso.

../../../_images/cannot_delete_alg.png

Fig. 23.26 L’algoritmo non può essere eliminato

Selezionando l’opzione Modifica… verrà mostrata la finestra di dialogo dei parametri dell’algoritmo, in modo da poter cambiare gli input e i valori dei parametri. Non tutti gli elementi di input disponibili nel modello appariranno come input disponibili. Layer o valori generati in un passo più avanzato del flusso di lavoro definito dal modello non saranno disponibili se causano dipendenze circolari.

Seleziona i nuovi valori e clicca sul pulsante OK come al solito. Le connessioni tra gli elementi del modello cambieranno di conseguenza nell’area grafica del modellatore.

The Add comment… allows you to add a comment to the algorithm to better describe the behavior.

Un modello può essere eseguito parzialmente disattivando alcuni dei suoi algoritmi. Per farlo, selezionare l’opzione :guilabel: Disattiva nel menu contestuale che appare quando si clicca con il tasto destro del mouse su un elemento dell’algoritmo. L’algoritmo selezionato e tutti quelli del modello che dipendono da esso saranno visualizzati in grigio e non saranno eseguiti come parte del modello.

../../../_images/deactivated.png

Fig. 23.27 Modello con algoritmo disattivato

Quando clicchi con il tasto destro del mouse su un algoritmo che non è attivo, vedrai un’opzione di menu Attiva che puoi usare per riattivarlo.

23.5.6. Modifica dei file di aiuto del modello e delle meta-informazioni

Puoi documentare i tuoi modelli dal modellatore stesso. Clicca sul pulsante processingHelpModifica guida del modello, e apparirà una finestra di dialogo come quella mostrata di seguito.

../../../_images/help_edition.png

Fig. 23.28 Aiuto per la modifica

Sulla parte destra vedrai una semplice pagina HTML, creata usando la descrizione dei parametri di input e di output dell’algoritmo insieme ad alcuni parametri aggiuntivi come la sua descrizione e l’autore. La prima volta che apri l’editor di aiuto, vedrai tutti i campi vuoti. Li puoi riempire usando le voci corrispondenti presenti nella parte sinistra della finestra di dialogo. Seleziona un elemento nella parte superiore e poi inserisci la descrizione nella casella di testo.

La guida del modello è salvata come parte del modello stesso

23.5.7. Esportare un modello come script Python

Come vedremo in un capitolo successivo, gli algoritmi di Processing possono essere chiamati dalla console Python di QGIS, e nuovi algoritmi di Processing possono essere creati usando Python. Un modo veloce per creare un tale script Python è quello di creare un modello e poi esportarlo come file Python.

Per farlo, clicca su saveAsPythonEsporta come Algoritmo Scrip… nell’area grafica del modellatore o clicca col tasto destro sul nome del modello nella barra degli strumenti di Processing e scegli saveAsPythonEsporta Modello come Algoritmo Python….

23.5.8. A proposito degli algoritmi disponibili

Si potrebbe notare che alcuni algoritmi che possono essere eseguiti dalla barra degli strumenti non appaiono nella lista degli algoritmi disponibili quando si sta progettando un modello. Per essere incluso in un modello, un algoritmo deve avere la semantica corretta. Se un algoritmo non ha una semantica ben definita (per esempio, se il numero di layer in uscita non può essere conosciuto in anticipo), allora non è possibile utilizzarlo all’interno di un modello, e non apparirà nell’elenco degli algoritmi che si possono trovare nella finestra di dialogo del modellatore.