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 grafico, che è un modo per automatizzare i processi di elaborazione. Tuttavia, in alcune situazioni, il modellatore potrebbe non essere ciò di cui abbiamo bisogno per automatizzare un dato processo. Vediamo una di queste situazioni e come risolverla facilmente usando 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/clip3.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.

First of all, remove the previous selection, so all polygons will be used again. Now open the Clip raster with polygon algorithm and select the same inputs as before, but this time click on the button that you will find in the right–hand side of the vector layer input where you have selected the watersheds layer.

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

This button will cause the selected input layer to be split into as many layer as feature are found in it, each of them containing a single polygon. With that, the algorithm will be called repeatedly, one for each one of those single-polygon layers. The result, instead of just one raster layer in the case of this algorithm, will be a set of raster layers, each one of them corresponding to one of the executions of the algorithm.

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.