Скидки на ImageCollection

Рассмотрим пример необходимости взять медиану временного ряда изображений, представленных ImageCollection . Чтобы уменьшить ImageCollection , используйте imageCollection.reduce() . Это уменьшает коллекцию изображений до отдельного изображения, как показано на рисунке 1. В частности, выходные данные вычисляются попиксельно, так что каждый пиксель в выходных данных состоит из медианного значения всех изображений в коллекции в этом месте. Чтобы получить другие статистические данные, такие как среднее значение, сумма, дисперсия, произвольный процентиль и т. д., следует выбрать и применить соответствующий редуктор. (Список всех доступных на данный момент редукторов см. на вкладке «Документация» в редакторе кода ). Для базовой статистики, такой как мин, макс, среднее и т. д., ImageCollection имеет сокращенные методы, такие как min() , max() , mean() и т. д. Они функционируют точно так же, как вызов reduce() , за исключением того, что к результирующим именам полос не будет добавлено имя редуктора.

Диаграмма imageCollection.reduce
Рис. 1. Иллюстрация применения ee.Reducer к ImageCollection.

В качестве примера сокращения ImageCollection рассмотрим коллекцию изображений Landsat 5, отфильтрованных по пути и строке. Следующий код использует функцию reduce() для уменьшения коллекции до одного Image (здесь медианный редуктор используется просто в иллюстративных целях):

Редактор кода (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);

Настройка Python

См. страницу «Среда Python» для получения информации об API Python и использовании geemap для интерактивной разработки.

import ee
import geemap.core as geemap

Колаб (Питон)

# 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

Это возвращает многоканальное Image , каждый пиксель которого является медианой всех немаскированных пикселей в ImageCollection в этом местоположении пикселя. В частности, редуктор повторяется для каждого канала входных изображений, а это означает, что медиана вычисляется независимо в каждом канале. Обратите внимание, что к именам полос добавляется имя редуктора: 'B1_median' , 'B2_median' и т. д. Результат должен выглядеть примерно так, как показано на рисунке 2.

Дополнительные сведения о сокращении коллекций изображений см. в разделе сокращения документации ImageCollection . В частности, обратите внимание, что изображения, созданные путем уменьшения ImageCollection не имеют проекции . Это означает, что вам следует явно задавать масштаб для любых вычислений, включающих вычисленные изображения, выводимые путем сокращения ImageCollection .

Вывод ImageCollection.reduce
Рисунок 2. Составная часть медианы сцен Landsat 5 в 2008 году в искусственных цветах.
,

Рассмотрим пример необходимости взять медиану временного ряда изображений, представленных ImageCollection . Чтобы уменьшить ImageCollection , используйте imageCollection.reduce() . Это сводит коллекцию изображений к отдельному изображению, как показано на рисунке 1. В частности, выходные данные вычисляются попиксельно, так что каждый пиксель в выходных данных состоит из медианного значения всех изображений в коллекции в этом месте. Чтобы получить другие статистические данные, такие как среднее значение, сумма, дисперсия, произвольный процентиль и т. д., следует выбрать и применить соответствующий редуктор. (Список всех доступных на данный момент редукторов см. на вкладке «Документация» в редакторе кода ). Для базовой статистики, такой как мин, макс, среднее и т. д., ImageCollection имеет сокращенные методы, такие как min() , max() , mean() и т. д. Они функционируют точно так же, как вызов reduce() , за исключением того, что к результирующим именам полос не будет добавлено имя редуктора.

Диаграмма imageCollection.reduce
Рис. 1. Иллюстрация применения ee.Reducer к ImageCollection.

В качестве примера сокращения ImageCollection рассмотрим коллекцию изображений Landsat 5, отфильтрованных по пути и строке. Следующий код использует функцию reduce() для уменьшения коллекции до одного Image (здесь медианный редуктор используется просто в иллюстративных целях):

Редактор кода (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);

Настройка Python

См. страницу «Среда Python» для получения информации об API Python и использовании geemap для интерактивной разработки.

import ee
import geemap.core as geemap

Колаб (Питон)

# 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

Это возвращает многоканальное Image , каждый пиксель которого является медианой всех немаскированных пикселей в ImageCollection в этом местоположении пикселя. В частности, редуктор повторяется для каждого канала входных изображений, а это означает, что медиана вычисляется независимо в каждом канале. Обратите внимание, что к именам полос добавляется имя редуктора: 'B1_median' , 'B2_median' и т. д. Результат должен выглядеть примерно так, как показано на рисунке 2.

Дополнительные сведения о сокращении коллекций изображений см. в разделе сокращения документации ImageCollection . В частности, обратите внимание, что изображения, созданные путем уменьшения ImageCollection не имеют проекции . Это означает, что вам следует явно задавать масштаб для любых вычислений, включающих вычисленные изображения, выводимые путем сокращения ImageCollection .

Вывод ImageCollection.reduce
Рисунок 2. Составная часть медианы сцен Landsat 5 в 2008 году в искусственных цветах.