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 Dokumenty w Edytorze 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.
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);
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.