17.24. Esecuzione iterativa di algoritmi

Nota

Questa lezione mostra un modo diverso di eseguire algoritmi che usano layer vettoriali, eseguendoli ripetutamente, iterando sulle proprietà in un layer vettoriale in ingresso

Conosciamo già il modellatore, che è un modo per automatizzare le attività di elaborazione. Tuttavia, in alcune situazioni, il modellatore potrebbe non essere ciò di cui abbiamo bisogno per automatizzare un determinato processo. Vediamo una di queste situazioni e come risolverla facilmente utilizzando una funzionalità diversa: l’esecuzione iterativa di algoritmi.

Apri i dati corrispondenti a questo capitolo. Dovrebbe apparire così.

../../../_images/project1.png

Riconoscerai il nostro ben noto DEM dei capitoli precedenti e un insieme di bacini idrici estratti da esso. Immagina di dover tagliare il DEM in diversi layer più piccoli, ognuno dei quali contiene solo i dati di elevazione corrispondenti ad un singolo bacino. Questo sarà utile se in seguito vorrai calcolare alcuni parametri relativi ad ogni bacino, come la sua elevazione media o la sua curva ipsografica.

Questo può essere un compito lungo e noioso, specialmente se il numero di bacini è grande. Tuttavia, è un compito che può essere facilmente automatizzato, come vedremo.

L’algoritmo da utilizzare per il ritaglio di un layer raster con un vettore poligonale si chiama Ritagliare raster con vettori, e ha i seguenti parametri nello finestra di dialogo.

../../../_images/clip2.png

Puoi eseguirlo usando il layer dei bacini idrici e il DEM come input, e otterrai il seguente risultato.

../../../_images/full_clip.png

Come puoi vedere, viene utilizzata l’area coperta da tutti i poligoni del bacino idrico.

Puoi ottenere il DEM ritagliato con un solo bacino idrico selezionando il bacino idrico desiderato e poi eseguendo l’algoritmo come abbiamo fatto prima.

../../../_images/selection.png

Dato che vengono usati solo gli elementi selezionati, solo il poligono selezionato sarà usato per ritagliare il layer raster.

../../../_images/selection_clip.png

Fare questo per tutti i bacini produrrà il risultato che stiamo cercando, ma non sembra un modo molto pratico di farlo. Vediamo invece come automatizzare la funzione seleziona e ritaglia.

Prima di tutto, rimuovi la selezione precedente, in modo da utilizzare nuovamente tutti i poligoni. Ora apri l’algoritmo Clip raster with polygon e seleziona gli stessi input di prima, ma questa volta fai clic sul pulsante che troverai a destra dell’input del layer vettoriale dove hai selezionato il layer watersheds.

../../../_images/iterate_button.png

Questo pulsante fa sì che il layer di input selezionato venga suddiviso in tanti layer quanti sono gli elementi presenti al suo interno, ognuno dei quali contiene un singolo poligono. L’algoritmo verrà quindi richiamato ripetutamente, uno per ciascuno di questi layer a singolo poligono. Il risultato, invece di un solo layer raster nel caso di questo algoritmo, sarà un insieme di layer raster, ognuno dei quali corrisponde a una delle esecuzioni dell’algoritmo.

Ecco il risultato che si ottiene se esegui l’algoritmo di ritaglio come spiegato.

../../../_images/result_iterative.png

Per ogni layer, la tavolozza dei colori bianco e nero, (o qualsiasi tavolozza tu stia usando), è regolata in modo diverso, dai suoi valori minimi ai suoi valori massimi. Questo è il motivo per cui si possono vedere i diversi pezzi e i colori non sembrano corrispondere nel bordo tra i layer. I valori, tuttavia, corrispondono.

Se inserisci un nome di file per il risultato, i file risultanti saranno nominati usando quel nome di file e un numero corrispondente ad ogni iterazione come suffisso.