Reduktionen von ImageCollection

Angenommen, Sie müssen den Median einer Zeitreihe von Bildern ermitteln, die durch eine ImageCollection dargestellt wird. Verwenden Sie imageCollection.reduce(), um eine ImageCollection zu verkleinern. Dadurch wird die Bildsammlung auf ein einzelnes Bild reduziert, wie in Abbildung 1 dargestellt. Die Ausgabe wird pixelweise berechnet, sodass jedes Pixel in der Ausgabe aus dem Medianwert aller Bilder in der Sammlung an dieser Stelle besteht. Wenn Sie andere Statistiken wie Mittelwert, Summe, Varianz oder ein beliebiges Perzentil abrufen möchten, müssen Sie den entsprechenden Reduzierer auswählen und anwenden. Eine Liste aller derzeit verfügbaren Reduzierer finden Sie im Code-Editor auf dem Tab Docs. Für grundlegende Statistiken wie „Min.“, „Max.“ und „Mittelwert“ Für ImageCollection gibt es Tastenkürzel wie min(), max() und mean(). Sie funktionieren genau wie der Aufruf von reduce(), mit der Ausnahme, dass den resultierenden Bandnamen nicht der Name des Reducers angehängt wird.

imageCollection.reduce diagram
Abbildung 1. Abbildung eines ee.Reducer, der auf eine ImageCollection angewendet wird

Ein Beispiel für die Reduzierung einer ImageCollection ist eine Sammlung von Landsat 5-Bildern, die nach Pfad und Zeile gefiltert wird. Im folgenden Code wird reduce() verwendet, um die Sammlung auf einen Image zu reduzieren. Hier wird ein Median-Reduzierer nur zu Veranschaulichungszwecken verwendet:

Code-Editor (JavaScript)

// Load an image collection, filtered so it's not too much data.
var collection = ee.ImageCollection('LANDSAT/LT05/C02/T1')
  .filterDate('2008-01-01', '2008-12-31')
  .filter(ee.Filter.eq('WRS_PATH', 44))
  .filter(ee.Filter.eq('WRS_ROW', 34));

// Compute the median in each band, each pixel.
// Band names are B1_median, B2_median, etc.
var median = collection.reduce(ee.Reducer.median());

// The output is an Image.  Add it to the map.
var vis_param = {bands: ['B4_median', 'B3_median', 'B2_median'], gamma: 1.6};
Map.setCenter(-122.3355, 37.7924, 9);
Map.addLayer(median, vis_param);

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 an image collection, filtered so it's not too much data.
collection = (
    ee.ImageCollection('LANDSAT/LT05/C02/T1')
    .filterDate('2008-01-01', '2008-12-31')
    .filter(ee.Filter.eq('WRS_PATH', 44))
    .filter(ee.Filter.eq('WRS_ROW', 34))
)

# Compute the median in each band, each pixel.
# Band names are B1_median, B2_median, etc.
median = collection.reduce(ee.Reducer.median())

# The output is an Image.  Add it to the map.
vis_param = {'bands': ['B4_median', 'B3_median', 'B2_median'], 'gamma': 1.6}
m = geemap.Map()
m.set_center(-122.3355, 37.7924, 9)
m.add_layer(median, vis_param)
m

Dies gibt eine mehrbandige Image zurück, deren jedes Pixel der Median aller nicht maskierten Pixel in der ImageCollection an dieser Pixelposition ist. Insbesondere wurde der Reducer für jeden Band der Eingabebilder wiederholt, d. h. der Median wird in jedem Band unabhängig berechnet. Die Bandnamen haben den Namen des Reducers angehängt: 'B1_median', 'B2_median' usw. Die Ausgabe sollte in etwa so aussehen wie in Abbildung 2.

Weitere Informationen zum Verringern von Bildsammlungen finden Sie im Abschnitt „Verringern“ der ImageCollection-Dokumentation. Beachten Sie insbesondere, dass Bilder, die durch das Reduzieren einer ImageCollection erstellt werden, keine Projektion haben. Das bedeutet, dass Sie die Skalierung für alle Berechnungen mit berechneten Bildern, die durch eine ImageCollection-Reduktion ausgegeben werden, explizit festlegen sollten.

ImageCollection.reduce output
Abbildung 2. Ein Falschfarben-Composite des Medians von Landsat 5-Szenen aus dem Jahr 2008.