Importante

La traduzione è uno sforzo comunitario a cui puoi unirti. Questa pagina è attualmente tradotta al 100.00%.

17.10. Il calcolatore raster. Valori no-data

Nota

In questa lezione vedremo come usare il calcolatore raster per eseguire alcune operazioni sui layer raster. Spiegheremo anche cosa sono i valori no-data e come il calcolatore e altri algoritmi li trattano

Il calcolatore raster è uno degli algoritmi più potenti che puoi trovare. È un algoritmo molto flessibile e versatile che può essere usato per molti calcoli diversi, e che diventerà presto una parte importante della tua cassetta degli attrezzi.

In questa lezione eseguiremo alcuni calcoli con il calcolatore raster, la maggior parte dei quali sono piuttosto semplici. Questo ci permetterà di vedere come viene utilizzato e come affronta alcune situazioni particolari che potrebbe trovare. Capire questo è importante per ottenere in seguito i risultati attesi quando si usa il calcolatore, e anche per capire alcune tecniche che vengono comunemente applicate con esso.

Apri il progetto QGIS corrispondente a questa lezione e vedrai che contiene diversi layer raster.

Ora apri la cassetta degli strumenti e apri la finestra di dialogo corrispondente al calcolatore raster.

../../../_images/calculator_dialog.png

Nota

L’interfaccia è diversa nelle versioni più recenti.

La finestra di dialogo contiene 2 parametri.

  • I layer da utilizzare per l’analisi. Si tratta di un input multiplo, il che significa che è puoi selezionare tutti i layer che vuoi. Fai clic sul pulsante a destra e seleziona i layer che vuoi usare nella finestra di dialogo che apparirà.

  • La formula da applicare. La formula utilizza i layer selezionati nel paragrafo precedente, denominati con lettere dell’alfabeto (a, b, c...) o g1, g2, g3... come nomi di variabili. In altre parole, la formula a + 2 * b è uguale a g1 + 2 * g2 e calcolerà la somma del valore del primo layer più due volte il valore del secondo layer. L’ordine dei layer è lo stesso che si vede nella finestra di dialogo di selezione.

Avvertimento

Il calcolatore è sensibile alle maiuscole e alle minuscole.

Per cominciare, cambieremo le unità di misura del DEM da metri a piedi. La formula necessaria è la seguente:

h' = h * 3.28084

Seleziona il DEM nel campo dei layer e digita a * 3,28084 nel campo della formula.

Avvertimento

Per gli utenti non inglesi: usare sempre «.», non «,».

Fai clic su Esegui per eseguire l’algoritmo. Si otterrà un layer che ha lo stesso aspetto del layer in ingresso, ma con valori diversi. Il layer in ingresso che abbiamo utilizzato ha valori validi in tutte le sue celle, quindi l’ultimo parametro non ha alcun effetto.

Eseguiamo ora un altro calcolo, questa volta sul layer accflow. Questo layer contiene i valori del flusso accumulato, un parametro idrologico. Contiene tali valori solo all’interno dell’area di un determinato bacino idrografico, senza valori al di fuori di esso. Come si può vedere, la visualizzazione non è molto informativa, a causa del modo in cui i valori sono distribuiti. Utilizzando il logaritmo dell’accumulo di flusso si otterrà una rappresentazione molto più significativa. È possibile calcolarlo utilizzando il calcolatore di raster.

Apri nuovamente la finestra di dialogo dell’algoritmo, seleziona il layer accflow come unico layer in ingresso e inserisci la seguente formula: log(a).

Ecco il layer che otterrai.

../../../_images/log.png

Se si selezioni lo strumento Informazioni elementi per conoscere il valore di un layer in un determinato punto, seleziona il layer appena creato e fai clic su un punto all’esterno del bacino, vedrai che contiene un valore senza dati.

../../../_images/identify.png

Per il prossimo esercizio utilizzeremo due layer invece di uno e otterremo un DEM con valori di elevazione validi solo all’interno del bacino definito nel secondo layer. Apri la finestra di dialogo del calcolatore e seleziona entrambi i layer del progetto nel campo dei layer in ingresso. Inserisci la seguente formula nel campo corrispondente:

