Réductions ImageCollection

Prenons l'exemple de la nécessité de calculer la médiane sur une série temporelle d'images représentée par un ImageCollection. Pour réduire une ImageCollection, utilisez imageCollection.reduce(). La collection d'images est ainsi réduite à une image individuelle, comme illustré dans la figure 1. Plus précisément, la sortie est calculée par pixel, de sorte que chaque pixel de la sortie est composé de la valeur médiane de toutes les images de la collection à cet emplacement. Pour obtenir d'autres statistiques, telles que la moyenne, la somme, la variance, un percentile arbitraire, etc., le réducteur approprié doit être sélectionné et appliqué. (consultez l'onglet Documentation de l'Éditeur de code pour obtenir la liste de tous les réducteurs actuellement disponibles). Pour les statistiques de base telles que min, max, moyenne, etc., ImageCollection dispose de méthodes de raccourci telles que min(), max(), mean(), etc. Elles fonctionnent exactement de la même manière que l'appel de reduce(), sauf que le nom du réducteur ne sera pas ajouté aux noms de bandes résultants.

Schéma imageCollection.reduce
Figure 1. Illustration d'un ee.Reducer appliqué à une ImageCollection.

Pour illustrer la réduction d'une ImageCollection, prenons l'exemple d'une collection d'images Landsat 5, filtrées par chemin et ligne. Le code suivant utilise reduce() pour réduire la collection à un seul Image (ici, un réducteur de médiane est utilisé simplement à des fins d'illustration):

Éditeur de code (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);

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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

Cette opération renvoie un Image multibande, dont chaque pixel correspond à la médiane de tous les pixels non masqués de l'ImageCollection à cet emplacement. Plus précisément, le réducteur a été répété pour chaque bande de l'imagerie d'entrée, ce qui signifie que la médiane est calculée indépendamment dans chaque bande. Notez que le nom du réducteur est ajouté aux noms des bandes: 'B1_median', 'B2_median', etc. La sortie devrait ressembler à la figure 2.

Pour en savoir plus sur la réduction des collections d'images, consultez la section "Réduction" de la documentation ImageCollection. Notez en particulier que les images produites en réduisant un ImageCollection n'ont aucune projection. Cela signifie que vous devez définir explicitement l'échelle sur tous les calculs impliquant la sortie d'images calculées par une réduction ImageCollection.

Sortie ImageCollection.reduce
Figure 2. Composite en fausses couleurs de la médiane des scènes Landsat 5 en 2008.