Redukcje ImageCollection

Rozważmy przykład, w którym trzeba obliczyć medianę na podstawie sekwencji obrazów w czasie reprezentowanych przez ImageCollection. Aby zmniejszyć ImageCollection, użyj imageCollection.reduce(). W ten sposób zbiór obrazów zostanie ograniczony do jednego obrazu, jak pokazano na rysunku 1. W szczególności dane wyjściowe są obliczane dla poszczególnych pikseli, co oznacza, że każdy piksel w danych wyjściowych składa się z wartości mediany wszystkich obrazów w zbiorze w danej lokalizacji. Aby uzyskać inne statystyki, takie jak średnia, suma, wariancja, dowolny przedział ćwiartkowy itp., należy wybrać odpowiedni reduktor i go zastosować. (listę wszystkich dostępnych obecnie reduktorów znajdziesz na karcie DokumentyEdytorze kodu). podstawowe statystyki, takie jak minimum, maksimum, średnia itp.; ImageCollection ma metody skrótu, takie jak min(), max(), mean() itp. Działa ona dokładnie tak samo jak wywołanie funkcji reduce(), z tym, że nazwy powstałych pasm nie będą zawierać dołączonej nazwy reduktora.

imageCollection.reduce diagram
Rysunek 1. Ilustracja funkcji ee.Reducer zastosowana do zbioru obrazów.

Przykładem zmniejszenia ImageCollection może być kolekcja obrazów Landsat 5, filtrowana według ścieżki i wiersza. Ten kod używa funkcji reduce() do zredukowania zbioru do jednego Image (w tym przykładzie użyliśmy reduktora mediany tylko w celu zilustrowania działania funkcji):

Edytor kodu (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);

Konfiguracja Pythona

Informacje o interfejsie Python API i o używaniu pakietu geemap do programowania interaktywnego znajdziesz na stronie Python Environment.

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

Zwraca to wielopasmowy obraz Image, w którym każdy piksel jest medianą wszystkich niezamaskowanych pikseli w ImageCollection w danej lokalizacji piksela. W szczególności reduktor został powtórzony dla każdego pasma obrazu wejściowego, co oznacza, że mediana jest obliczana niezależnie w każdym paśmie. Pamiętaj, że nazwy pasm mają dołączoną nazwę reduktora: 'B1_median', 'B2_median' itd. Wynik powinien wyglądać jak na rysunku 2.

Więcej informacji o zmniejszaniu liczby kolekcji zdjęć znajdziesz w sekcji poświęconej zmniejszaniu liczby kolekcji zdjęć w dokumentacji ImageCollection. Zwróć uwagę, że obrazy utworzone przez pomniejszenie ImageCollection nie mają projekcji. Oznacza to, że należy wyraźnie ustawić skalę dla wszystkich obliczeń z udziałem obliczonych obrazów generowanych przez ImageCollection.

Wyjście metody ImageCollection.reduce
Rysunek 2. Złożona kompozycja w fałszywych kolorach na podstawie mediany zdjęć zrobionych w 2008 r. przez satelitę Landsat 5.