Earth Engine から画像データを取得する
Earth Engine から Google ドライブ、Cloud Storage、または Earth Engine アセットに画像データを取得するには、Export を使用します。ジョブはすべて Earth Engine によって処理されます。エクスポート ジョブでスケーリングの問題が発生した場合(1 日以上かかる、メモリまたはタイムアウト エラーが返されるなど)、または Apache Beam、Spark、Dask などのフレームワークを使い慣れている場合は、ここで説明するデータ抽出方法をおすすめします。これらのフレームワークで実装されたワークフローは、Dataflow や Dataproc などの Google Cloud ツールを使用してスケーリングできます。
具体的には、getPixels または computePixels を使用して画像データを手動でリクエストする方法について説明します。ここで、「画像データ」とは、一貫したスケールと投影を持つピクセル値の多次元配列を意味します。リクエストで、リージョン、スケール、投影、ディメンションが指定されます。ImageFileFormat ページに、使用可能な出力形式が記載されています。出力先には、Cloud Storage またはローカルにマウントされたディレクトリが含まれます。手動リクエストは複雑になりますが、より大きなワークロードにスケーリングできます。
既存のアセットから画像データを取得する
getPixels を使用して、既存の Earth Engine アセットから画像データを取得します。アセット ID をリクエストに直接渡すため、ピクセルを抽出する前にピクセルに対して計算を行うことはできません。指定されたリージョン、スケール、投影、形式のピクセル ブロックが返されます。次の例は、getPixels を使用して MODIS 画像コレクションから NDVI の時系列を取得する方法を示しています。
計算された画像から画像データを取得する
computePixels を使用して、計算された画像(コンポジットなど)から画像データを取得します。computePixels では、計算された ee.Image オブジェクトを expression パラメータで渡します。指定されたリージョン、スケール、投影、形式で計算されたピクセルのブロックが返されます。次の例は、雲のない Sentinel-2 コンポジットからマルチスペクトル データのパッチを取得する方法を示しています。
リクエストの同時読み込み
任意の目的で任意の量のリクエストを行うことができますが、大規模なワークフローではリクエストを並列化することをおすすめします。このようなリクエストを多数並行して行うには、Earth Engine の大容量エンドポイントを使用する必要があります。並列リクエストの数は、同時インタラクティブ リクエストの割り当てによって設定されます。大容量エンドポイントを使用するタイミングの詳細については、Earth Engine の大容量ページをご覧ください。
マルチスレッド処理
スレッドを使用して、同時リクエストを行うことができます。このアプローチは、getPixels と computePixels のサンプル ノートブックで示されています。
Apache Beam
Apache Beam パイプラインを使用して、リクエストを並列化できます。これらのパイプラインは、ローカルで実行することも、Google Dataflow ジョブとして実行することもできます。例については、こちらの Geo for Good トレーニングまたはこちらの People, Planet and AI デモをご覧ください。また、他の並列化ライブラリには Dask や Apache Spark などがあります。
Google Colab で実行
GitHub 上のソースを見る