Landsat-Algorithmen

Landsat-Sammlungsstruktur

Das USGS stellt für jeden Satelliten Daten in drei Stufen (Kategorien) bereit:

  • Stufe 1 (T1): Daten, die die geometrischen und radiometrischen Qualitätsanforderungen erfüllen
  • Stufe 2 (T2): Daten, die nicht den Anforderungen der Stufe 1 entsprechen
  • Echtzeit (RT): Daten, die noch nicht ausgewertet wurden (kann bis zu einem Monat dauern).

Weitere Informationen finden Sie in der USGS-Dokumentation zu den Stufen der Sammlung 2.

Damit Sie sowohl auf die validierten T1-Daten als auch auf die neuesten Echtzeitdaten zugreifen können, haben wir die Szenen nach Stufe und Satellit in Sammlungen gruppiert. Beispiele für Landsat 8:

ID Beschreibung
LANDSAT/LC08/C02/T1_RT Landsat 8, Collection 2, Tier 1 + Echtzeit
LANDSAT/LC08/C02/T1 Nur Landsat 8, Collection 2, Tier 1
LANDSAT/LC08/C02/T2 Nur Landsat 8, Collection 2, Tier 2

Neu aufgenommene Szenen werden der Sammlung „T1_RT“ täglich hinzugefügt. Sobald eine RT-Szene noch einmal verarbeitet und als T1 oder T2 kategorisiert wurde, wird sie aus der Sammlung „T1_RT“ entfernt und die neue Version wird den entsprechenden Sammlungen hinzugefügt. Wenn Ihre Arbeit empfindlich auf Entfernungen oder potenziell falsch registrierte Szenen reagiert, sollten Sie sich an die T1-Sammlung halten. Im Allgemeinen ist es jedoch sehr selten, dass eine Fehlregistrierung bei neu aufgenommenen Szenen groß genug ist, um sie zu bemerken.

Jede der vorherigen Sammlungen enthält die Rohdaten (d.h. skalierte Strahlung am Sensor). Zusätzlich werden für jede Sammlung, die T1- oder T2-Bilder enthält, Produkte für die Reflexion an der Atmosphärenobergrenze (TOA), die Oberflächenreflexion (SR) und die Bodenoberflächentemperatur (LST) angeboten. In der folgenden Tabelle wird die Sammlungs-ID für TOA- und SR/LST-Sammlungen anhand von Landsat 8-Daten beschrieben.

ID Beschreibung
LANDSAT/LC08/C02/T1_RT_TOA Landsat 8, Collection 2, Tier 1 + Real Time, TOA
LANDSAT/LC08/C02/T1_TOA Landsat 8, Collection 2, nur Tier 1, TOA
LANDSAT/LC08/C02/T1_L2 Landsat 8, Collection 2, nur Tier 1, SR und LST
LANDSAT/LC08/C02/T2_TOA Landsat 8, Collection 2, nur Tier 2, TOA

Diese Daten sind für Landsat 4, 5, 7, 8 und 9 verfügbar. Ersetzen Sie „LC08“ in den vorherigen Sammlungsdefinitionen durch IDs aus der folgenden Tabelle, um Sammlungen für die verschiedenen Satelliten abzurufen.

ID Beschreibung
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)

Status der Landsat-Sammlung

Pre-Collection 1: werden nicht mehr vom USGS erstellt oder verteilt, werden von Earth Engine nicht unterstützt und werden 2024 aus dem Data Catalog entfernt.

Collection 1: Wird vom USGS nicht mehr erstellt oder verteilt, wird von Earth Engine nicht unterstützt und wird 2024 aus dem Data Catalog entfernt. Aktualisieren Sie Ihre Earth Engine-Scripts, ‑Module und ‑Apps bis zum 1. Juli 2024 mithilfe des Migrationsleitfadens auf Collection 2, um fehlgeschlagene Anfragen zu vermeiden.

Collection 2: aktuelle Sammlung, die vom USGS erstellt wird. Vollständige Verfügbarkeit im Earth Engine-Datenkatalog

Verarbeitungsmethoden für Landsat-Daten

Earth Engine bietet eine Vielzahl von Verarbeitungsmethoden speziell für Landsat-Daten. Insbesondere gibt es Methoden zur Berechnung der Sensorstrahlung, der Reflexion an der Obergrenze der Atmosphäre (Top-of-Atmosphere, TOA), der Oberflächenreflexion (Surface Reflectance, SR), des Wolkenbewertungsfaktors und wolkenfreier Komposite.

Sensorliche Leuchtkraft und TOA-Reflexion

