Ridurre una raccolta di immagini

Per comporre immagini in un ImageCollection, utilizza imageCollection.reduce(). In questo modo, tutte le immagini della raccolta verranno composite in un'unica immagine che rappresenta, ad esempio, la deviazione minima, massima, media o standard delle immagini. (consulta la sezione Riduttori per ulteriori informazioni sui riduttori). Ad esempio, per creare un'immagine del valore mediano da una raccolta:

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

Configurazione di Python

Per informazioni sull'API Python e sull'utilizzo di geemap per lo sviluppo interattivo, consulta la pagina Ambiente Python.

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

In ogni posizione dell'immagine di output, in ogni banda, il valore del pixel è la mediana di tutti i pixel non mascherati nelle immagini di input (le immagini della raccolta). Nell'esempio precedente, median() è un metodo di utilità per la seguente chiamata:

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

Configurazione di Python

Per informazioni sull'API Python e sull'utilizzo di geemap per lo sviluppo interattivo, consulta la pagina Ambiente Python.

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

Tieni presente che i nomi dei gruppi sono diversi a causa dell'utilizzo di reduce() anziché del metodo di comodità. Nello specifico, i nomi dei riduttori sono stati aggiunti ai nomi delle bande.

È possibile anche applicare riduzioni più complesse utilizzando reduce(). Ad esempio, per calcolare la tendenza lineare a lungo termine in una raccolta, utilizza uno dei riduttori di regressione lineare. Il codice seguente calcola la tendenza lineare dell'Indice di vegetazione migliorato (EVI) di MODIS:

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

Configurazione di Python

Per informazioni sull'API Python e sull'utilizzo di geemap per lo sviluppo interattivo, consulta la pagina Ambiente Python.

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

Tieni presente che l'output della riduzione in questo esempio è un'immagine a due bande con una banda per la pendenza di una regressione lineare (scale) e una banda per l'intercetta (offset). Consulta la documentazione dell'API per visualizzare un elenco dei riduttori disponibili per ridurre un ImageCollection a un singolo Image.

I compositi non hanno proiezione

Le immagini composite create riducendo una raccolta di immagini sono in grado di produrre pixel in qualsiasi proiezione richiesta e pertanto non hanno una proiezione di output fissa. I compositi, invece, hanno la proiezione predefinita WGS-84 con pixel di risoluzione di 1 grado. I compositi con la proiezione predefinita verranno calcolati in qualsiasi proiezione di output richiesta. Una richiesta avviene visualizzando il composito nell'editor di codice (scopri come l'editor di codice imposta la scala e la proiezione) o specificando esplicitamente una proiezione/scala come in un'aggregazione come ReduceRegion o Export.