In precedenza, hai imparato a ottenere singole scene Landsat facendo qualcosa di simile,
dove l8
e point
sono importazioni che rappresentano la raccolta TOA di Landsat 8
e una geometria dell'area di interesse:
Editor di codice (JavaScript)
// Define a point of interest. Use the UI Drawing Tools to import a point // geometry and name it "point" or set the point coordinates with the // ee.Geometry.Point() function as demonstrated here. var point = ee.Geometry.Point([-122.292, 37.9018]); // Import the Landsat 8 TOA image collection. var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); // Get the least cloudy image in 2015. var image = ee.Image( l8.filterBounds(point) .filterDate('2015-01-01', '2015-12-31') .sort('CLOUD_COVER') .first() );
Supponiamo ora di voler calcolare un'immagine dell'indice NDVI (Normalized Difference Vegetation Index) dall'immagine Landsat. La vegetazione riflette la luce nella parte del vicino infrarosso (NIR) dello spettro elettromagnetico e assorbe la luce nella parte rossa (scopri di più sulla riflettanza NIR della vegetazione). L'NDVI lo utilizza per creare un singolo valore che riflette approssimativamente l'attività fotosintetica che si verifica in un pixel. Il calcolo è (NIR - rosso) / (NIR + rosso). Il risultato è un numero compreso tra 1 e -1, dove i pixel con un'elevata attività fotosintetica hanno un NDVI elevato. Questo è un modo per calcolare l'indice NDVI in Earth Engine:
Editor di codice (JavaScript)
// Compute the Normalized Difference Vegetation Index (NDVI). var nir = image.select('B5'); var red = image.select('B4'); var ndvi = nir.subtract(red).divide(nir.add(red)).rename('NDVI'); // Display the result. Map.centerObject(image, 9); var ndviParams = {min: -1, max: 1, palette: ['blue', 'white', 'green']}; Map.addLayer(ndvi, ndviParams, 'NDVI image');
Il risultato dovrebbe essere simile alla Figura 8. Tieni presente che utilizziamo la funzione select()
che hai imparato nella sezione precedente
sulla maschera per ottenere le bande NIR e rosse, quindi calcoliamo l'NDVI utilizzando gli operatori
matematici delle immagini che hai già visto nella
sezione sulla matematica di Image
. Infine, visualizza l'immagine con una tavolozza. Qui
abbiamo utilizzato i nomi dei colori anziché le stringhe esadecimali nella tavolozza. Per informazioni dettagliate, consulta
questo riferimento
esterno sul colore CSS.

L'operazione di differenza normalizzata è così ubiquitaria nel telerilevamento che esiste una
funzione di scorciatoia su un
ee.Image
utile per semplificare il codice nell'esempio precedente:
Editor di codice (JavaScript)
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
Mappare una funzione su una raccolta
Supponiamo ora di voler aggiungere l'NDVI a ogni immagine di una raccolta di immagini. Il
modo per farlo in Earth Engine è map()
una funzione sulla raccolta.
Non confondere map()
con l'oggetto Map
. Il primo è un metodo
su una raccolta e utilizza map nel
senso del calcolo parallelo
di applicare una funzione a ogni elemento di una raccolta. La funzione definisce le operazioni che verranno applicate a ogni elemento della raccolta. Hai visto
una semplice funzione nel tutorial JavaScript, ma
ora creeremo una funzione che includa la funzionalità di Earth Engine. Ad esempio,
copia il codice NDVI precedente in una funzione che restituisce l'immagine di input con una banda NDVI:
Editor di codice (JavaScript)
var addNDVI = function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); }; // Test the addNDVI function on a single image. var ndvi = addNDVI(image).select('NDVI');
Questo codice potrebbe non essere efficiente per il calcolo dell'NDVI per una singola immagine, ma questa
funzione può essere utilizzata come argomento di map()
per aggiungere una banda NDVI
a ogni immagine della raccolta. Spesso è utile testare prima una funzione su una singola
immagine per assicurarsi che si comporti come previsto. Dopo aver testato la funzione
su una singola immagine e aver verificato che faccia quello che vuoi, puoi mapparla
sulla raccolta:
Editor di codice (JavaScript)
var withNDVI = l8.map(addNDVI);
Per verificare che in ogni immagine di questa raccolta sia presente una banda NDVI,
puoi aggiungere la raccolta withNDVI
alla mappa ed eseguire una query su una posizione casuale
con la scheda Inspector. Noterai che ogni immagine della
raccolta ora ha una banda chiamata NDVI
.
Crea un composito del pixel più verde
Ora che hai creato una raccolta di immagini in cui ogni immagine ha una banda NDVI, possiamo
esplorare un nuovo modo per creare composizioni: qualityMosaic()
. Potresti aver notato
discontinuità tra i percorsi Landsat, anche nel composito di pixel mediano. Parte del
motivo potrebbe essere dovuto a differenze nella
fenologia a causa della raccolta di immagini in
percorsi adiacenti in momenti diversi (in particolare, a distanza di 8 giorni). Un modo per
ridurre al minimo questo problema è cercare di impostare i valori dei pixel nel composito in modo che corrispondano all'incirca alla stessa
fase fenologica, ad esempio il momento di massima vegetazione delle piante (quando le foglie
sono presenti e fotosinteticamente attive). Se lasciamo che la massima intensità di verde sia definita dal massimo
NDVI, possiamo utilizzare
qualityMosaic()
per
creare un composito in cui ogni pixel contiene il pixel NDVI massimo della raccolta.
Ora puoi utilizzare la banda NDVI aggiuntiva nella raccolta withNDVI
:
Editor di codice (JavaScript)
// Make a "greenest" pixel composite. var greenest = withNDVI.qualityMosaic('NDVI'); // Display the result. var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; Map.addLayer(greenest, visParams, 'Greenest pixel composite');
Il risultato di questo codice dovrebbe essere simile alla Figura 9. Se confrontiamo la Figura 9 con la
composizione mediana mostrata nella Figura 6,
notiamo che la composizione di pixel più verde è effettivamente molto più verde. Tuttavia, un esame
attento dei corpi idrici dovrebbe evidenziare un problema diverso. Nello specifico,
le masse d'acqua ora appaiono nuvolose. Ciò è dovuto al funzionamento del metodo qualityMosaic()
: in ogni località, viene esaminata l'intera serie temporale e il pixel con il valore massimo nella banda NDVI viene impostato come valore composito. Poiché l'NDVI è più alto sulle nuvole che sull'acqua, le aree acquatiche hanno pixel nuvolosi, mentre le aree con vegetazione appaiono tutte verdi
perché l'NDVI è più alto quando la vegetazione nel pixel è fotosinteticamente attiva.

Ora hai visto diversi modi per comporre e creare mosaici di immagini in Earth Engine. Puoi creare compositi di valori recenti, mediani o del pixel più verde da immagini filtrate per ora e luogo o da tutte le immagini della raccolta. Hai imparato a eseguire calcoli sulle immagini e a estrarre informazioni. La pagina successiva illustra i modi per estrarre informazioni da Earth Engine, ad esempio come grafico o come set di dati esportato nella cartella Google Drive.