Riscalare i dati raster GIS usando gdal_translate

Il paladino GIS dei dati raster, gdal_translate, ci viene in soccorso quando vogliamo ridurre la scala di tali dati da 16 a 8 bit per componente.

Cos’è gdal_translate?

L’utility gdal_translate può essere utilizzata per la conversione di dati raster tra formati diversi tramite alcune operazioni come sub-settings, ricampionamento e ridimensionamento dei pixel durante il processo.

Concettualmente, basta fare:

gdal_translate OPTIONS input output

Vediamo alcuni esempi.

Un passo indietro: cosa sono i dati raster?

Nella sua forma più semplice, un raster è composto da una matrice di celle (o pixel) organizzate in righe e colonne (o una griglia) dove ogni cella contiene un valore che rappresenta delle informazioni, come ad esempio la temperatura. I raster possono essere: fotografie aeree digitali, immagini dal satellite, immagini digitali o anche mappe scansionate. Un dataset raster è composto da righe (orizzontali) e colonne (verticali) di pixel. Ogni pixel rappresenta una regione geografica e il valore in quel pixel rappresenta alcune caratteristiche di quella regione.

Come ridimensionare il valore dei componenti dei dati raster con GDAL

Ogni pixel nell’immagine può contenere informazioni differenti, che potrebbero essere codificate in diversi modi. Lo schermo del nostro computer è solamente capace di mostrare i dati RGB, e ogni canale (rosso verde blu) è codificato in un byte (8 bit). In un’immagine a 32 bit per pixel c’è anche spazio per un canale alfa a 8 bit.

I dati raster sono però molto più complessi di così. Possono ad esempio essere: in scala di grigi con un valore intero, RGB con 24 o 32 bit, RGB con 16 bit per canale, dati non-image con valori float.

I dati raster possono inoltre essere multibanda. Questo significa che uno specifico dato per la tupla riga/colonna potrebbe avere più di un valore.

Come scalare un raster

Come si può scalare un raster in scala di grigi a 16 bit in uno a 8 bit? Usando gdal_translate con l’opzione -scale.

L’opzione -scale richiede 4 valori:

  • valore minimo sorgente

  • valore massimo sorgente

  • valore minimo target

  • valore massimo target

Quindi se si vogliono mappare 16 bit in 8 bit, bisogna usare il comando:

gdal_transalte -scale 0 65535 0 255 input.tif output.tif

Se si vuole lavorare su un raster multibanda, si può usare l’opzione -scale_bn seguita dal numero della banda su cui lavorare.

L’opzione –stats ci consente di avere delle informazioni sul raster su cui si sta lavorando, GDAL ricostruirà un nuovo output restituendo le informazioni riguardanti il raster in input.

Pubblicato il 21 aprile 2022 da Eduard Roccatello
Tag: ,