コンテンツに移動
データ分析

地理空間分析のために Earth Engine と BigQuery の緊密な連携を実現するコネクタ

2023年7月13日
Google Cloud Japan Team

※この投稿は米国時間 2023 年 7 月 6 日に、Google Cloud blog に投稿されたものの抄訳です。

このたび、Earth Engine から BigQuery に表形式データを簡単にエクスポートできる新機能をリリースいたしました。Earth Engine と BigQuery はともに、さまざまなユーザーやアプリケーションが大規模データ処理機能にアクセスして使用できるようにすることを目標としています。Earth Engine は画像(ラスター)の処理に重点を置く傾向があるのに対し、BigQuery は大規模な表形式データセットの処理に最適化されています。今回の新しい接続機能は、2 つのプラットフォームの相互運用をさらに深めるための重要な第一歩となります。

これまで長年にわたり、ユーザーは Earth Engine のデータを BigQuery に移行する作業において、エンコード、中間ストレージ、データのタイプに細心の注意を払う必要がありました。これからは、Earth Engine のデータを BigQuery に転送するための呼び出しが 1 行で済むようになり、移行作業が簡単になります。この新しい「Export.table.toBigQuery()」関数を利用して、次のような新しいフローを簡単に実施できます。

  • Earth Engine データと BigQuery データソースを組み合わせて特定の問題に関するより詳細な情報を把握する

  • BigQuery の高度な分析ツールを使用して Earth Engine データから分析情報を抽出する

  • SQL ユーザーがアクセスしやすい方法で Earth Engine データを共有する

このガイドでは、Earth Engine から BigQuery にデータをエクスポートする手順について、Google の地理空間ツールを使用して、冠水した道路を識別する実例を作成しながら説明します。

例: 冠水道路の検出

異常気象現象は、世界中で壊滅的な影響を与えています。洪水、熱波、干ばつは、多くの犠牲者や家屋、財産の破壊といった多大な人的、経済的な被害をもたらしています。次の例では、Earth Engine の衛星データモザイクと BigQuery の一般公開されている道路データセットの使用方法を示します。両方の環境でデータを処理して、英国での洪水により影響を受けた道路区間を判別します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_30GrphQ.max-1000x1000.png

前提条件

  1. 新しい Google Cloud プロジェクトを作成しBigQuery API と Earth Engine API を有効にします。

  2. Earth Engine へのアクセスを構成します。

  3. BigQuery ワークスペースでデータセットを作成します。この例では「your_dataset」を使用します。

  4. Earth Engine のコードエディタを使用するか、Colab 環境でほぼ同等の Python を使用して同じ手順を実施できます。


この例を実施するには、プロジェクトで請求先アカウントを有効にする必要があります。これにより、Earth Engine のコンピューティング、BigQuery ストレージ、BigQuery のコンピューティング、ネットワーク トラフィックに対する料金が発生します。

Earth Engine で浸水地域を識別する

Earth Engine Data Catalog には Copernicus Sentinel 衛星の合成開口レーダーデータのコレクションが含まれます。この一般公開データセットは、光波が地表からどのように衛星のセンサーにはね返されるかを測定したレーダー画像で構成されています。静止した水域は、電波信号に対して鏡のような働きをします。衛星のレーダー光を散乱させてイメージ センサーに戻すのではなく、反射して遠ざけます。ほとんどの自然地表にはこの性質がないため、画像の静止水域は、周りの地表とは異なり「暗い」斑点(後方散乱値の低いエリア)として示されます。まずは入力データを準備します。対象の地域を選択し、垂直-垂直(「VV」)偏波(垂直偏光の送信、戻される垂直偏光の測定)で画像をフィルタします。

注: Earth Engine の完全なスクリプトは https://code.earthengine.google.com/df33632277672cd9bce4295e26a11bbf から入手可能です。

1. コードエディタを読み込み、対象の地域とフィルタ コレクションを定義します。

lang-py
読み込んでいます...

2. 大雨の前後でペアにした画像を使って、顕著に変化した地域を識別します。2 つの画像の違いから、浸水した地域がわかります。

読み込んでいます...

3. 次に、地表水のデータセットを使用して、持続的な地表水(湖、河川など)を結果から取り除きます。

読み込んでいます...

4. BigQuery で浸水地域データを利用するため、浸水部分のピクセルデータをベクター形式に変換します。

読み込んでいます...

5. 浸水地域を地図に表示します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_oLnIZQC.max-900x900.png
読み込んでいます...

6. ここが重要なポイントです。Earth Engine から BigQuery への新しいコネクタにより、単一の呼び出し「Export.table.toBigQuery()」だけで簡単にエクスポートできます。

読み込んでいます...

7. コードエディタの [Run] ボタンをクリックしてスクリプトを実行すると、[Tasks] タブの [Unsubmitted tasks] セクションにタスクが追加されます(以下を参照)。タスクを開始するには、そのタスク自体の [Run] ボタンをクリックします(以下を参照)。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_hfvE0Gl.max-1500x1500.png

8. タスクが完了したら、[Open in BigQuery] ボタンをクリックして、エクスポートしたテーブルに移動します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_ExMQnrV.max-1000x1000.png

BigQuery で冠水道路区間を確認する

この時点で、浸水のポリゴンデータは BigQuery 内に組み込まれており、ホストされる多くの一般公開データセットと組み合わせて利用できます。OpenStreetMap の一般公開データセット「planet_ways」には道路区間に関する情報が含まれています。これと Earth Engine からエクスポートしたデータを組み合わせます。

  1. データセットから「flood_poly」としてポリゴンを選択します。

  2. その結果を OpenStreetMap データの交差する道路ポリゴンに結合します。

使用するデータセットとテーブルの名前で次のクエリを置き換え、BigQuery UI で実行します。

読み込んでいます...

GeoViz で結果を可視化する

GeoViz で可視化してクエリの結果を確認します。[データを分析] をクリックして、[GeoViz で調べる] を選択します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/5_IYDVx3v.max-2000x2000.png

GeoViz で [Run] をクリックしてシステムにデータを読み込み、表示するフィールドを選択します。冠水した道路区間を表示するには、ジオメトリ列として「road_geometry」を選択します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/6_UhsmCCO.max-1200x1200.png

次のステップ

さらに試したい方には、以下をおすすめします。

今後、この機能が活用されることによって、新たな発見がもたらされ、重要な問題が解決されることを期待しています。地理空間分析は地球規模の課題を解決するうえで鍵となるものだと考えています。この機能はそれを容易にするための一歩です。

今後も関連情報をぜひご覧ください。

- ソフトウェア エンジニア Olga Kalashnikava
デベロッパーリレーションズ エンジニア Michael DeWitt

投稿先