ImageCollection の削減

ImageCollection で表される画像の時系列の中央値を取得する必要がある例について考えてみましょう。ImageCollection を減らすには、imageCollection.reduce() を使用します。これにより、図 1 に示すように、画像のコレクションが個々の画像に減らされます。具体的には、出力はピクセル単位で計算され、出力の各ピクセルは、その位置にあるコレクション内のすべての画像の中央値で構成されます。平均、合計、分散、任意のパーセンタイルなどの他の統計情報を取得するには、適切な Reducer を選択して適用する必要があります。(現在利用可能なすべてのリデューサーの一覧については、コードエディタの [ドキュメント] タブをご覧ください)。最小値、最大値、平均値などの基本統計情報の場合、ImageCollection には、min()max()mean() などのショートカット メソッドがあります。これらのメソッドは、reduce() を呼び出す場合とまったく同じように機能しますが、結果のバンド名にレジューサーの名前が追加されることはありません。

imageCollection.reduce 図
図 1. ImageCollection に適用された ee.Reducer のイラスト。

ImageCollection を削減する例として、パスと行でフィルタされた Landsat 5 画像のコレクションについて考えてみましょう。次のコードでは、reduce() を使用してコレクションを 1 つの Image に減らしています(ここでは、説明を目的として中央値 Reducer を使用しています)。

コードエディタ(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 とインタラクティブな開発で geemap を使用する方法については、 Python 環境のページをご覧ください。

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

これにより、マルチバンドの Image が返されます。各ピクセルは、そのピクセル位置の ImageCollection 内のすべてのマスクされていないピクセルの中央値です。具体的には、入力画像のバンドごとにレジューサーが繰り返されます。つまり、各バンドで中央値が独立して計算されます。バンド名には、'B1_median''B2_median' などのレジューサー名が付加されています。出力は図 2 のようになります。

画像コレクションの削減の詳細については、ImageCollection のドキュメントの削減セクションをご覧ください。特に、ImageCollection を縮小して生成された画像には投影がありません。つまり、ImageCollection リダクションによって出力された計算画像を含む計算では、スケールを明示的に設定する必要があります。

ImageCollection.reduce の出力
図 2. 2008 年の Landsat 5 シーンの中央値の疑似カラー合成画像。