Earth Engine の Cloud Optimized GeoTIFF(COG)

Google Earth Engine では、独自の Google Cloud Storage(GCS)バケットに保存されているラスターデータを操作できます。Cloud Optimized GeoTIFF(COG)を使用すると、ピクセルを Earth Engine のアセット ストアに取り込むことなく、Earth Engine でデータに直接アクセスして分析できます。

このクラウド ファーストのアプローチには、特に大規模なデータセットの管理や、Earth Engine をより広範な Google Cloud ワークフローや外部ツールやプラットフォームに統合する場合に、いくつかのメリットがあります。

Cloud Storage と COG を使用する理由

  • 柔軟性と相互運用性: データを標準の Cloud Storage バケットに保存し、他のツールやサービスからアクセスできるようにします。データを直接アップロードする場合でも、Earth Engine からエクスポートする場合でも、Cloud Storage は Earth Engine と外部ワークフローの両方にとって信頼できる唯一の情報源となります。
  • データ コントロールと下り(外向き): Cloud Storage にデータを保存すると、標準のオブジェクト ストレージ管理機能が提供されます。これにより、リクエスタ支払いや公開バケットなどの Cloud Storage 機能を使用して、データのダウンロード、移行、共有を行い、標準の Cloud IAM を使用してアクセスを管理できます。
  • 柔軟なスケーリング: Earth Engine のストレージの上限を回避します。Cloud Storage は、ペタバイト規模までセルフサービスで拡張できる、事実上無制限のストレージを提供します。
  • 取り込みの待機なし: Earth Engine は、インデックス登録と検証のためにファイル ヘッダーからメタデータ(投影やディメンションなど)のみを読み取るため、COG の登録は迅速に完了します。実際のピクセルデータは Cloud Storage に残り、計算中にオンデマンドで読み取られるため、別の取り込みタスクは必要ありません。

Earth Engine での COG ワークフロー

Earth Engine は、Cloud Storage 上の COG との双方向ワークフローをサポートしています。COG を GCS から Earth Engine に直接読み込むことができ、Earth Engine からの計算結果を COG として GCS に直接書き込むことができます。

Cloud Storage から COG を読み取る

GCS でホストされている COG を Earth Engine に取り込むには、次の 2 つの方法があります。

  1. 直接読み込み(ee.Image.loadGeoTIFF): GCS URI を使用して 1 つの画像を直接読み込みます。これは、クイックテスト、アドホック分析、一時データに最適です。

    JavaScript

    var image = ee.Image.loadGeoTIFF('gs://google-sample-bucket/my_image.tif');
    

    Python

    image = ee.Image.loadGeoTIFF('gs://google-sample-bucket/my_image.tif')
    

    完全な例については、Cloud GeoTIFF の画像をご覧ください。

  2. 登録済みアセット: アップロード マニフェストを使用して、1 つ以上の COG を Earth Engine アセットとして登録します(COG 登録ガイドを参照)。これは、特にイメージ コレクションをビルドする場合に、本番環境のワークフローで推奨されるパスです。

機能 直接読み込み(loadGeoTIFF) 登録済みのアセット(マニフェスト)
設定 なし(GCS URI のみ) マニフェスト(Python クライアント、CLI、REST)
パフォーマンス Standard(読み取り時にヘッダーを読み取る) 最適化済み(作成時にインデックス登録)
管理 アセットが作成されていません ストレージではなく、アセット数の割り当てにカウントされます。
ユースケース プロトタイピング、アドホック分析 高速な読み取りを必要とする本番環境ワークフロー。

Cloud Storage への COG の書き込み

Earth Engine の計算結果を Cloud Storage バケットに COG として保存するには、Export.image.toCloudStorage バッチ エクスポート関数を使用し(画像のエクスポートを参照)、formatOptions で cloudOptimized パラメータを true に設定します。これにより、Earth Engine は画像をコンパイルし、完全に準拠した COG として GCS バケットに直接書き込みます。

サポートされている Cloud Storage バケットのロケーション

