24.6. L’interfaccia per i processi in serie

24.6.1. Introduzione

Puoi eseguire come processi in serie tutti gli algoritmi (compresi i modelli). Questo significa che puoi eseguire ogni algoritmo usando non solo un singolo input, ma anche più di uno. Questa funzionalità è particolarmente utile quando hai bisogno di processare grandi quantità di dati; non dovrai più eseguire l’algoritmo singolarmente ogni volta.

Per eseguire un algoritmo come un processo in serie, selezionarlo e col pulsante di destra del mouse scegliere la voce Esegui come Processo in Serie… dal menu che apparirà.

../../../_images/batch_processing_right_click.png

Fig. 24.29 Processi in serie facendo clic con il tasto destro del mouse

Se hai la finestra di dialogo di esecuzione dell’algoritmo aperta, puoi anche avviare l’interfaccia di processamento in serie da lì, facendo clic sul pulsante Esegui come Processo in Serie ….

../../../_images/parameters_dialog.png

Fig. 24.30 Processi in serie dalla finestra di dialogo Algoritmo

24.6.2. La tabella dei parametri

L’esecuzione di un processo in serie è simile all’esecuzione singola di un algoritmo. I valori dei parametri devono essere definiti, ma in questo caso non basta un singolo valore per ogni parametro, bensì un insieme di valori, uno per ogni volta che l’algoritmo deve essere eseguito. I valori vengono introdotti utilizzando una tabella come quella mostrata di seguito, dove ogni riga rappresenta un’iterazione e le colonne i parametri dell’algoritmo.

../../../_images/batch_processing.png

Fig. 24.31 Processo in serie

Dalla barra degli strumenti superiore puoi:

  • |Aggiungi riga: aggiunge una nuova voce di elaborazione per la configurazione.

  • symbologyRemove Rimuovi riga(e): rimuove le righe selezionate dalla tabella. La selezione delle righe avviene facendo clic sul numero a sinistra e consente keyboard combination per la selezione multipla.

  • fileOpen Apri un file di configurazione per l’elaborazione in serie

  • fileSave Salva la configurazione dell’elaborazione in serie in un file .JSON che può essere eseguito in seguito.

Per impostazione predefinita, la tabella contiene solo due righe:

  • La prima riga visualizza in ogni cella un menu a discesa Riempimento automatico… ► con opzioni per riempire rapidamente le celle sottostanti. Le opzioni disponibili dipendono dal tipo di parametro.

  • La seconda riga (così come quelle successive) rappresenta una singola esecuzione dell’algoritmo e ogni cella contiene il valore di uno dei parametri. È simile alla finestra di dialogo dei parametri che si visualizza quando si esegue un algoritmo dalla casella degli strumenti, ma con una disposizione diversa.

In fondo alla tabella, è possibile impostare se checkbox Carica i layer al termine.

Una volta definita la dimensione della tabella, la devi riempire con i valori desiderati.

24.6.3. Compilazione della tabella dei parametri

Per la maggior parte dei parametri, l’impostazione del valore è banale. Viene fornito il widget appropriato, lo stesso di single process dialog, che consente di digitare semplicemente il valore o di selezionarlo da un elenco di valori possibili, a seconda del tipo di parametro. Questo include anche il widget data-define, quando compatibile.

Per automatizzare la definizione del processo in serie ed evitare di riempire la tabella cella per cella, si può premere il menu Riempimento automatico… di un parametro e selezionare una delle seguenti opzioni per sostituire i valori nella colonna:

  • Riempimento in basso prenderà l’input per il primo processo e lo inserirà per tutti gli altri processi.

  • calculateFieldCalcola per Espressione… consente di creare una nuova espressione QGIS da utilizzare per aggiornare tutti i valori esistenti in quella colonna. I valori dei parametri esistenti (compresi quelli di altre colonne) possono essere utilizzati all’interno dell’espressione tramite variables. Ad esempio, l’impostazione del numero di segmenti in base alla distanza di buffer di ciascun layer:

    CASE WHEN @DISTANCE > 20 THEN 12 ELSE 8 END
    
  • Aggiungi Valori per Espressione… aggiunge nuove righe usando i valori di un’espressione che restituisce un array (al contrario di Calcolo per Espressione…, che funziona solo sulle righe esistenti). Il caso d’uso previsto è quello di consentire il popolamento della finestra di dialogo in serie utilizzando serie numeriche complesse. Ad esempio, l’aggiunta di righe per un buffer batch usando l’espressione generate_series(100, 1000, 50) per il parametro della distanza produce nuove righe con i valori 100, 150, 200, …. 1000.

  • Quando si imposta un parametro file o layer, sono disponibili più opzioni:

    • Add Files by Pattern… adds new rows to the table for matching files found using a file pattern and folder, with the option to checkbox Search recursively. E.g. *.shp.

    • Seleziona File

    • Aggiungi Tutti i File da una Cartella

    • Selezione da Layer Aperti

Il parametro dei dati in uscita presenta le stesse funzionalità dell’esecuzione dell’algoritmo come processo singolo. A seconda dell’algoritmo, il risultato può essere:

  • saltato, se la cella viene lasciata vuota

  • salvato come layer temporaneo: riempi la cella con TEMPORARY_OUTPUT e ricordati di spuntare la casella di controllo checkbox Carica i layer al termine.

  • salvato come file semplice (.SHP, .GPKG, .XML, .PDF, .JPG,…) il cui percorso può essere impostato con le opzioni Riempimento automatico esposte in precedenza. Ad esempio, utilizza Calcola per Espressione… per impostare i nomi dei file di output su espressioni complesse come:

    '/home/me/stuff/buffer_' || left(@INPUT, 30) || '_' || @DISTANCE || '.shp'
    

    Puoi anche digitare direttamente il percorso del file o utilizzare la finestra di dialogo di selezione dei file che appare facendo clic sul pulsante . Una volta che hai selezionato il file, viene visualizzata una nuova finestra di dialogo per consentire il completamento automatico di altre celle nella stessa colonna (stesso parametro).

    ../../../_images/batch_processing_save.png

    Fig. 24.32 Salvataggio di Processo in Serie

    Se si seleziona il valore predefinito (Non riempire automaticamente), il nome del file selezionato verrà inserito nella cella selezionata della tabella dei parametri. Se si seleziona una delle altre opzioni, tutte le celle sotto quella selezionata saranno riempite automaticamente in base a un criterio definito:

    • Compila con numeri: aggiunge in modo incrementale un numero al nome del file.

    • Compila con i valori dei parametri: puoi selezionare un parametro il cui valore nella stessa riga viene aggiunto al nome del file. Ciò è particolarmente utile per denominare gli oggetti di dati in uscita in base a quelli in entrata.

  • salvato come layer all’interno di un database:

    # Indicate a layer within a GeoPackage file
    ogr:dbname='C:/Path/To/Geopackage.gpkg' table="New_Table" (geom)
    
    # Use the "Calculate By Expression" to output to different layers in a GeoPackage
    'ogr:dbname=\'' || @project_folder || '/Buffers.gpkg\' table="' || @INPUT || '_' || @DISTANCE || '" (geom)'
    

24.6.4. Esecuzione di un processo in serie

Per eseguire il processo in serie una volta che hai introdotto tutti i valori necessari, fai clic su Esegui. Il pannello Log si attiva e visualizza i dettagli e le fasi del processo di esecuzione. L’avanzamento del processo in serie globale sarà mostrato nella barra di avanzamento nella parte inferiore della finestra di dialogo.