Struktura zbioru Landsat
USGS udostępnia dane w 3 poziomach (kategoriach) dla każdego satelity:
- Poziom 1 (T1) – dane, które spełniają wymagania dotyczące jakości geometrycznej i radiometrycznej
- Poziom 2 (T2) – dane, które nie spełniają wymagań poziomu 1.
- Czas rzeczywisty (RT) – dane, które nie zostały jeszcze ocenione (może to potrwać nawet miesiąc).
Więcej informacji na ten temat znajdziesz w dokumentacji USGS dotyczącej poziomów zbioru 2.
Aby umożliwić dostęp do zweryfikowanych danych T1 i najnowszych danych w czasie rzeczywistym, podzieliliśmy sceny na kolekcje według poziomu i satelity. Przykłady dla Landsat 8:
Identyfikator | Opis |
---|---|
LANDSAT/LC08/C02/T1_RT | Landsat 8, Collection 2, poziom 1 + czas rzeczywisty |
LANDSAT/LC08/C02/T1 | Landsat 8, Collection 2, tylko poziom 1 |
LANDSAT/LC08/C02/T2 | Landsat 8, Collection 2, tylko poziom 2 |
Nowo pozyskane sceny są codziennie dodawane do kolekcji T1_RT. Gdy scena RT zostanie ponownie przetworzona i sklasyfikowana jako T1 lub T2, zostanie usunięta z kolekcji T1_RT, a nowa wersja zostanie dodana do odpowiednich kolekcji. Jeśli Twoje treści są wrażliwe na usuwanie lub potencjalnie błędnie zarejestrowane sceny, możesz pozostać przy zbiorze T1. Ogólnie jednak bardzo rzadko zdarza się, aby jakiekolwiek błędne rejestrowanie było na tyle duże, aby można było je zauważyć w nowo uzyskanych scenach.
Każdy z tych zbiorów zawiera dane nieprzetworzone (tj. skalowane promieniowanie na czujniku). Dodatkowo w przypadku każdej kolekcji zawierającej obrazy T1 lub T2 dostępne są produkty TOA (odbicie światła na górnej granicy atmosfery), SR (odbicie światła od powierzchni) i LST (temperatura na powierzchni gruntu). W tabeli poniżej podano identyfikator zbioru danych TOA i SR/LST na przykładzie danych Landsat 8.
Identyfikator | Opis |
---|---|
LANDSAT/LC08/C02/T1_RT_TOA | Landsat 8, Collection 2, poziom 1 + w czasie rzeczywistym, TOA |
LANDSAT/LC08/C02/T1_TOA | Landsat 8, Collection 2, poziom 1, TOA |
LANDSAT/LC08/C02/T1_L2 | Landsat 8, Collection 2, tylko poziom 1, SR i LST |
LANDSAT/LC08/C02/T2_TOA | Landsat 8, Collection 2, tylko poziom 2, TOA |
Dane te są dostępne dla satelitów Landsat 4, 5, 7, 8 i 9. Aby pobrać kolekcje dla różnych satelitów, w poprzednich definicjach kolekcji zastąp „LC08” identyfikatorami z tabeli poniżej.
Identyfikator | Opis |
---|---|
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) |
Stan kolekcji Landsat
Przed zbiorem 1: nie są już produkowane ani rozpowszechniane przez USGS i nie są obsługiwane przez Earth Engine. Zostaną usunięte z Data Catalog w 2024 r.
Kolekcja 1: nie jest już produkowana ani dystrybuowana przez USGS i nie jest obsługiwana przez Earth Engine. Zostanie usunięta z Data Catalog w 2024 r. Aby uniknąć niepowodzeń żądań, do 1 lipca 2024 r. zaktualizuj skrypty, moduły i aplikacje Earth Engine do Collection 2, korzystając z przewodnika po migracji.
Kolekcja 2: obecna kolekcja opracowana przez USGS. pełna dostępność w Earth Engine Data Catalog.
Metody przetwarzania danych Landsat
Earth Engine zawiera wiele metod przetwarzania danych Landsat. W szczególności istnieją metody obliczania promieniowania na czujniku, współczynnika odbicia na górze atmosfery (TOA), współczynnika odbicia powierzchni (SR), wyniku chmur i kompozycji bez chmur.
Natężenie promieniowania na czujniku i odbicie TOA
„Surowe” sceny w Earth Engine zawierają obrazy z cyfrowymi liczbami (DN), które reprezentują skalowaną radiancję. Przekształcanie DN na promieniowanie na czujniku to przekształcenie liniowe z wykorzystaniem współczynników zapisanych w metadanych sceny (Chander i in., 2009). Ta konwersja jest wykonywana przez metodę ee.Algorithms.Landsat.calibratedRadiance()
. Konwersja na TOA (lub na czujnik) odbijalności to
transformacja liniowa, która uwzględnia kąt podniesienia Słońca i zmienną w zależności od pory roku odległość Ziemia–Słońce. Konwersja TOA jest obsługiwana przez metodę ee.Algorithms.Landsat.TOA()
. Metoda TOA konwertuje pasma termiczne na temperaturę jasności. Więcej informacji o obliczaniu temperatury odbicia lub temperatury jasności TOA znajdziesz w artykule Chander i in. (2009) (lub na tej stronie USGS w przypadku Landsat 8). Ten przykład pokazuje konwersję danych nieprzetworzonych na radiancję i odblask TOA w przypadku obrazu Landsat 8:
Edytor kodu (JavaScript)
// 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
Colab (Python)
# 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
Odbicie światła od powierzchni
Dane Landsat dotyczące odbicia powierzchni (SR) są dostępne w Earth Engine jako kopia archiwum USGS Collection 2, poziom 2. Pamiętaj, że dane Landsat 4, 5 i 7 SR są generowane za pomocą algorytmu LEDAPS, a dane Landsat 8 i 9 SR są generowane za pomocą algorytmu LaSRC. Poznaj te algorytmy i ich różnice w porównaniu z USGS.
Aby uzyskać dostęp do obrazu Landsat 8 z Kolekcji 2 USGS, wykonaj te czynności:
Edytor kodu (JavaScript)
var srImage = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028');
import ee import geemap.core as geemap
Colab (Python)
sr_image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028')
Zbiory danych o odbiciu promieniowania dla Landsat 4–9 w ramach Collection 2 to:
Edytor kodu (JavaScript)
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
Colab (Python)
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')
Prosty wynik chmury
Aby oceniać piksele Landsat na podstawie względnej zachmurzenia, Earth Engine udostępnia w metodzie ee.Algorithms.Landsat.simpleCloudScore()
prymitywny algorytm oceniania zachmurzenia. (szczegóły implementacji znajdziesz w tym przykładowym skrypcie do edytora kodu). W tym przykładzie użyto algorytmu oceny chmur do zamaskowania chmur na obrazie Landsat 8:
Edytor kodu (JavaScript)
// 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
Colab (Python)
# 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
Jeśli uruchomisz ten przykład w Edytorze kodu, spróbuj przełączać widoczność warstw TOA, aby porównać obrazy z zasłoniętymi i niezasłoniętymi obszarami. (Aby dowiedzieć się, jak to zrobić, zapoznaj się z sekcją Menedżer warstw w dokumentacji do edytora kodu). Zwróć uwagę, że dane wejściowe funkcji simpleCloudScore()
to pojedyncza scena Landsat TOA. Pamiętaj też, że simpleCloudScore()
dodaje do obrazu wejściowego pas o nazwie 'cloud'
. Pasmo chmur zawiera
ocenę pokrycia nieba chmurami w zakresie od 0 (bezchmurnie) do 100 (najbardziej pochmurnie). W poprzednim przykładzie użyto dowolnego progu (20) dla wyniku chmury, aby ukryć zacienione piksele. Aby zastosować ten algorytm do mozaiki Earth Engine z danych Landsat, ustaw właściwość SENSOR_ID
:
Edytor kodu (JavaScript)
// 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
Colab (Python)
# 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
to właściwość poszczególnych obrazów. Gdy Earth Engine tworzy mozaikę z wielu obrazów, musi wyrzucić metadane poszczególnych obrazów, w tym właściwości SENSOR_ID
. Aby ocenić mozaikę w chmurze, Earth Engine szuka tej właściwości, ale jej nie znajduje, co powoduje błąd. Aby tego uniknąć, ustaw tę właściwość ręcznie. Identyfikatory czujników Landsat 5, 7 i 8(9) to odpowiednio „TM”, „ETM” i „OLI_TIRS”.
Prosty kompozyt
Aby utworzyć proste kompozycje Landsat bez chmur, Earth Engine udostępnia metodę ee.Algorithms.Landsat.simpleComposite()
. Ta metoda wybiera podzbiór scen w każdej lokalizacji, przekształca je w odbicie TOA, stosuje prosty
współczynnik chmur i wybiera medianę najmniej zachmurzonych pikseli. W tym przykładzie tworzymy prosty element złożony przy użyciu parametrów domyślnych i porównujemy go z elementem złożonym z parametrami niestandardowymi dla progu wyniku w chmurze i wartości procentowej:
Edytor kodu (JavaScript)
// 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
Colab (Python)
# 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
Pamiętaj, że dane wejściowe do prostego łączenia to zbiór nieprzetworzonych obrazów. Pamiętaj też, że domyślnie dane wyjściowe z pasma odbiciowego są skalowane do 8 bitów, a dane wyjściowe z pasma termicznego to wartości w kelwinach pomniejszone o 100, aby pasowały do zakresu 8-bitowego. Możesz zmienić to zachowanie, ustawiając parametr asFloat
na wartość true, aby uzyskać nieskalowane i nieprzeskalowane dane wyjściowe typu float.