Raccolte di immagini

Una raccolta di immagini si riferisce a un insieme di immagini di Earth Engine. Ad esempio, la raccolta di tutte le immagini Landsat 8 è un ee.ImageCollection. Come l'immagine SRTM con cui hai lavorato, anche le raccolte di immagini hanno un ID. Come per le singole immagini, puoi scoprire l'ID di una raccolta di immagini cercando nel catalogo dati di Earth Engine da Code Editor e visualizzando la pagina dei dettagli del set di dati. Ad esempio, cerca "landsat 8 toa" e fai clic sul primo risultato, che dovrebbe corrispondere al set di dati USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance. Importa il set di dati utilizzando il pulsante Importa e rinominalo in l8 oppure copia l'ID nel costruttore della raccolta di immagini:

Editor di codice (JavaScript)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

Filtrare le raccolte di immagini

È importante notare che questa raccolta rappresenta ogni scena di Landsat 8 raccolta in tutto il mondo. Spesso è utile estrarre una singola immagine o un sottoinsieme di immagini su cui testare gli algoritmi. Il modo per limitare la raccolta in base al tempo o allo spazio è filtrarla. Ad esempio, per filtrare la raccolta in modo da visualizzare le immagini che coprono una determinata posizione, definisci prima l'area di interesse con un punto (o una linea o un poligono) utilizzando gli strumenti di disegno della geometria. Sposta la visualizzazione sull'area di interesse, passa il mouse sopra Importazioni di geometrie (se hai già una o più geometrie definite) e fai clic su + Nuovo livello (se non hai importazioni, vai al passaggio successivo). Seleziona lo strumento di disegno del punto () e crea un punto nell'area di interesse. Assegna un nome all'importazione point. Ora, filtra la raccolta l8 per ottenere solo le immagini che intersecano il punto, poi aggiungi un secondo filtro per limitare la raccolta alle sole immagini acquisite nel 2015:

Editor di codice (JavaScript)

var spatialFiltered = l8.filterBounds(point);
print('spatialFiltered', spatialFiltered);

var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31');
print('temporalFiltered', temporalFiltered);

Qui, filterBounds() e filterDate() sono metodi di scelta rapida per il metodo più generale filter() sulle raccolte di immagini, che accetta un ee.Filter() come argomento. Esplora la scheda Documenti dell'editor di codice per scoprire di più su questi metodi. L'argomento di filterBounds() è il punto digitalizzato, mentre gli argomenti di filterDate() sono due date, espresse come stringhe.

Tieni presente che puoi print() le raccolte filtrate. Non puoi stampare più di 5000 cose alla volta, quindi non puoi, ad esempio, stampare l'intera raccolta l8. Dopo aver eseguito il metodo print(), puoi esaminare le raccolte stampate nella console. Tieni presente che quando espandi ImageCollection utilizzando la freccia (), poi espandi l'elenco di features, vedrai un elenco di immagini, ognuna delle quali può anche essere espansa e ispezionata. Questo è un modo per scoprire l'ID di una singola immagine. Un altro modo più programmatico per ottenere singole immagini per l'analisi è ordinare la raccolta in modo da ottenere l'immagine più recente, più vecchia o ottimale rispetto a una proprietà dei metadati. Ad esempio, esaminando gli oggetti immagine nelle raccolte di immagini stampate, potresti aver notato una proprietà dei metadati chiamata CLOUD_COVER. Puoi utilizzare questa proprietà per ottenere l'immagine meno nuvolosa del 2015 nella tua area di interesse:

Editor di codice (JavaScript)

// This will sort from least to most cloudy.
var sorted = temporalFiltered.sort('CLOUD_COVER');

// Get the first (least cloudy) image.
var scene = sorted.first();

Ora puoi visualizzare l'immagine.

Digressione: visualizzazione di immagini RGB

Quando un'immagine multibanda viene aggiunta a una mappa, Earth Engine sceglie le prime tre bande dell'immagine e le visualizza come rosso, verde e blu per impostazione predefinita, estendendole in base al tipo di dati, come descritto in precedenza. Di solito, questo non è sufficiente. Ad esempio, se aggiungi l'immagine Landsat (scene nell'esempio precedente) alla mappa, il risultato non è soddisfacente:

