BigQuery GIS を利用してハリケーンの進路をプロットする

このチュートリアルでは BigQuery GIS を紹介します。BigQuery GIS を利用すると、BigQuery の地理空間データを簡単に分析して可視化できます。

目標

このチュートリアルの内容は次のとおりです。

  • BigQuery GIS 関数を使用して、緯度と経度の列を地理上の点に変換する
  • ハリケーンの進路をプロットするクエリを実行する
  • BigQuery Geo Viz で結果を可視化する

費用

このチュートリアルでは、以下を含む、Google Cloud Platform の課金対象となるコンポーネントを使用します。

  • BigQuery

次の料金が発生します。

  • BigQuery 一般公開データセットに含まれるデータのクエリ
    • 毎月、最初の 1 TB は無料です。
    • 定額料金を選択している場合、クエリの使用料は月額料金に含まれます。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Platform プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

  4. 新しいプロジェクトでは BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、以下にアクセスします。 BigQuery API を有効にします。

    APIを有効にする

サンプルデータの探索

このチュートリアルでは、Google Cloud Platform 一般公開データセット プログラムで使用できるデータセットを使用します。一般公開データセットは、BigQuery に保存され、一般に公開されるデータセットです。この一般公開データセットは BigQuery でホストされ、ユーザーがアクセスして独自のアプリケーションに統合できます。Google では、これらのデータセットの保存費用を負担しており、プロジェクトを介してデータへの公開アクセスを提供しています。データで実行したクエリにのみ料金が発生します(毎月 1 TB まで無料。クエリの料金の詳細をご覧ください)。

グローバル ハリケーン トラック(IBTrACS)データセット

グローバル ハリケーン トラック(IBTrACS)

NOAA の気象報告に関する国際ベストトラック アーカイブ(IBTrACS)を基に、世界中で発生した熱帯低気圧(TC)の軌跡に沿って、TC の位置と勢力をまとめています。熱帯低気圧は、北大西洋および北東太平洋海域ではハリケーン、北西太平洋海域では台風、南北インド洋海域ではサイクロン、南西太平洋海域では熱帯低気圧として知られています。

IBTrACS は、TC の予測と報告を担当する国際的な監視センターから報告される、TC に関するデータを収集します(また、いくつかの重要な過去のデータセットも収集します)。現在、IBTrACS には 9 か国のデータが含まれています。これらのシステムを記述するデータには、その軌跡と勢力の最適な予測値が含まれています(したがって、ベストトラックという用語が使われています)。

まず、GCP Console で hurricanes テーブルの詳細を表示し、このデータを確認しましょう。

ハリケーンのスキーマに移動

2017 年に発生したハリケーン マリアの進路を調べる

チュートリアルのこのセクションでは、2017 年のハリケーン シーズンに発生したハリケーン マリアの進路を調べる標準の SQL クエリを実行します。このハリケーンの進路をプロットするには、さまざまな時点でのハリケーンの位置をクエリします。

クエリの詳細

以下の標準的な SQL クエリでハリケーン マリアの進路を調べます。

SELECT
  ST_GeogPoint(longitude, latitude) AS point,
  name,
  iso_time,
  dist2land,
  usa_wind,
  usa_pressure,
  usa_sshs,
  (usa_r34_ne + usa_r34_nw + usa_r34_se + usa_r34_sw)/4 AS radius_34kt,
  (usa_r50_ne + usa_r50_nw + usa_r50_se + usa_r50_sw)/4 AS radius_50kt
FROM
  `bigquery-public-data.noaa_hurricanes.hurricanes`
WHERE
  name LIKE '%MARIA%'
  AND season = '2017'
  AND ST_DWithin(ST_GeogFromText('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'),
    ST_GeogPoint(longitude, latitude), 10)
ORDER BY
  iso_time ASC

このクエリ句は次の処理を行います。

  • SELECT ST_GeogPoint(longitude, latitude) AS point, name, iso_time, dist2land, usa_wind, usa_pressure, usa_sshs, (usa_r34_ne + usa_r34_nw + usa_r34_se + usa_r34_sw)/4 AS radius_34kt, (usa_r50_ne + usa_r50_nw + usa_r50_se + usa_r50_sw)/4 AS radius_50kt
    SELECT 句ですべての嵐の気象データを選択し、ST_GeogPoint 関数を使用して latitude 列と longitude 列の値を GEOGRAPHY 型(地点)に変換します。
  • FROM bigquery-public-data.noaa_hurricanes.hurricanes
    FROM 句で、クエリ対象のテーブル hurricanes を指定します。
  • WHERE name LIKE '%MARIA%' AND season = '2017' AND ST_DWithin(ST_GeogFromText('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'), ST_GeogPoint(longitude, latitude), 10)
    WHERE 句で、2017 年のハリケーン シーズンに発生したハリケーン マリアに対応する大西洋の地点だけのデータをフィルタリングします。
  • ORDER BY iso_time ASC
    ORDER BY 句で、これらの地点を順序付けし、時系列での暴風域の進路を形成します。

