このチュートリアルでは、地理空間分析について紹介します。地理空間分析を使用すると、BigQuery で地理空間データの分析と可視化を簡単に行うことができます。
目標
このチュートリアルの内容は次のとおりです。
- 地理空間分析関数を使用して、緯度と経度の列を地理上の点に変換する
- ハリケーンの進路をプロットするクエリを実行する
- BigQuery Geo Viz で結果を可視化する
料金
BigQuery は有料のプロダクトです。このチュートリアルを行うと、BigQuery の使用料金が発生します。BigQuery では、特定の上限まで無料でリソースを使用できます。詳細については、BigQuery の無料のオペレーションと無料枠をご覧ください。
準備
このチュートリアルを始める前に、Google Cloud Console を使用して、プロジェクトを作成または選択します。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、
Enable the BigQuery API.
にアクセスします。 - (省略可)プロジェクトに対する課金を有効にします。課金を有効にしない場合や、クレジット カードを指定しない場合でも、このドキュメントの手順は行えます。BigQuery には、この手順を実施するためのサンドボックスが用意されています。詳細については、BigQuery サ2ンドボックスを有効にするをご覧ください。
サンプルデータの探索
このチュートリアルでは、Google Cloud 一般公開データセット プログラムを通じて提供されているデータセットを使用します。一般公開データセットは、BigQuery に保存され、一般に公開されるデータセットです。この一般公開データセットは BigQuery でホストされ、ユーザーがアクセスして独自のアプリケーションに統合できます。Google では、これらのデータセットの保存費用を負担しており、プロジェクトを介してデータへの公開アクセスを提供しています。データで実行したクエリにのみ料金が発生します(毎月 1 TB まで無料。クエリの料金の詳細をご覧ください)。
グローバル ハリケーン トラック(IBTrACS)データセット
グローバル ハリケーン トラック(IBTrACS)データセット
NOAA の気象報告に関する国際ベストトラック アーカイブ(IBTrACS)を基に、世界中で発生した熱帯低気圧(TC)の軌跡に沿って、TC の位置と勢力をまとめています。熱帯低気圧は、北大西洋および北東太平洋海域ではハリケーン、北西太平洋海域では台風、南北インド洋海域ではサイクロン、南西太平洋海域では熱帯低気圧として知られています。
IBTrACS は、TC の予測と報告を担当する国際的な監視センターから報告される、TC に関するデータを収集します(また、いくつかの重要な過去のデータセットも収集します)。現在、IBTrACS には 9 か国のデータが含まれています。これらのシステムを記述するデータには、その軌跡と勢力の最適な予測値が含まれています(したがって、ベストトラックという用語が使われています)。
まず、Google Cloud コンソールで hurricanes
テーブルの詳細を表示し、このデータを確認しましょう。
2017 年に発生したハリケーン マリアの進路の調査
チュートリアルのこのセクションでは、2017 年のハリケーン シーズンに発生したハリケーン マリアの進路を調べる Google 標準 SQL クエリを実行します。このハリケーンの進路をプロットするには、さまざまな時点でのハリケーンの位置をクエリします。
クエリの詳細
以下の Google 標準 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
句で、これらの地点を順序付けし、時系列での暴風域の進路を形成します。
クエリを実行する
Google Cloud コンソール を使用してクエリを実行するには:
Google Cloud Console の [BigQuery] ページに移動します。
[クエリエディタ] テキスト領域に、次の Google 標準 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
[実行] をクリックします。
クエリが完了するまでに少し時間がかかります。クエリが完了すると、結果が [クエリ結果] パネルに表示されます。
Geo Viz でのクエリ結果の可視化
次に、BigQuery Geo Viz を使用して結果を可視化します。BigQuery Geo Viz は、Google Maps API を使用して BigQuery の地理空間データを可視化するためのウェブツールです。
Geo Viz を起動して認証する
Geo Viz を使用するには、その前に認証を行い、BigQuery のデータへのアクセス権を付与する必要があります。
Geo Viz を設定するには:
Geo Viz ウェブツールを開きます。
手順 1 の [Select data] で [Authorize] をクリックします。
[Choose an account] ダイアログで Google アカウントをクリックします。
アクセス ダイアログで [Allow] をクリックして、Geo Viz に BigQuery データへのアクセスを許可します。
Geo Viz でクエリを実行する
認証してアクセス権を付与したら、次に Geo Viz でクエリを実行します。
クエリを実行するには:
ステップ 1 の [Select data] で [Project ID] フィールドにプロジェクト ID を入力します。
クエリ ウィンドウに次の Google 標準 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
[実行] をクリックします。
クエリが完了したら [Show results] をクリックします。手順 2 の [Data] をクリックしても同様に次に進むことができます。
これで手順 2 に移動します。 [Geometry column] で [point] を選択します。ハリケーン マリアの進路に対応する点がプロットされます。
Geo Viz での可視化のフォーマット
[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
プロパティの範囲には色のみが含まれるようにします。
マップの形式を設定するには:
手順 2 の [Add styles] をクリックするか、手順 3 の [Style] をクリックします。
点の色を変更します。[fillColor] をクリックします。
[fillColor] パネルで以下を設定します。
- [Data driven] をクリックします。
- [Function] で [linear] を選択します。
- [Field] で [
usa_wind
] を選択します。 - [Domain] で最初のボックスに「
0
」、2 番目のボックスに「150
」と入力します。 [Range] で最初のボックスをクリックし、16 進数で「
#0006ff
」と入力します。2 番目のボックスをクリックし、「#ff0000
」と入力します。これで、風速に基づいて点の色が変わります。弱い風の場合は青、強い風の場合は赤です。
マップ上で確認します。点の 1 つにカーソルを合わせると、その点の気象データが表示されます。
[fillOpacity] をクリックします。
[Value] に「.5」と入力します。
マップ上で確認します。点の塗りつぶし色が半透明になっています。
ハリケーンの半径に基づいて点のサイズを変更します。[circleRadius] をクリックします。
[circleRadius] パネルで以下を設定します。
- [Data driven] をクリックします。
- [Function] で [linear] を選択します。
- [Field] で [
radius_50kt
] を選択します。 - [Domain] で最初のボックスに「
0
」、2 番目のボックスに「135
」と入力します。 [Range] で最初のボックスに「
5
」、2 番目のボックスに「135000
」と入力します。
マップ上で確認します。各点の半径がハリケーンの半径に対応するようになりました。
Geo Viz を閉じます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
- 作成したプロジェクトを削除する。
- または、将来の使用のためにプロジェクトを保持する。
プロジェクトを削除するには:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
次のステップ
- 地理空間分析のオプションを可視化する方法については、地理空間データの可視化をご覧ください。
- 地理空間データを操作するには、地理空間データの操作をご覧ください。
- 地理空間分析で使用できる地理関数の詳細については、Google 標準 SQL の地理関数をご覧ください。