Editor di codice (JavaScript)

Map.centerObject(scene, 9);
Map.addLayer(scene, {}, 'default RGB');

Tieni presente che la mappa è centrata sull'immagine con un livello di zoom pari a 9. L'immagine viene visualizzata con un oggetto vuoto ({}) per il parametro visParams (consulta la documentazione di Map.addLayer() per i dettagli). Di conseguenza, l'immagine viene visualizzata con la visualizzazione predefinita: le prime tre bande corrispondono rispettivamente a R, G e B e vengono estese a [0, 1] poiché le bande sono di tipo float. Ciò significa che la banda dell'aerosol costiero ("B1") viene visualizzata in rosso, la banda blu ("B2") in verde e la banda verde ("B3") in blu. Per eseguire il rendering dell'immagine come composizione a colori reali, devi indicare a Earth Engine di utilizzare le bande "B4", "B3" e "B2" di Landsat 8 rispettivamente per R, G e B. Specifica quali bande utilizzare con la proprietà bands dell'oggetto visParams. Scopri di più sulle bande Landsat in questo riferimento.

Devi inoltre fornire valori min e max adatti per visualizzare la riflettanza dei tipici target della superficie terrestre. Sebbene gli elenchi possano essere utilizzati per specificare valori diversi per ogni banda, qui è sufficiente specificare 0.3 come max e utilizzare il valore predefinito zero per il parametro min. Combinando i parametri di visualizzazione in un unico oggetto e visualizzando:

Editor di codice (JavaScript)

var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3};
Map.addLayer(scene, visParams, 'true-color composite');

Il risultato dovrebbe essere simile a quello della Figura 5. Tieni presente che questo codice assegna l'oggetto dei parametri di visualizzazione a una variabile per un possibile utilizzo futuro. Come scoprirai presto, questo oggetto sarà utile quando visualizzerai le raccolte di immagini.

Tutorial_api_05_true_color.png
Figura 5. Immagine di riflettanza TOA di Landsat 8 come composizione a colori reali, estesa a [0, 0.3].

Prova a visualizzare bande diverse. Un'altra combinazione preferita è "B5", "B4" e "B3", che viene chiamata composizione a falsi colori. Altri compositi interessanti in falsi colori sono descritti qui.

Poiché Earth Engine è progettato per eseguire analisi su larga scala, non sei limitato a lavorare con una sola scena. A questo punto puoi visualizzare un'intera raccolta come composizione RGB.

Visualizzazione delle raccolte di immagini

Aggiungere una raccolta di immagini a una mappa è simile all'aggiunta di un'immagine a una mappa. Ad esempio, utilizzando le immagini del 2016 nella raccolta l8 e l'oggetto visParams definito in precedenza,

Editor di codice (JavaScript)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31');
Map.addLayer(landsat2016, visParams, 'l8 collection');

Tieni presente che ora puoi diminuire lo zoom e vedere un mosaico continuo in cui vengono raccolte le immagini Landsat (ovvero sulla terraferma). Tieni presente inoltre che quando utilizzi la scheda Ispettore e fai clic sull'immagine, vedrai un elenco di valori dei pixel (o un grafico) nella sezione Pixel e un elenco di oggetti immagine nella sezione Oggetti dell'ispettore.

Se hai eseguito lo zoom indietro, probabilmente avrai notato alcune nuvole nel mosaico. Quando aggiungi un ImageCollection alla mappa, viene visualizzato come composito di valori recenti, il che significa che vengono visualizzati solo i pixel più recenti (come chiamare mosaic() nella raccolta). Per questo motivo, puoi notare discontinuità tra i percorsi acquisiti in momenti diversi. È anche il motivo per cui molte aree potrebbero apparire nuvolose. Nella pagina successiva, scopri come modificare la composizione delle immagini per eliminare quelle fastidiose nuvole.