Earth Engine が Cloud Storage バケットにアクセスするには、バケットが次のいずれかのデータセンター リージョンまたはマルチリージョンに存在する必要があります。

  • us マルチリージョン
  • us-central1 を含む米国のデュアルリージョン
  • us-central1 リージョン

バケットが他のリージョン データセンターに配置されている場合、Earth Engine は登録リクエストと読み取りリクエストを拒否します。Earth Engine は、Google Cloud Storage バケットにのみ保存されている COG にアクセスします。外部クラウド ストレージ プロバイダと一般的な HTTP URL はサポートされていません。

Earth Engine COG エクスポート仕様

formatOptions の cloudOptimized: true で Export.image.toCloudStorage を使用して Earth Engine から分析結果をエクスポートする場合、Earth Engine の組み込みエクスポータは、次の標準を自動的に適用します。

  • ファイル構造: 内部タイリング(TILED=YES)を含む BigTIFF(BIGTIFF=YES)を生成し、すべての概要をファイルの先頭にコピーします。
  • 自動概要: 出力ラスターのサイズが 512x512 ピクセル以上の場合、Earth Engine は 5 レベルの 2 の累乗の概要([2, 4, 8, 16, 32])を自動的に作成します。Earth Engine は、出力ピクセルデータ型に基づいて、概要の再サンプリング方法を動的に選択します。浮動小数点画像の場合は 3 次再サンプリング、その他の整数画像または離散画像の場合は最近傍再サンプリングです。
  • デフォルトの圧縮とタイリング: Earth Engine は、256x256 ピクセル ブロック タイリングと LZW 圧縮(COMPRESS=LZW)を使用して COG をエクスポートします。formatOptions では、圧縮とタイルのサイズをカスタマイズできません。
  • 自動シャーディング: エクスポートされたラスターが大きい場合(非圧縮で 4 GiB を超える場合)、Earth Engine はエクスポートを baseFilename-yMin-xMin という名前の複数の空間タイルに自動的に分割します(大きなファイルのエクスポートを参照)。
  • シャーディングの上限をオーバーライドする: シャーディングなしで、大きなラスター(非圧縮で 16 GiB、エッジあたり 131,072 ピクセルのハード上限まで)を単一のファイルとしてエクスポートするには、formatOptions 内に fileDimensions を指定します。各ディメンションは、タイルサイズ(デフォルトでは 256、たとえば [65536, 65536])の正の整数倍である必要があります。fileDimensions は出力境界ボックスではなく、最大ファイル ディメンションを設定するため、大きな上限を渡すと、正確なグリッド計算を必要とせずに、エクスポートが単一のファイルに強制的に行われます。skipEmptyFiles: true を渡して、空の背景タイルの生成を防ぐこともできます。
  • 最適化のトレードオフ: 大規模なエクスポートを構成する場合は、ファイル数とエクスポート速度のトレードオフを評価します。fileDimensions または shardSize を小さく指定すると、ファイル フラグメントが増えますが、バックエンド ワーカー間の並列処理が最大化され、エクスポートの完了時間が短縮されます。逆に、上限をオーバーライドして 1 つの大きなファイルを生成すると、ファイル管理とデータ共有が簡素化されますが、単一ファイルの組み立てと I/O ボトルネックにより、エクスポートの実行時間が長くなる可能性があります。16 GiB の非圧縮制限に近い非常に大きな単一ファイルの COG エクスポート(特に圧縮が不十分な画像)は、概要と COG のアセンブリ中に一時ストレージ容量を超えることもあります。エクスポートが失敗した場合は、より小さなファイルにシャーディングするか、標準の GeoTIFF エクスポートを外部で変換することを検討してください。

Earth Engine 以外での COG 作成のカスタマイズ