クエリを実行する

GCP Console で BigQuery ウェブ UI を使用してクエリを実行するには:

  1. GCP Console に移動します。

    GCP Console に移動する

  2. [クエリエディタ] テキスト領域に、次の標準 SQL クエリを入力します。

    SELECT
      ST_GeogPoint(longitude, latitude) AS point,
      name,
      iso_time,
      dist2land,
      usa_wind,
      usa_pressure,
      usa_sshs,
      (usa_r34_ne + usa_r34_nw + usa_r34_se + usa_r34_sw)/4 AS radius_34kt,
      (usa_r50_ne + usa_r50_nw + usa_r50_se + usa_r50_sw)/4 AS radius_50kt
    FROM
      `bigquery-public-data.noaa_hurricanes.hurricanes`
    WHERE
      name LIKE '%MARIA%'
      AND season = '2017'
      AND ST_DWithin(ST_GeogFromText('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'),
        ST_GeogPoint(longitude, latitude), 10)
    ORDER BY
      iso_time ASC
    
  3. [実行] をクリックします。

    クエリが完了するまでに少し時間がかかります。クエリが完了すると、結果が [クエリ結果] パネルに表示されます。

    ハリケーン マリアのクエリ結果

Geo Viz でクエリ結果を可視化する

次に、BigQuery Geo Viz を使用して結果を可視化します。BigQuery Geo Viz は、Google Maps API を使用して BigQuery の地理空間データを可視化するためのウェブツールです。

Geo Viz を起動して認証する

Geo Viz を使用するには、その前に認証を行い、BigQuery のデータへのアクセス権を付与する必要があります。

Geo Viz を設定するには:

  1. Geo Viz ウェブツールを開きます。

    Geo Viz ウェブツールを開く

  2. ステップ 1 の [Select data] で [Authorize] をクリックします。

    Geo Viz の [Authorize] ボタン

  3. [Choose an account] ダイアログで Google アカウントをクリックします。

    [Choose an account] ダイアログ

  4. アクセス ダイアログで [Allow] をクリックして、Geo Viz に BigQuery データへのアクセスを許可します。

    アクセス ダイアログ

BigQuery GIS データに対して標準 SQL クエリを実行する

Geo Viz を認証してアクセス権を付与したら、次は Geo Viz でクエリを実行します。

クエリを実行するには:

  1. ステップ 1 の [Select data] で [Project ID] フィールドにプロジェクト ID を入力します。

  2. クエリ ウィンドウに次の標準 SQL クエリを入力します。

    SELECT
      ST_GeogPoint(longitude, latitude) AS point,
      name,
      iso_time,
      dist2land,
      usa_wind,
      usa_pressure,
      usa_sshs,
      (usa_r34_ne + usa_r34_nw + usa_r34_se + usa_r34_sw)/4 AS radius_34kt,
      (usa_r50_ne + usa_r50_nw + usa_r50_se + usa_r50_sw)/4 AS radius_50kt
    FROM
      `bigquery-public-data.noaa_hurricanes.hurricanes`
    WHERE
      name LIKE '%MARIA%'
      AND season = '2017'
      AND ST_DWithin(ST_GeogFromText('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'),
        ST_GeogPoint(longitude, latitude), 10)
    ORDER BY
      iso_time ASC
    
  3. [Run] をクリックします。

  4. クエリが完了したら [See results] をクリックします。ステップ 2 の [Define columns] をクリックしても同様に次に進むことができます。

    結果を確認

  5. これでステップ 2 に進んだら、 [Geometry column] で [point] を選択します。ハリケーン マリアの進路に対応する点がプロットされます。

    マップされた結果

可視化の形式設定

[Style] セクションには、カスタマイズ可能なビジュアル スタイルの一覧が表示されます。特定のプロパティは特定のデータタイプのみに適用されます。たとえば、circleRadius は点のみに影響します。