Die „rohen“ Szenen in Earth Engine enthalten Bilder mit digitalen Zahlen (DNs), die die skalierte Leuchtkraft darstellen. Die Umwandlung von DNs in die Strahlung am Sensor ist eine lineare Transformation mithilfe von Koeffizienten, die in den Metadaten der Szene gespeichert sind (Chander et al. 2009). Diese Umwandlung wird von der Methode ee.Algorithms.Landsat.calibratedRadiance() durchgeführt. Die Umwandlung in die Reflektivität bei TOA (oder am Sensor) ist eine lineare Transformation, bei der die Sonnenhöhe und die saisonal unterschiedliche Entfernung zwischen Erde und Sonne berücksichtigt werden. Die TOA-Conversion wird von der Methode ee.Algorithms.Landsat.TOA() verarbeitet. Bei der TOA-Methode werden die thermischen Bänder in die Helligkeitstemperatur umgewandelt. Weitere Informationen zur Berechnung der TOA-Reflexion oder der Helligkeitstemperatur finden Sie unter Chander et al. (2009) (oder dieser USGS-Website für Landsat 8). Das folgende Beispiel zeigt die Umwandlung von Rohdaten in Leuchtdichte und TOA-Reflektivität für ein Landsat 8-Bild:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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

Oberflächenreflexion

Daten zur Oberflächenreflexion (SR) von Landsat sind in Earth Engine als Kopie des USGS-Archivs „Collection 2, Level 2“ verfügbar. Hinweis: SR-Daten von Landsat 4, 5 und 7 werden mit dem LEDAPS-Algorithmus generiert, während SR-Daten von Landsat 8 und 9 mit dem LaSRC-Algorithmus generiert werden. Informationen zu diesen Algorithmen und ihren Unterschieden zum USGS

So greifen Sie auf ein Landsat 8-Bild der USGS-Sammlung 2, Level 2 zu:

Code-Editor (JavaScript)

var srImage = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

import ee
import geemap.core as geemap

Colab (Python)

sr_image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028')

Die Datasets zur Oberflächenreflexion für die Sammlung 2 von Landsat 4 bis 9 sind:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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')

Einfacher Cloud-Wert

Für die Bewertung von Landsat-Pixeln nach ihrer relativen Bewölkung bietet Earth Engine in der Methode ee.Algorithms.Landsat.simpleCloudScore() einen rudimentären Algorithmus zur Wolkenbewertung. Weitere Informationen zur Implementierung finden Sie in diesem Beispielskript für den Code-Editor. Im folgenden Beispiel werden Wolken in einem Landsat 8-Bild mit dem Algorithmus zur Wolkenbewertung maskiert:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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

Wenn Sie dieses Beispiel im Code-Editor ausführen, können Sie die Sichtbarkeit der TOA-Ebenen umschalten, um den Unterschied zwischen den maskierten und nicht maskierten Bildern zu vergleichen. Eine Anleitung dazu finden Sie im Abschnitt Ebenenmanager der Code-Editor-Dokumentation. Beachten Sie, dass die Eingabe für simpleCloudScore() eine einzelne Landsat-TOA-Szene ist. Beachten Sie auch, dass simpleCloudScore() dem Eingabebild einen Streifen namens 'cloud' hinzufügt. Das Wolkenband enthält den Wolkenbedeckungsgrad von 0 (nicht bewölkt) bis 100 (stark bewölkt). Im vorherigen Beispiel wird ein beliebiger Schwellenwert (20) für die Wolkenbewertung verwendet, um bewölkte Pixel zu maskieren. Wenn Sie diesen Algorithmus auf ein Earth Engine-Mosaik aus Landsat-Szenen anwenden möchten, legen Sie die Eigenschaft SENSOR_ID fest:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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 ist eine Eigenschaft einzelner Bilder. Wenn in Earth Engine ein Mosaik aus vielen Bildern erstellt wird, müssen die Metadaten der einzelnen Bilder, einschließlich des Attributs SENSOR_ID, verworfen werden. Um ein Mosaik zu benoten, sucht Earth Engine nach dieser Eigenschaft, kann sie aber nicht finden. Dies führt zu einem Fehler. Legen Sie die Property manuell fest, um dies zu vermeiden. Die Sensor-IDs von Landsat 5, 7 und 8(9) lauten „TM“, „ETM“ und „OLI_TIRS“.

Einfaches Composite

Für die Erstellung einfacher wolkenfreier Landsat-Komposite bietet Earth Engine die Methode ee.Algorithms.Landsat.simpleComposite(). Bei dieser Methode wird an jedem Standort eine Teilmenge der Szenen ausgewählt, in TOA-Reflektivität umgewandelt, der einfache Wolkenbedeckungswert angewendet und der Median der am wenigsten bewölkten Pixel ermittelt. In diesem Beispiel wird ein einfacher Composite mit Standardparametern erstellt und mit einem Composite mit benutzerdefinierten Parametern für den Cloud-Score-Grenzwert und den Prozentrang verglichen:

Code-Editor (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');

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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

Die Eingabe für das einfache Composite ist eine Sammlung von Rohbildern. Beachten Sie auch, dass die Ausgabe des reflektierenden Bandes standardmäßig auf 8 Bit skaliert ist und die Ausgabe des thermischen Bandes Kelvin minus 100, um in den 8‑Bit-Bereich zu passen. Sie können dieses Verhalten ändern, indem Sie den Parameter asFloat auf „true“ setzen, um eine nicht skalierte und nicht verschobene Gleitkommaausgabe zu erhalten.