cloudOptimized: true を使用して直接エクスポートする方法は、ほとんどのワークフローですぐに使用できる COG を生成する最も簡単な方法ですが、標準の GeoTIFF(cloudOptimized: false、デフォルト)をエクスポートし、GDAL などの外部ツールを使用して自分で COG に変換することもできます。2 段階のエクスポートと変換のワークフローは、次のような場合に役立ちます。

  • 圧縮とレイアウトをカスタマイズする: データセットに合わせて、ブロックサイズ(512x512 など)、予測子、概要のリサンプリング方法、圧縮コーデック(ZSTD など)を調整します(COG を準備するをご覧ください)。
  • 大規模な単一ファイルのエクスポートで容量エラーを回避: エクスポート中に概要の生成と COG レイアウトの書き換えをスキップすると、メモリと一時ストレージのオーバーヘッドが削減され、非常に大きな単一ファイルのエクスポートで容量上限に達する可能性が低くなります。
  • Earth Engine のエクスポート実行時間を短縮する: 概要の構築と COG 形式の変換を独自のコンピューティング環境にオフロードすることで、Earth Engine のエクスポート フェーズを短縮できます。

費用に関する考慮事項とストレージ クラス

登録された COG アセットを分析する場合、Earth Engine からの読み取りでは、Google Cloud プロジェクトで Cloud Storage の読み取りオペレーションやデータ取得の料金は発生しません。

Cloud Storage では、主に標準の月額保存データ ストレージ(GB/月)と、外部クライアントのデータ転送またはネットワーク下り(外向き)料金(バケットのロケーションとクライアントのネットワーク構成によって異なります)が課金されます。

ストレージ クラスの推奨事項

  • Standard Storage(推奨): Standard Storage は、アクティブな Earth Engine ワークフローに最適です。最小保存期間のルールがないため、早期削除のペナルティを課されることなく、一時 COG を自由に上書き、更新、削除できます。また、Earth Engine の外部でデスクトップ GIS ソフトウェア、GDAL スクリプト、または ML ノートブックを使用してバケットにアクセスする場合、Standard ストレージでは小売りの取得料金は発生しません。
  • Nearline、Coldline、Archive Storage: すべての Cloud Storage クラスは、Standard Storage と同じ低レイテンシのアクセスとスループットを提供するため、Earth Engine でコールド ストレージ階層を使用しても読み取りパフォーマンスの低下はありません。Earth Engine の計算では、これらの階層を読み取っても小売データの取得料金は発生しませんが、Cloud Storage の小売ルールでは、最小ストレージ期間(Nearline は 30 日、Coldline は 90 日、Archive は 365 日)が厳格に適用されます。最小期間より前にファイルを変更または削除すると、早期削除の追加料金が発生します。さらに、外部クライアント ツールからコールド オブジェクトにアクセスすると、高額なデータ取得料金が発生します。

小売価格と最小期間ポリシーの詳細については、Google Cloud Storage 料金ガイドをご覧ください。

大まかなワークフロー

Earth Engine で COG を使用する一般的なワークフローには、次の手順が含まれます。

外部データをインポートする場合:

  • 最適化: 外部ツール(GDAL、ローカル ワークステーション スクリプト、クラウド処理パイプラインなど)を使用して、ラスター ファイルを COG 形式に変換します。
  • アップロード: COG を、us-central1 または米国のマルチリージョンにあるサポートされている Cloud Storage バケットにアップロードします。
  • 権限: 自分とプロジェクトの共同編集者が、ファイルに対する Cloud Storage の読み取りアクセス権を持っていることを確認します(COG 権限をご覧ください)。
  • 登録する: Python クライアント ライブラリ、earthengine コマンドライン ツール、または REST API を使用して、COG を Earth Engine アセットとして登録します(COG の登録をご覧ください)。

結果のエクスポート:

  • エクスポート: cloudOptimized を true に設定して、Earth Engine から Cloud Storage にバッチ エクスポートを実行します(画像のエクスポートをご覧ください)。
  • 登録(省略可): エクスポートした COG を新しいアセットとして Earth Engine に登録し、詳細な分析を行います(COG の登録をご覧ください)。

準備ができたら詳細な COG 登録ガイドに沿って、最初のアセットを登録します。