グラフと画像をエクスポートする

Earth Engine は強力な分析ツールですが、レポートや出版物にグラフ、画像、地図などを埋め込むために、分析結果をエクスポートする必要がある場合があります。このセクションでは、他のソフトウェアでエクスポートして表示できるグラフや画像を作成する方法について説明します。前のセクションで、次のようなコードを使用して、コレクション内のすべての画像に NDVI バンドを追加したことを思い出してください。ここで、l8 変数は Landsat 8 TOA 反射率コレクションを参照しています。

コードエディタ(JavaScript)

// Import the Landsat 8 TOA image collection.
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

// Map a function over the Landsat 8 TOA collection to add an NDVI band.
var withNDVI = l8.map(function(image) {
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
});

グラフを作成します

実際には、特定の場所の NDVI の経時変化のグラフが必要だとします。このようなグラフを作成するには、まず対象の場所を選択します。ポイント描画ツール()を取得してポイントを作成し、対象領域に単一のポイント ジオメトリを作成します。(すでにインポートがある場合は、まず [Geometry Imports] にカーソルを合わせて [+ new layer] をクリックします)。農業地域、落葉樹林、一年生草原、または年周期のあるその他の土地被覆の領域内のポイントを特定します。インポートに roi という名前を付けます。(ジオメトリをプログラムで作成する方法については、こちらのページをご覧ください)。

次に、roi ポイントを使用して、そのポイントの下のピクセルにおける NDVI の経時変化のグラフを作成します。Earth Engine でグラフを作成するには、ui.Chart パッケージを使用します。(Earth Engine でグラフを作成する方法の詳細)。具体的には、時間の経過に伴うグラフを作成するには、ui.Chart.image.series() メソッドを使用します。

コードエディタ(JavaScript)

// Create a chart.
var chart = ui.Chart.image.series({
  imageCollection: withNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'NDVI over time'});

// Display the chart in the console.
print(chart);

roi ジオメトリでは、農業地域内のポイントを選択しました。その結果、図 10 のようなグラフが生成されました。グラフ コンストラクタのパラメータには、reduceRegion() などのリデューサーとスケールが含まれています。リージョンとして提供するポイントは 1 つのピクセルとしか交差しないため、「first」リデューサーを使用するだけで十分です。領域が大きい場合は、ピクセルを集計する方法を指定する「平均」などのリデューサーを使用する必要があります。また、グラフを可視化するには、グラフを印刷するだけでよいことに注意してください。

Tutorial_api_10_ndvi_chart.png
図 10. ポイント ジオメトリの Landsat NDVI の推移のグラフ。

補足: Landsat の簡単な雲マスク処理

このグラフで気づいたかもしれませんが、このポイントの NDVI 値の時系列は少しノイズが多いようです。これは、雲が原因である可能性が高いです。この影響を軽減するため、Earth Engine には、熱帯域を備えた Landsat センサー用の雲マスク アルゴリズム ee.Algorithms.Landsat.simpleCloudScore() が含まれています。Landsat TOA 反射率画像を入力として受け取り、cloud という名前のバンドを追加します。このバンドは、ピクセルの曇り具合の指標(0 ~ 100)で、曇り具合が少ない順に並んでいます。コレクションにマッピングした関数を変更することで、クラウド インデックスに任意のしきい値(20)を使用して、グラフを少しクリーンアップできます。

コードエディタ(JavaScript)

var cloudlessNDVI = l8.map(function(image) {
  // Get a cloud score in [0, 100].
  var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');

  // Create a mask of cloudy pixels from an arbitrary threshold.
  var mask = cloud.lte(20);

  // Compute NDVI.
  var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');

  // Return the masked image with an NDVI band.
  return image.addBands(ndvi).updateMask(mask);
});

print(ui.Chart.image.series({
  imageCollection: cloudlessNDVI.select('NDVI'),
  region: roi,
  reducer: ee.Reducer.first(),
  scale: 30
}).setOptions({title: 'Cloud-masked NDVI over time'}));

図 11 に、雲マスクの結果を示します。時系列は少し滑らかに見えますが、雲の影響を受けたピクセルがまだ含まれている可能性があります。クラウド指標のしきい値を調整し、グラフ化された時系列を観察して、このしきい値が結果にどのように影響するかを確認します。

Tutorial_api_11_cloudless_chart.png
図 11. ポイント ジオメトリでのクラウド マスクされた NDVI の経時変化のグラフ。

画像のエクスポート

Earth Engine で計算されたデータのグラフをエクスポートする方法はわかりましたが、画像全体はどうすればよいでしょうか?たとえば、前のセクションで説明したように、最も緑色のピクセルで構成された合成画像を作成したとします。

コードエディタ(JavaScript)

var greenest = cloudlessNDVI.qualityMosaic('NDVI');

このコードは、以前のコードとクラウド マスク コレクションを使用している点のみが異なります。Export パッケージを使用すると、このサブセット(リージョンで定義)をエクスポートできます。(Earth Engine からラスターデータとベクトルデータをエクスポートする方法の詳細をご覧ください)。たとえば、他のドキュメントに簡単に埋め込むことができる画像をエクスポートするには、以前に行ったように、可視化画像を作成して、Google ドライブ フォルダにエクスポートします。

コードエディタ(JavaScript)

// Create a 3-band, 8-bit, color-IR composite to export.
var visualization = greenest.visualize({
  bands: ['B5', 'B4', 'B3'],
  max: 0.4
});

// Create a task that you can launch from the Tasks tab.
Export.image.toDrive({
  image: visualization,
  description: 'Greenest_pixel_composite',
  scale: 30
});

このコードを実行すると、[タスク] タブに新しいタスクが作成されます。エクスポート構成ダイアログを開くには、[タスク] タブの [実行] ボタンをクリックします。タスクを構成したら、ダイアログの [実行] ボタンをクリックしてエクスポートを開始します。ただし、その前に以下の点にご注意ください。

region 引数なしでエクスポートする際に注意が必要なのは、scale に比較的小さな値を設定し、地図を広範囲にズームアウトすると、非常に大きな画像がドライブ フォルダにエクスポートされる可能性があるためです。詳細と構成パラメータの一覧については、[ドキュメント] タブの Export.image.toDrive() ドキュメントをご覧ください。

これで、Earth Engine API の概要は終了です。これで、最も一般的な Earth Engine の機能の多くを理解できたので、より複雑な分析に自信を持って取り組むことができるはずです。他の質問については、ドキュメントをお読みになるか、フォーラムで検索してください。よろしくお願いいたします。