Google Maps
地点間の道順を計算
概要
このブロックは、指定された地点間(例:始点「東京駅」・経由地点「横浜中華街」終点「鎌倉大仏」)の最適な道順を計算します。道順の計算結果は、データとして取得可能ですが、Googleマップを使った視覚的な確認もできます。
このブロックを使うと、以下のようなさまざまな要求に沿った最適な道順が取得できます。
- 自動車や徒歩などのさまざまな移動手段での道順が知りたい
- 有料道路や高速道路を回避した道順が知りたい
- 過去の交通渋滞と現在の交通状況に基づいた移動時間が知りたい
本ブロックは、GoogleのDirections APIを利用しています。このためセルフサービスプランの場合は、利用するGCPプロジェクトにおいて、Directions APIを有効化しておく必要があります。
このブロックは、Google Directions APIを利用しているため、他のGoogle Cloud Platform各種APIの料金に加えて、その利用量に応じた料金が別途発生します(従量課金制)。
料金について詳しくは、Directions API の使用量と請求額を参照願います。移動手段に自動車を指定する、11地点以上を指定する、地点の指定にside_of_road
もしくはheading
の修飾子を指定した場合は、advancedの扱いになります。それ以外の場合は、basicの扱いになります。
※MAGELLAN BLOCKSは利用する機能に合わせて、データ保存先(Google Cloud StorageやBigQueryなど)の操作でGoogle Cloud Platformの各種APIを、機械学習の各機能でAI Platformの各種APIを利用しており、これらについても利用量に応じた料金が発生します。
プロパティ
プロパティ名 | 説明 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ブロック名 | ブロックの名前を指定します。ブロックに表示されます。 | ||||||||||||||||||||
GCP APIキー |
このブロックで使用するGCP APIキーを指定します。 GCP APIキーは、次の手順で作成します。
|
||||||||||||||||||||
始点・終点の場所が格納された変数 |
道順を計算したい始点・経由地点・終点のデータ(Place ID・住所・緯度経度)が格納された変数を指定します。地点は最大25地点まで指定できます。 変数には、以下いずれかの形式でデータを格納してください。
始点・経由地点・終点のデータは、以下のいずれかで指定します。
始点・経由地点・終点には、場所修飾子が使用できます。
住所や緯度経度を使用するよりも、Place IDの使用をおすすめします。住所や緯度経度を使用すると、常にそれらが示す座標に最も近い道路への位置に補正されます。 |
||||||||||||||||||||
道順を格納する変数 |
地点間の道順を計算した結果を格納する変数を指定します。 この変数には、以下に示すキーを含んだオブジェクトが格納されます。
以下は、出力されたオブジェクトの例です。 [ { "distance": 18284, "duration": 1575, "duration_in_traffic": 1575, "origin_address": "日本、〒131-0045東京都墨田区押上1丁目1−2", "origin_location": "35.7108481,139.8129626", "destination_address": "日本、〒279-0031千葉県浦安市舞浜1−1", "destination_location": "35.6361065,139.8786193", "url": "https://www.google.com/maps/dir/?api=1&origin=...&destination=...&travelmode=driving" } ] |
||||||||||||||||||||
移動手段 |
どの移動手段を使って道順を計算するかを指定します。指定できる移動手段は、以下のいずれかです。
日本国内の道順を計算する場合は、自動車と徒歩のみが有効です。 |
||||||||||||||||||||
ブロックメモ | ブロックに対するコメントを指定します。 | ||||||||||||||||||||
回避したい道順 |
回避したい道順を以下から選択します。複数選択できます。
|
||||||||||||||||||||
希望する到着時刻 |
希望する到着時刻を、 |
||||||||||||||||||||
希望する出発時刻 |
希望する出発時刻を、 |
||||||||||||||||||||
所要時間を計算時の前提条件 |
所要時間を計算するときの前提条件を選択します。選択できる条件は、以下のいずれかです。
|
||||||||||||||||||||
結果の言語 |
結果を返す言語を指定します。 サポートしている言語のリストは、Google Maps Platform FAQを参照してください。 |
||||||||||||||||||||
エラー時の繰り返し回数 |
地点間の道順計算でエラーが発生した場合のやり直し回数を0以上の整数で指定します。 |
||||||||||||||||||||
繰り返し間隔 |
|
使用例
ここでは、「地点間の道順を計算」ブロックを使って、BigQuery上の始点・終点データから地点間の道順を求めるケースを取り上げます。
前提として、BigQuery上の始点・終点データは、以下のように定義されているものとします。
starting_point | ending_point |
---|---|
東京駅 | 東京スカイツリー |
東京駅 | 東京タワー |
カラム名 | タイプ | モード |
---|---|---|
starting_point | STRING | NULLABLE |
ending_point | STRING | NULLABLE |
GCPプロジェクト名 | my-project |
---|---|
データセット名 | example |
テーブル名 | point2point |
カラム | 内容 |
---|---|
starting_point | 求めたい地点間の道順の始点 |
ending_point | 求めたい地点間の道順の終点 |
「地点間の道順を計算」ブロックを使用する場合は、「オブジェクトの配列形式」のデータを変数で入力する必要があります。
その他に「配列形式」および「配列の配列形式」のデータでも構いませんが、MAGELLAN BLOCKSで一般的な形式である「オブジェクトの配列形式」をここでは扱います。
「オブジェクトの配列形式」とは、下図のような配列の各要素がオブジェクトであるデータ形式のことです。
しかし、今回のサンプルではBigQuery上のデータの形式が異なるため、何らかの方法でオブジェクトの配列形式に変換したデータを変数に格納する必要があります。
これには、「クエリーの実行」ブロックが役立ちます。なぜなら、「クエリーの実行」ブロックのクエリー結果は、オブジェクトの配列形式で変数に格納できるからです。
オブジェクトの配列形式のデータを変数で入力する必要があるブロックは、「クエリーの実行」ブロックと組み合わせて使うと便利です。
今回のケースでは、以下のクエリー文で「クエリーの実行」ブロックを実行すると、「地点間の道順を計算」ブロックの入力に必要なデータ形式へ変換できます。
SELECT starting_point AS origin, ending_point AS destination FROM example.point2point
上記クエリー文で、「クエリーの実行」ブロックを実行すると、下図のようなオブジェクトの配列形式のデータが、変数へ格納されます。
このように、「クエリーの実行」を使うと、BigQuery上のデータを簡単に変換・加工できます。
例えば、以下のように「クエリーの実行」ブロックと「地点間の道順を計算」ブロックをつなげると、BigQuery上の始点・終点データから地点間の道順を簡単に求められます。
結果は、下図のようなオブジェクトの配列形式で変数に格納されます。
変数に格納されるデータの形式は、オブジェクトの配列であるため、この形式で入力可能なブロックと組み合わせると便利です。例えば、「変数からテーブルへロード」ブロックは、オブジェクトの配列形式のデータを変数で入力し、BigQueryテーブルにそのデータを格納してくれます。
ということで、以下のように「地点間の道順を計算」ブロックに「変数からテーブルへロード」ブロックを繋げると、始点・終点データから地点間の道順を求めたデータをBigQueryテーブルへ簡単に格納できます。
このフローを実行すると、以下のような形でBigQueryテーブルにデータが格納されます。
distance | duration | duration_in_traffic | origin_address | origin_location | destination_address | destination_location | url |
---|---|---|---|---|---|---|---|
8679 | 1068 | 1068 | 日本、〒100-0005 東京都千代田区丸の内1丁目9 東京駅 | 35.6774972,139.7660974 | 日本、〒131-0045 東京都墨田区押上1丁目1−2 | 35.7108481,139.8129626 | https://www.google.com/maps/dir/?api=1&origin=35.6774972%2C139.7660974&destination=35.7108481%2C139.8129626&travelmode=driving |
3018 | 550 | 550 | 日本、〒100-0005 東京都千代田区丸の内1丁目9 東京駅 | 35.6780551,139.7628529 | 日本、〒105-0011 東京都港区芝公園4丁目2−8 | 35.6585951,139.7462833 | https://www.google.com/maps/dir/?api=1&origin=35.6780551%2C139.7628529&destination=35.6585951%2C139.7462833&travelmode=driving |