a/a * b

a'' si riferisce a layer di flusso accumulato (poiché è il primo a comparire nell'elenco) e ``b'' si riferisce al DEM. La prima parte della formula consiste nel dividere il layer di flusso accumulato per se stesso, ottenendo così un valore di 1 all'interno del bacino e un valore senza dati all'esterno. Poi si moltiplica per il DEM, per ottenere il valore di elevazione nelle celle all'interno del bacino (``DEM * 1 = DEM) e il valore senza dati all’esterno (DEM * no_data = no_data).

Ecco il layer risultante.

../../../_images/masked.png

Questa tecnica è usata frequentemente per realizzare una maschera sui valori in un layer raster ed è utile quando vuoi eseguire calcoli per una regione diversa da una mascheratura rettangolare arbitraria usata dal layer raster. Ad esempio, un istogramma di elevazione di un layer raster non ha molto significato. Se invece viene calcolato utilizzando solo i valori corrispondenti a un bacino (come nel caso precedente), il risultato che si ottiene è significativo e fornisce informazioni sulla configurazione del bacino.

Ci sono altre cose interessanti in questo algoritmo che abbiamo appena eseguito, a parte i valori senza dati e il modo in cui vengono gestiti. Se osservi le estensioni dei layer che abbiamo moltiplicato (puoi farlo facendo doppio clic sui nomi dei layer nell’indice e guardando le loro proprietà), vedrai che non sono uguali, poiché l’estensione coperta dal layer di accumulo del flusso è più piccola dell’estensione del DEM completo.

Ciò significa che questi layer non corrispondono e che non possono essere moltiplicati direttamente senza omogeneizzare le dimensioni e le estensioni ricampionando uno o entrambi i layer. Tuttavia, non abbiamo fatto nulla. QGIS si occupa di questa situazione e ricampiona automaticamente i layer in ingresso quando necessario. L’estensione in uscita è l’estensione minima di copertura calcolata dai layer in ingresso e la dimensione minima delle loro celle.

In questo caso (e nella maggior parte dei casi), si ottengono i risultati desiderati, ma è necessario essere sempre consapevoli delle operazioni aggiuntive che si stanno svolgendo, poiché potrebbero influenzare il risultato. Nei casi in cui questo comportamento potrebbe non essere quello desiderato, è necessario applicare preventivamente un ricampionamento manuale. Nei capitoli successivi, vedremo meglio il comportamento degli algoritmi quando si utilizzano più layer raster.

Concludiamo questa lezione con un altro esercizio di mascheramento. Calcoleremo la pendenza in tutte le aree con una elevazione compresa tra 1000 e 1500 metri.

In questo caso, non abbiamo un layer da usare come maschera, ma possiamo crearlo usando il calcolatore.

Utilizza il calcolatore utilizzando il DEM come unico layer in ingresso e la seguente formula

ifelse(abs(a-1250) < 250, 1, 0/0)

Come puoi vedere, possiamo usare il calcolatore non solo per fare semplici operazioni algebriche, ma anche per eseguire calcoli più complessi che coinvolgono frasi condizionali, come quella sopra.

Il risultato ha un valore di 1 all’interno dell’intervallo con cui vogliamo lavorare e nessun dato nelle celle al di fuori di esso.

../../../_images/elevation_mask.png

Il valore no-data proviene dall’espressione 0/0. Poiché si tratta di un valore indeterminato, SAGA aggiungerà un valore NaN (Not a Number), che viene effettivamente gestito come un valore senza dati. Con questo piccolo trucco puoi impostare un valore senza dati senza dover conoscere il valore senza dati della cella.

Ora devi solamente moltiplicarlo per il layer di pendenza incluso nel progetto e otterrai il risultato desiderato.

Tutto ciò può essere fatto in un’unica operazione con il calcolatore. Lo lasciamo come esercizio per il lettore.