画像コレクションとは、Earth Engine 画像のセットを指します。たとえば、すべての Landsat 8 画像のコレクションは ee.ImageCollection です。これまで使用してきた SRTM 画像と同様に、画像コレクションにも ID があります。単一の画像と同様に、コードエディタから Earth Engine Data Catalogを検索し、データセットの詳細ページを確認することで、画像コレクションの ID を見つけることができます。たとえば、「landsat 8 toa」を検索して最初の結果をクリックします。これは、
USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance データセットに対応しているはずです。[Import] ボタンを使用してそのデータセットをインポートし、名前を l8 に変更するか、ID を画像コレクション コンストラクタにコピーします。
コードエディタ(JavaScript)
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
イメージ コレクションのフィルタリング
このコレクションは、地球全体で収集されたすべての Landsat 8 シーンを表しています。多くの場合、アルゴリズムをテストする単一の画像または画像のサブセットを抽出すると便利です。時間または空間でコレクションを制限するには、フィルタを適用します。たとえば、特定の場所をカバーする画像にコレクションをフィルタするには、まず、ジオメトリ描画ツールを使用して、点(または線、ポリゴン)で関心のある領域を定義します。関心のあるエリアにパンし、[Geometry Imports](1 つ以上のジオメトリがすでに定義されている場合)にカーソルを合わせて、[+new layer] をクリックします(インポートがない場合は、次のステップに進みます)。ポイント描画ツール(
)を取得し、関心のあるエリアにポイントを作成します。インポートに point という名前を付けます。次に、l8 コレクションをフィルタして、ポイントと交差する画像のみを取得します。次に、2 つ目のフィルタを追加して、2015 年に取得された画像のみにコレクションを制限します。
コードエディタ(JavaScript)
var spatialFiltered = l8.filterBounds(point); print('spatialFiltered', spatialFiltered); var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31'); print('temporalFiltered', temporalFiltered);
ここで、filterBounds() と filterDate() は、画像コレクションのより一般的な filter() メソッドのショートカット メソッドです。このメソッドは、ee.Filter() を引数として受け取ります。これらのメソッドの詳細については、コードエディタの [Docs] タブをご覧ください。filterBounds() の引数は、デジタル化したポイントです。filterDate() の引数は、文字列として表される 2 つの日付です。
フィルタされたコレクションを print() できます。一度に 5,000 個を超えるアイテムを印刷することはできません。たとえば、l8 コレクション全体を印刷することはできません。print() メソッドを実行すると、出力されたコレクションをコンソールで確認できます。zippy()を使用して
ImageCollection を展開し、features のリストを展開すると、イメージのリストが表示されます。各イメージも展開して検査できます。これは、個々の画像の ID を確認する方法の一つです。分析対象の個々の画像を取得するもう 1 つのよりプログラム的な方法は、コレクションを並べ替えて、メタデータ プロパティに関連する最新、最古、または最適な画像を取得することです。たとえば、印刷された画像コレクションの画像オブジェクトを調べると、CLOUD_COVER というメタデータ プロパティが確認できます。このプロパティを使用して、関心のある地域で 2015 年に最も雲が少ない画像を取得できます。
コードエディタ(JavaScript)
// This will sort from least to most cloudy. var sorted = temporalFiltered.sort('CLOUD_COVER'); // Get the first (least cloudy) image. var scene = sorted.first();
これで、画像を表示する準備が整いました。
余談: RGB 画像の表示
マルチバンド画像が地図に追加されると、Earth Engine は画像の最初の 3 つのバンドを選択し、デフォルトで赤、緑、青として表示します。前述のように、データ型に応じてバンドを拡大します。通常、これでは不十分です。たとえば、Landsat 画像(前の例の scene)を地図に追加すると、結果は不十分になります。
コードエディタ(JavaScript)
Map.centerObject(scene, 9); Map.addLayer(scene, {}, 'default RGB');
まず、地図はズームレベル 9 で画像の中央に配置されます。次に、visParams パラメータの空のオブジェクト({})とともに画像が表示されます(詳細については、Map.addLayer() のドキュメントをご覧ください)。その結果、画像はデフォルトの可視化で表示されます。最初の 3 つのバンドはそれぞれ R、G、B にマッピングされ、バンドは float データ型であるため、[0, 1] に引き伸ばされます。つまり、沿岸エアロゾル バンド(「B1」)は赤、青バンド(「B2」)は緑、緑バンド(「B3」)は青でレンダリングされます。画像をトゥルーカラー合成としてレンダリングするには、Landsat 8 バンド「B4」、「B3」、「B2」をそれぞれ R、G、B に使用するように Earth Engine に指示する必要があります。使用するバンドを visParams オブジェクトの bands プロパティで指定します。Landsat バンドの詳細については、こちらの資料をご覧ください。
また、一般的な地表ターゲットからの反射率を表示するのに適した min 値と max 値を指定する必要があります。リストを使用してバンドごとに異なる値を指定することもできますが、ここでは 0.3 を max として指定し、min パラメータにデフォルト値の 0 を使用するだけで十分です。ビジュアリゼーション パラメータを 1 つのオブジェクトに結合して表示します。
コードエディタ(JavaScript)
var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; Map.addLayer(scene, visParams, 'true-color composite');
結果は図 5 のようになります。このコードでは、将来の使用に備えて、可視化パラメータのオブジェクトを変数に割り当てています。このオブジェクトは、画像コレクションを可視化する際に役立ちます。
さまざまなバンドを可視化してみてください。もう 1 つのよく使われる組み合わせは、「B5」、「B4」、「B3」で、これはフォールスカラー合成と呼ばれます。その他の興味深い疑似カラー合成については、こちらをご覧ください。
Earth Engine は大規模な分析を行うように設計されているため、1 つのシーンだけを扱う必要はありません。次に、コレクション全体を RGB 合成として表示します。
画像コレクションの表示
地図に画像コレクションを追加する方法は、地図に画像を追加する方法と似ています。たとえば、l8 コレクションの 2016 年の画像と、以前に定義した visParams オブジェクトを使用します。
コードエディタ(JavaScript)
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31'); Map.addLayer(landsat2016, visParams, 'l8 collection');
ズームアウトすると、Landsat 画像が収集された場所(陸地)に連続したモザイクが表示されます。また、[Inspector] タブを使用して画像をクリックすると、インスペクタの [Pixels] セクションにピクセル値のリスト(またはグラフ)が表示され、[Objects] セクションに画像オブジェクトのリストが表示されます。
十分にズームアウトすると、モザイクに雲がいくつかあることに気づくでしょう。ImageCollection を地図に追加すると、最新の値の合成として表示されます。つまり、最新のピクセルのみが表示されます(コレクションで mosaic() を呼び出す場合と同様)。そのため、異なるタイミングで取得されたパス間に不連続性が見られることがあります。また、多くの地域が曇っているように見えるのもこのためです。次のページでは、画像の合成方法を変更して、邪魔な雲を取り除く方法を学びます。