サポートされているスタイル プロパティは以下のとおりです。

  • fillColor - ポリゴンまたは点の塗りつぶしの色です。たとえば、「linear」関数または「interval」関数を使用して、数値をカラー グラデーションにマッピングできます。
  • fillOpacity - ポリゴンまたは点の塗りつぶしの不透明度です。値は 0 から 1 の範囲で指定します。0 は透明で 1 は不透明となります。
  • strokeColor - ポリゴンまたは線のストロークまたはアウトラインの色です。
  • strokeOpacity - ポリゴンまたは線のストロークまたはアウトラインの不透明度です。値は 0 から 1 の範囲で指定します。0 は透明で 1 は不透明となります。
  • strokeWeight - ポリゴンまたは線のストロークまたはアウトラインの幅です。ピクセル単位で指定します。
  • circleRadius - 点を表す円の半径です。ピクセル単位で指定します。たとえば、「linear」関数を使用して数値を点のサイズにマッピングすると、散布図スタイルを作成できます。

各スタイルには、グローバル値(すべての結果に適用される)、データ駆動値(各結果行のデータに応じて異なる方法で適用される)のいずれかを指定できます。データ駆動値の場合、次の機能を使用して表示結果を指定します。

  • function - フィールドの値からスタイル値への計算に使用される関数。
  • identity - 各フィールドのデータ値がスタイル値として使用されます。
  • categorical - ドメインにリストされた各フィールドのデータ値と、範囲内の対応するスタイルを 1 対 1 でマッピングします。
  • interval - 各フィールドのデータ値がドメイン内の最も近い値に丸められ、範囲内の対応するスタイルが適用されます。
  • linear - 各フィールドのデータ値がドメインの値の中で線形補間され、範囲内の対応するスタイルが混ぜ合わされて適用されます。
  • field - データ内の指定されたフィールドがスタイル関数の入力として使用されます。
  • domain - フィールドのサンプル入力値の順序付きリスト。サンプル入力(ドメイン)は、指定された関数に基づいてサンプル出力(範囲)とペアになり、すべての入力(ドメインにリストされていないものも含む)のスタイル値の導出に使用されます。ドメイン内の値は、可視化を行っているフィールドの値と同じ型(テキスト、数値など)にする必要があります。
  • range - スタイルルールのサンプル出力値のリスト。範囲の値は、制御しているスタイル プロパティと同じ型(色または数値)にする必要があります。たとえば、fillColor プロパティの範囲には色のみが含まれるようにします。

マップの形式を設定するには:

  1. 手順 2 の [Add styles] をクリックするか、手順 3 の [Style] をクリックします。

  2. 点の色を変更します。[fillColor] をクリックします。

  3. [fillColor] パネルで以下を設定します。

    1. [Data driven] をクリックします。
    2. [Function] に [linear] を選択します。
    3. [Field] で [usa_wind] を選択します。
    4. [Domain] で最初のボックスに「0」、2 番目のボックスに「150」と入力します。
    5. [Range] で最初のボックスをクリックし、16 進数で「#0006ff」と入力します。2 番目のボックスをクリックし、「#ff0000」と入力します。これで、風速に基づいて点の色が変わります。弱い風の場合は青、強い風の場合は赤です。

      塗りつぶしの色

  4. マップ上で確認します。点の 1 つにカーソルを合わせると、その点の気象データが表示されます。

    点のマッピングの詳細

  5. [fillOpacity] をクリックします。

  6. [Value] フィールドに「.5」と入力します。

    塗りつぶしの透明度

  7. マップ上で確認します。点の塗りつぶし色が半透明になっています。

  8. ハリケーンの半径に基づいて点のサイズを変更します。[circleRadius] をクリックします。

  9. [circleRadius] パネルで以下を設定します。

    1. [Data driven] をクリックします。
    2. [Function] に [linear] を選択します。
    3. [Field] で [radius_50kt] を選択します。
    4. [Domain] で最初のボックスに「0」、2 番目のボックスに「135」と入力します。
    5. [Range] で最初のボックスに「5」、2 番目のボックスに「15」と入力します。

      円の半径

  10. マップ上で確認します。各点の半径がハリケーンの半径に対応するようになりました。

    最終的なマップ

  11. Geo Viz を閉じます。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

  • 作成したプロジェクトを削除する。
  • または、将来の使用のためにプロジェクトを保持する。

プロジェクトを削除する手順は次のとおりです。

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。