Réduire une ImageCollection
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Pour composer des images dans un ImageCollection
, utilisez imageCollection.reduce()
. Toutes les images de la collection sont alors composées en une seule image représentant, par exemple, la valeur minimale, maximale, moyenne ou l'écart type des images.
(Pour en savoir plus sur les réducteurs, consultez la section Réducteurs.) Par exemple, pour créer une image de valeur médiane à partir d'une collection:
Éditeur de code (JavaScript)
// Load a Landsat 8 collection for a single path-row.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filter(ee.Filter.eq('WRS_PATH', 44))
.filter(ee.Filter.eq('WRS_ROW', 34))
.filterDate('2014-01-01', '2015-01-01');
// Compute a median image and display.
var median = collection.median();
Map.setCenter(-122.3578, 37.7726, 12);
Map.addLayer(median, {bands: ['B4', 'B3', 'B2'], max: 0.3}, 'Median');
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 a Landsat 8 collection for a single path-row.
collection = (
ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filter(ee.Filter.eq('WRS_PATH', 44))
.filter(ee.Filter.eq('WRS_ROW', 34))
.filterDate('2014-01-01', '2015-01-01')
)
# Compute a median image and display.
median = collection.median()
m = geemap.Map()
m.set_center(-122.3578, 37.7726, 12)
m.add_layer(median, {'bands': ['B4', 'B3', 'B2'], 'max': 0.3}, 'Median')
m
À chaque emplacement de l'image de sortie, dans chaque bande, la valeur du pixel correspond à la médiane de tous les pixels non masqués de l'imagerie d'entrée (les images de la collection). Dans l'exemple précédent, median()
est une méthode pratique pour l'appel suivant:
Éditeur de code (JavaScript)
// Reduce the collection with a median reducer.
var median = collection.reduce(ee.Reducer.median());
// Display the median image.
Map.addLayer(median,
{bands: ['B4_median', 'B3_median', 'B2_median'], max: 0.3},
'Also median');
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)
# Reduce the collection with a median reducer.
median = collection.reduce(ee.Reducer.median())
# Display the median image.
m.add_layer(
median,
{'bands': ['B4_median', 'B3_median', 'B2_median'], 'max': 0.3},
'Also median',
)
m
Notez que les noms des bandes diffèrent en raison de l'utilisation de reduce()
au lieu de la méthode pratique. Plus précisément, les noms du réducteur ont été ajoutés aux noms des bandes.
Des réductions plus complexes sont également possibles avec reduce()
. Par exemple, pour calculer la tendance linéaire à long terme sur une collection, utilisez l'un des réducteurs de régression linéaire. Le code suivant calcule la tendance linéaire de l'indice de végétation amélioré (EVI) MODIS :
Éditeur de code (JavaScript)
// This function adds a band representing the image timestamp.
var addTime = function(image) {
return image.addBands(image.metadata('system:time_start')
// Convert milliseconds from epoch to years to aid in
// interpretation of the following trend calculation.
.divide(1000 * 60 * 60 * 24 * 365));
};
// Load a MODIS collection, filter to several years of 16 day mosaics,
// and map the time band function over it.
var collection = ee.ImageCollection('MODIS/006/MYD13A1')
.filterDate('2004-01-01', '2010-10-31')
.map(addTime);
// Select the bands to model with the independent variable first.
var trend = collection.select(['system:time_start', 'EVI'])
// Compute the linear trend over time.
.reduce(ee.Reducer.linearFit());
// Display the trend with increasing slopes in green, decreasing in red.
Map.setCenter(-96.943, 39.436, 5);
Map.addLayer(
trend,
{min: 0, max: [-100, 100, 10000], bands: ['scale', 'scale', 'offset']},
'EVI trend');
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)
# This function adds a band representing the image timestamp.
def add_time(image):
return image.addBands(
image.metadata('system:time_start')
# Convert milliseconds from epoch to years to aid in
# interpretation of the following trend calculation.
.divide(1000 * 60 * 60 * 24 * 365)
)
# Load a MODIS collection, filter to several years of 16 day mosaics,
# and map the time band function over it.
collection = (
ee.ImageCollection('MODIS/006/MYD13A1')
.filterDate('2004-01-01', '2010-10-31')
.map(add_time)
)
# Select the bands to model with the independent variable first.
trend = collection.select(['system:time_start', 'EVI']).reduce(
# Compute the linear trend over time.
ee.Reducer.linearFit()
)
# Display the trend with increasing slopes in green, decreasing in red.
m.set_center(-96.943, 39.436, 5)
m = geemap.Map()
m.add_layer(
trend,
{
'min': 0,
'max': [-100, 100, 10000],
'bands': ['scale', 'scale', 'offset'],
},
'EVI trend',
)
m
Notez que la sortie de la réduction dans cet exemple est une image à deux bandes avec une bande pour la pente d'une régression linéaire (scale
) et une bande pour l'intercept (offset
). Consultez la documentation de l'API pour obtenir la liste des réducteurs disponibles pour réduire une ImageCollection
à une seule Image
.
Les composites n'ont aucune projection.
Les images composites créées en réduisant une collection d'images peuvent produire des pixels dans n'importe quelle projection demandée. Par conséquent, elles n'ont pas de projection de sortie fixe.
À la place, les composites ont la projection par défaut de WGS-84 avec des pixels de résolution de 1 degré. Les composites avec la projection par défaut seront calculés dans la projection de sortie demandée. Une requête est effectuée en affichant le composite dans l'éditeur de code (découvrez comment l'éditeur de code définit l'échelle et la projection), ou en spécifiant explicitement une projection/échelle comme dans une agrégation telle que ReduceRegion
ou Export
.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/25 (UTC).
[null,null,["Dernière mise à jour le 2025/07/25 (UTC)."],[[["\u003cp\u003eUse \u003ccode\u003eimageCollection.reduce()\u003c/code\u003e to composite images in an \u003ccode\u003eImageCollection\u003c/code\u003e into a single image representing a statistical summary (e.g., median, mean) of the collection.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003ereduce()\u003c/code\u003e function utilizes reducers like \u003ccode\u003eee.Reducer.median()\u003c/code\u003e to calculate the desired composite, with band names reflecting the reducer used.\u003c/p\u003e\n"],["\u003cp\u003eMore complex reductions, such as calculating linear trends, are possible using specific reducers like \u003ccode\u003eee.Reducer.linearFit()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eComposite images generated from reducing an image collection do not have a fixed projection and will be computed based on the requested output projection.\u003c/p\u003e\n"]]],[],null,["# Reducing an ImageCollection\n\nTo composite images in an `ImageCollection`, use\n`imageCollection.reduce()`. This will composite all the images in the\ncollection to a single image representing, for example, the min, max, mean or standard\ndeviation of the images.\n(See the [Reducers section](/earth-engine/guides/reducers_image_collection)\nfor more information about reducers). For example, to create a median value image from a\ncollection:\n\n### Code Editor (JavaScript)\n\n```javascript\n// Load a Landsat 8 collection for a single path-row.\nvar collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')\n .filter(ee.Filter.eq('WRS_PATH', 44))\n .filter(ee.Filter.eq('WRS_ROW', 34))\n .filterDate('2014-01-01', '2015-01-01');\n\n// Compute a median image and display.\nvar median = collection.median();\nMap.setCenter(-122.3578, 37.7726, 12);\nMap.addLayer(median, {bands: ['B4', 'B3', 'B2'], max: 0.3}, 'Median');\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# Load a Landsat 8 collection for a single path-row.\ncollection = (\n ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')\n .filter(ee.Filter.eq('WRS_PATH', 44))\n .filter(ee.Filter.eq('WRS_ROW', 34))\n .filterDate('2014-01-01', '2015-01-01')\n)\n\n# Compute a median image and display.\nmedian = collection.median()\nm = geemap.Map()\nm.set_center(-122.3578, 37.7726, 12)\nm.add_layer(median, {'bands': ['B4', 'B3', 'B2'], 'max': 0.3}, 'Median')\nm\n```\n\nAt each location in the output image, in each band, the pixel value is the median of all\nunmasked pixels in the input imagery (the images in the collection). In the previous\nexample, `median()` is a convenience method for the following call:\n\n### Code Editor (JavaScript)\n\n```javascript\n// Reduce the collection with a median reducer.\nvar median = collection.reduce(ee.Reducer.median());\n\n// Display the median image.\nMap.addLayer(median,\n {bands: ['B4_median', 'B3_median', 'B2_median'], max: 0.3},\n 'Also median');\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# Reduce the collection with a median reducer.\nmedian = collection.reduce(ee.Reducer.median())\n\n# Display the median image.\nm.add_layer(\n median,\n {'bands': ['B4_median', 'B3_median', 'B2_median'], 'max': 0.3},\n 'Also median',\n)\nm\n```\n\nNote that the band names differ as a result of using `reduce()` instead of the\nconvenience method. Specifically, the names of the reducer have been appended to the\nband names.\n\nMore complex reductions are also possible using `reduce()`. For\nexample, to compute the long term linear trend over a collection, use one of the linear\nregression reducers. The following code computes the linear trend of MODIS Enhanced\nVegetation Index (EVI):\n\n### Code Editor (JavaScript)\n\n```javascript\n// This function adds a band representing the image timestamp.\nvar addTime = function(image) {\n return image.addBands(image.metadata('system:time_start')\n // Convert milliseconds from epoch to years to aid in\n // interpretation of the following trend calculation.\n .divide(1000 * 60 * 60 * 24 * 365));\n};\n\n// Load a MODIS collection, filter to several years of 16 day mosaics,\n// and map the time band function over it.\nvar collection = ee.ImageCollection('MODIS/006/MYD13A1')\n .filterDate('2004-01-01', '2010-10-31')\n .map(addTime);\n\n// Select the bands to model with the independent variable first.\nvar trend = collection.select(['system:time_start', 'EVI'])\n // Compute the linear trend over time.\n .reduce(ee.Reducer.linearFit());\n\n// Display the trend with increasing slopes in green, decreasing in red.\nMap.setCenter(-96.943, 39.436, 5);\nMap.addLayer(\n trend,\n {min: 0, max: [-100, 100, 10000], bands: ['scale', 'scale', 'offset']},\n 'EVI trend');\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# This function adds a band representing the image timestamp.\ndef add_time(image):\n return image.addBands(\n image.metadata('system:time_start')\n # Convert milliseconds from epoch to years to aid in\n # interpretation of the following trend calculation.\n .divide(1000 * 60 * 60 * 24 * 365)\n )\n\n\n# Load a MODIS collection, filter to several years of 16 day mosaics,\n# and map the time band function over it.\ncollection = (\n ee.ImageCollection('MODIS/006/MYD13A1')\n .filterDate('2004-01-01', '2010-10-31')\n .map(add_time)\n)\n\n# Select the bands to model with the independent variable first.\ntrend = collection.select(['system:time_start', 'EVI']).reduce(\n # Compute the linear trend over time.\n ee.Reducer.linearFit()\n)\n\n# Display the trend with increasing slopes in green, decreasing in red.\nm.set_center(-96.943, 39.436, 5)\nm = geemap.Map()\nm.add_layer(\n trend,\n {\n 'min': 0,\n 'max': [-100, 100, 10000],\n 'bands': ['scale', 'scale', 'offset'],\n },\n 'EVI trend',\n)\nm\n```\n\nNote that the output of the reduction in this example is a two banded image\nwith one band for the slope of a linear regression (`scale`) and one band\nfor the intercept (`offset`). Explore the API documentation to see a list of\nthe reducers that are available to reduce an `ImageCollection` to a single\n`Image`.\n\nComposites have no projection\n-----------------------------\n\nComposite images created by reducing an image collection are able to produce pixels\nin any requested projection and therefore *have no fixed output projection* .\nInstead, composites have\n[the default\nprojection](/earth-engine/guides/projections#the-default-projection) of WGS-84 with 1-degree resolution pixels. Composites with the default\nprojection will be computed in whatever output projection is requested. A request\noccurs by displaying the composite in the Code Editor (learn about how the Code editor\nsets [scale](/earth-engine/guides/scale#scale-of-analysis) and\n[projection](/earth-engine/guides/projections)), or by explicitly specifying a\nprojection/scale as in an aggregation such as\n`ReduceRegion` or `Export`."]]