Struttura della raccolta Landsat
L'USGS produce dati in tre livelli (categorie) per ogni satellite:
- Livello 1 (T1): dati che soddisfano i requisiti di qualità geometrica e radiometrica
- Livello 2 (T2): dati che non soddisfano i requisiti del livello 1
- In tempo reale (RT): dati che non sono stati ancora valutati (l'operazione può richiedere fino a un mese).
Per ulteriori informazioni, consulta la documentazione USGS sui livelli della raccolta 2.
Per consentire l'accesso sia ai dati T1 convalidati sia ai dati più recenti in tempo reale, abbiamo agrupato le scene in raccolte per livello e satellite. Ecco alcuni esempi per Landsat 8:
ID | Descrizione |
---|---|
LANDSAT/LC08/C02/T1_RT | Landsat 8, Collection 2, Tier 1 + Real Time |
LANDSAT/LC08/C02/T1 | Solo Landsat 8, raccolta 2, livello 1 |
LANDSAT/LC08/C02/T2 | Solo Landsat 8, raccolta 2, livello 2 |
Le scene appena acquisite vengono aggiunte quotidianamente alla raccolta T1_RT. Una volta che una scena RT viene nuovamente elaborata e classificata come T1 o T2, viene rimossa dalla raccolta T1_RT e la nuova versione viene aggiunta alle raccolte appropriate. Se il tuo lavoro è sensibile alle rimozioni o a scene potenzialmente registrate in modo errato, ti consigliamo di attenerti alla raccolta T1. In generale, è molto raro che una registrazione errata sia sufficientemente grande da essere rilevata nelle scene appena acquisite.
Ciascuna delle raccolte precedenti contiene i dati non elaborati (ovvero la radianza al sensore scalata). Inoltre, per ogni raccolta contenente immagini T1 o T2, vengono offerti prodotti TOA (riflettanza in atmosfera), SR (riflettanza superficiale) e LST (temperatura della superficie terrestre). La tabella seguente descrive l'ID raccolta per le raccolte TOA e SR/LST utilizzando come esempio i dati di Landsat 8.
ID | Descrizione |
---|---|
LANDSAT/LC08/C02/T1_RT_TOA | Landsat 8, Collection 2, Tier 1 + Real Time, TOA |
LANDSAT/LC08/C02/T1_TOA | Landsat 8, Collection 2, solo livello 1, TOA |
LANDSAT/LC08/C02/T1_L2 | Landsat 8, Collection 2, solo livello 1, SR e LST |
LANDSAT/LC08/C02/T2_TOA | Landsat 8, Collection 2, solo livello 2, TOA |
Questi dati sono disponibili per Landsat 4, 5, 7, 8 e 9. Sostituisci "LC08" nelle definizioni delle raccolte precedenti con gli ID della tabella seguente per recuperare le raccolte per i vari satelliti.
ID | Descrizione |
---|---|
LT04 | Landsat 4, Thematic Mapper (TM) |
LT05 | Landsat 5, Thematic Mapper (TM) |
LE07 | Landsat 7, Enhanced Thematic Mapper Plus (ETM+) |
LC08 | Landsat 8, Operational Land Imager (OLI) |
LC09 | Landsat 9, Operational Land Imager 2 (OLI-2) |
Stato della raccolta Landsat
Pre-Collection 1: non più prodotta o distribuita dall'USGS, non supportata da Earth Engine, da rimuovere dal Data Catalog nel 2024.
Raccolta 1: non più prodotta o distribuita dall'USGS, non supportata da Earth Engine, da rimuovere dal Catalogo dei dati nel 2024. Utilizza la guida alla migrazione per aggiornare gli script, i moduli e le app Earth Engine alla raccolta 2 entro il 1° luglio 2024 per evitare richieste con errori.
Raccolta 2: raccolta attuale prodotta dall'USGS. Disponibilità completa nel Catalogo dati di Earth Engine.
Metodi di elaborazione di Landsat
Earth Engine contiene una serie di metodi di elaborazione specifici per Landsat. Nello specifico, esistono metodi per calcolare la radianza al sensore, la riflettanza al confine dell'atmosfera (TOA), la riflettanza superficiale (SR), il punteggio delle nuvole e i compositi senza nuvole.
Irradianza al sensore e riflettanza TOA
Le scene "non elaborate" in Earth Engine contengono immagini con numeri digitali (DN) che rappresentano la radianza scalata. La conversione dei DN in intensità al sensore è una
trasformazione lineare che utilizza i coefficienti memorizzati nei metadati della scena
(Chander et
al. 2009). Il metodo ee.Algorithms.Landsat.calibratedRadiance()
esegue questa conversione. La conversione in riflettanza TOA (o al sensore) è una trasformazione lineare che tiene conto dell'elevazione solare e della distanza Terra-Sole variabile stagionalmente. La conversione TOA viene gestita dal metodo ee.Algorithms.Landsat.TOA()
. Il metodo TOA converte le bande termiche in temperatura di luminosità. Per ulteriori informazioni sul calcolo della riflettanza TOA o della temperatura di brillantezza, consulta
Chander et
al. (2009) (o questo
sito USGS per Landsat 8). L'esempio seguente mostra la conversione da dati non elaborati a brillantezza e riflettanza TOA per un'immagine Landsat 8:
// Load a raw Landsat scene and display it. var raw = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318'); Map.centerObject(raw, 10); Map.addLayer(raw, {bands: ['B4', 'B3', 'B2'], min: 6000, max: 12000}, 'raw'); // Convert the raw data to radiance. var radiance = ee.Algorithms.Landsat.calibratedRadiance(raw); Map.addLayer(radiance, {bands: ['B4', 'B3', 'B2'], max: 90}, 'radiance'); // Convert the raw data to top-of-atmosphere reflectance. var toa = ee.Algorithms.Landsat.TOA(raw); Map.addLayer(toa, {bands: ['B4', 'B3', 'B2'], max: 0.2}, 'toa reflectance');
import ee import geemap.core as geemap
# Load a raw Landsat scene and display it. raw = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318') m = geemap.Map() m.center_object(raw, 10) m.add_layer( raw, {'bands': ['B4', 'B3', 'B2'], 'min': 6000, 'max': 12000}, 'raw' ) # Convert the raw data to radiance. radiance = ee.Algorithms.Landsat.calibratedRadiance(raw) m.add_layer(radiance, {'bands': ['B4', 'B3', 'B2'], 'max': 90}, 'radiance') # Convert the raw data to top-of-atmosphere reflectance. toa = ee.Algorithms.Landsat.TOA(raw) m.add_layer(toa, {'bands': ['B4', 'B3', 'B2'], 'max': 0.2}, 'toa reflectance') m
Riflettività della superficie
I dati sulla riflettanza superficiale (SR) di Landsat sono disponibili in Earth Engine come copia dell'archivio della raccolta 2, livello 2 dell'USGS. Tieni presente che i dati SR di Landsat 4, 5 e 7 vengono generati utilizzando l'algoritmo LEDAPS, mentre i dati SR di Landsat 8 e 9 vengono generati utilizzando l'algoritmo LaSRC. Scopri di più su questi algoritmi e sulle loro differenze rispetto a quelli del USGS.
Puoi accedere a un'immagine Landsat 8 della raccolta 2 di livello 2 della USGS come questa:
var srImage = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028');
import ee import geemap.core as geemap
sr_image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028')
I set di dati sulla riflettanza superficiale per la raccolta 2 di Landsat 4-9 sono:
var surfaceReflectanceL4 = ee.ImageCollection('LANDSAT/LT04/C02/T1_L2'); var surfaceReflectanceL5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2'); var surfaceReflectanceL7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2'); var surfaceReflectanceL8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2'); var surfaceReflectanceL9 = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2');
import ee import geemap.core as geemap
surface_reflectance_l4 = ee.ImageCollection('LANDSAT/LT04/C02/T1_L2') surface_reflectance_l5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2') surface_reflectance_l7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2') surface_reflectance_l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') surface_reflectance_l9 = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2')
Punteggio semplice per il cloud
Per assegnare un punteggio ai pixel Landsat in base alla nuvolosità relativa, Earth Engine fornisce un rudimentale algoritmo di valutazione delle nuvole nel metodo ee.Algorithms.Landsat.simpleCloudScore()
. Per informazioni dettagliate sull'implementazione, consulta questo script di esempio di Editor di codice. L'esempio seguente utilizza l'algoritmo di assegnazione del punteggio delle nubi per mascherare le nubi in un'immagine Landsat 8:
// Load a cloudy Landsat scene and display it. var cloudy_scene = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140926'); Map.centerObject(cloudy_scene); Map.addLayer(cloudy_scene, {bands: ['B4', 'B3', 'B2'], max: 0.4}, 'TOA', false); // Add a cloud score band. It is automatically called 'cloud'. var scored = ee.Algorithms.Landsat.simpleCloudScore(cloudy_scene); // Create a mask from the cloud score and combine it with the image mask. var mask = scored.select(['cloud']).lte(20); // Apply the mask to the image and display the result. var masked = cloudy_scene.updateMask(mask); Map.addLayer(masked, {bands: ['B4', 'B3', 'B2'], max: 0.4}, 'masked');
import ee import geemap.core as geemap
# Load a cloudy Landsat scene and display it. cloudy_scene = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140926') m = geemap.Map() m.center_object(cloudy_scene) m.add_layer( cloudy_scene, {'bands': ['B4', 'B3', 'B2'], 'max': 0.4}, 'TOA', False ) # Add a cloud score band. It is automatically called 'cloud'. scored = ee.Algorithms.Landsat.simpleCloudScore(cloudy_scene) # Create a mask from the cloud score and combine it with the image mask. mask = scored.select(['cloud']).lte(20) # Apply the mask to the image and display the result. masked = cloudy_scene.updateMask(mask) m.add_layer(masked, {'bands': ['B4', 'B3', 'B2'], 'max': 0.4}, 'masked') m
Se esegui questo esempio nell'editor di codice, prova a attivare/disattivare la visibilità dei livelli TOA per confrontare la differenza tra le immagini mascherate e non mascherate. Per istruzioni su come procedere, consulta la sezione Gestione livelli della documentazione di Editor di codice. Tieni presente che l'input di simpleCloudScore()
è una singola scena TOA di Landsat. Tieni inoltre presente che simpleCloudScore()
aggiunge un
canale chiamato 'cloud'
all'immagine di input. La banda di nuvole contiene il
punteggio delle nuvole da 0 (cielo sereno) a 100 (cielo molto nuvoloso). L'esempio precedente utilizza una
soglia arbitraria (20) per il punteggio delle nuvole per mascherare i pixel nuvolosi. Per applicare questo
algoritmo a un mosaico di scene Landsat di Earth Engine, imposta la proprietà SENSOR_ID
// Load a Landsat 8 TOA collection, make 15-day mosaic, set SENSOR_ID property. var mosaic = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterDate('2019-06-01', '2019-06-16').mosaic() .set('SENSOR_ID', 'OLI_TIRS'); // Cloud score the mosaic and display the result. var scored_mosaic = ee.Algorithms.Landsat.simpleCloudScore(mosaic); Map.addLayer(scored_mosaic, {bands: ['B4', 'B3', 'B2'], max: 0.4}, 'TOA mosaic');
import ee import geemap.core as geemap
# Load a Landsat 8 TOA collection, make 15-day mosaic, set SENSOR_ID property. mosaic = ( ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterDate('2019-06-01', '2019-06-16') .mosaic() .set('SENSOR_ID', 'OLI_TIRS') ) # Cloud score the mosaic and display the result. scored_mosaic = ee.Algorithms.Landsat.simpleCloudScore(mosaic) m = geemap.Map() m.add_layer( scored_mosaic, {'bands': ['B4', 'B3', 'B2'], 'max': 0.4}, 'TOA mosaic', ) m
SENSOR_ID
è una proprietà delle singole immagini. Quando Earth Engine crea un
mosaico di molte immagini, deve eliminare i metadati delle singole immagini, inclusa la proprietà
SENSOR_ID
. Per assegnare un punteggio a un mosaico, Earth Engine cerca la proprietà, ma non riesce a trovarla, generando un errore. Imposta la proprietà manualmente per evitarlo. Gli ID sensore di Landsat 5, 7 e 8(9) sono "TM", "ETM" e "OLI_TIRS", rispettivamente.
Composito semplice
Per creare semplici compositi Landsat senza nuvole, Earth Engine fornisce il metodo
ee.Algorithms.Landsat.simpleComposite()
. Questo metodo seleziona un
sottoinsieme di scene in ogni posizione, le converte in riflettanza TOA, applica il semplice
punteggio delle nuvole e prende la mediana dei pixel meno nuvolosi. Questo esempio crea un composito semplice utilizzando i parametri predefiniti e lo confronta con un composito che utilizza parametri personalizzati per la soglia del punteggio cloud e il percentile:
// Load a raw Landsat 5 ImageCollection for a single year. var collection = ee.ImageCollection('LANDSAT/LT05/C02/T1') .filterDate('2010-01-01', '2010-12-31'); // Create a cloud-free composite with default parameters. var composite = ee.Algorithms.Landsat.simpleComposite(collection); // Create a cloud-free composite with custom parameters for // cloud score threshold and percentile. var customComposite = ee.Algorithms.Landsat.simpleComposite({ collection: collection, percentile: 75, cloudScoreRange: 5 }); // Display the composites. Map.setCenter(-122.3578, 37.7726, 10); Map.addLayer(composite, {bands: ['B4', 'B3', 'B2'], max: 128}, 'TOA composite'); Map.addLayer(customComposite, {bands: ['B4', 'B3', 'B2'], max: 128}, 'Custom TOA composite');
import ee import geemap.core as geemap
# Load a raw Landsat 5 ImageCollection for a single year. collection = ee.ImageCollection('LANDSAT/LT05/C02/T1').filterDate( '2010-01-01', '2010-12-31' ) # Create a cloud-free composite with default parameters. composite = ee.Algorithms.Landsat.simpleComposite(collection) # Create a cloud-free composite with custom parameters for # cloud score threshold and percentile. custom_composite = ee.Algorithms.Landsat.simpleComposite( collection=collection, percentile=75, cloudScoreRange=5 ) # Display the composites. m = geemap.Map() m.set_center(-122.3578, 37.7726, 10) m.add_layer( composite, {'bands': ['B4', 'B3', 'B2'], 'max': 128}, 'TOA composite' ) m.add_layer( custom_composite, {'bands': ['B4', 'B3', 'B2'], 'max': 128}, 'Custom TOA composite', ) m
Tieni presente che l'input del composito semplice è una raccolta di immagini non elaborate. Tieni inoltre presente
che per impostazione predefinita l'uscita della banda riflettente è la riflettanza scalata a 8 bit e l'uscita della banda termica è Kelvin meno 100, per adattarsi all'intervallo di 8 bit. Puoi modificare questo comportamento impostando il parametro asFloat
su true per ottenere un output con valori non scalati e non spostati.