ブロックリファレンス

BLOCKS Reference

Google Maps

経緯度のタイムゾーンを取得【アルファ版】

このブロックはアルファ版です。利用にあたっては利用申請が必要です。提供している機能は完全でない場合があり、下位互換性のない変更を加える可能性もあります。このため、テスト環境での使用に適しています。利用申請/機能改善の要望/不具合の報告などは、MAGELLAN BLOCKSのお問い合わせ機能からお願いします。

概要

このブロックは、Google Maps PlatformのTime Zone APIを使って、特定の経緯度のタイムゾーンを取得します。

経緯度のタイムゾーンを取得ブロックの概念図

(画像をクリックすると拡大表示されます。)

セルフサービスプランの場合は、利用するGCPプロジェクトにおいて、Time Zone APIを有効化する必要があります。

このブロックは、Google Maps PlatformのGeocoding APIを利用しているため、その利用量に応じた料金が別途発生します(従量課金制)。料金について詳しくは、Google Maps Platform料金表のプレイス- Time Zone APIの項を参照願います。

MAGELLAN BLOCKSでは、利用する機能に合わせて、さまざまなAPIを利用しています。これらについても利用量に応じた料金が発生します。

  • データ保存先(Google Cloud StorageやBigQueryなど)の操作:Google Cloud PlatformのAPI
  • 機械学習の各機能:AI PlatformのAPI

プロパティ

プロパティ名 説明
ブロック名

編集パネルに配置した当該ブロックの表示名が変更できます。

ブロックリストパネル中のブロック名は変更されません。

GCP APIキー

このブロックで利用するGoogle Maps Platform APIに必要なGCPのAPIキーを指定します。

GCP APIキーは、次の手順で作成します。

  1. Google Cloud Platformコンソールへ移動します。
  2. プロジェクトを選択します。
  3. 画面上部にある[認証情報を作成]ボタンをクリックします。
  4. APIキーを選択します。
経緯度が格納された変数

タイムゾーンを取得したい経緯度が格納された変数を指定します。

変数値は、オブジェクトもしくはオブジェクトの配列で準備します。オブジェクトの形式は、以下の通りです。

{
  "location":経緯度
}
キー
location 文字列

緯度・経度の順で、カンマ区切りで指定します(例:"35.710063,139.8107")。

以下は、オブジェクトをオブジェクト生成ブロックで指定した例です。

オブジェクトをオブジェクト生成ブロックで指定する例

(画像をクリックすると拡大表示されます。)

このケースの場合は、このプロパティに_を指定します。

オブジェクトの配列の場合は、以下のように指定します。

オブジェクトの配列をオブジェクト生成ブロックで指定する例

(画像をクリックすると拡大表示されます。)

このケースの場合は、このプロパティに_.locationsを指定します。

結果を格納する変数

取得したタイムゾーンが格納される変数を指定します。

この変数には、以下に示すキーを含んだオブジェクトの配列が格納されます。

キー 説明
offset

指定された経緯度のUTCからのオフセットです(単位:秒)。

timezone

「Asia/Tokyo」や「America/Los_Angeles」などのタイムゾーンIDを含む文字列です。 このIDは、Unicode CLDR Projectによって定義され、ファイルtimezone.xmlで参照できます。タイムゾーンに複数のIDがある場合、正規のIDが返されます。

経緯度が複数指定された場合は、指定された順序で各タイムゾーン情報が格納されます。

以下は、格納されたオブジェクトの配列の例です。

[
  {
    "offset": 32400,
    "timezone": "Asia/Tokyo"
  },
  {
    "offset": 3600,
    "timezone": "Europe/Paris"
  }
]
ブロックメモ このブロックに関するメモが記載できます。このブロックの処理に影響しません。

使用例

ここでは、「経緯度のタイムゾーンを取得【アルファ版】」ブロックを使って、BigQuery上の経緯度データからタイムゾーンを求めるケースを取り上げます。

前提として、BigQuery上の経緯度データは、以下のように定義されているものとします。

経緯度データ:
id longitude latitude
P001 135.785046 34.994856
P002 139.796655 35.714765
P003 135.772672 34.96714
P004 135.729243 35.03937
P005 139.745433 35.658581
P006 135.432338 34.665442
P007 139.8107 35.710063
P008 139.646091 35.443446
P009 139.705177 35.671039
P010 135.501297 34.668723
スキーマ情報:
カラム名 タイプ モード
id STRING NULLABLE
longitude FLOAT NULLABLE
latitude FLOAT NULLABLE
テーブル情報:
GCPプロジェクト名 my-project
データセット名 example
テーブル名 geocode
データ概要:
カラム 内容
id 経緯度を特定するユニークな文字列
longitude 経度
latitude 緯度

「経緯度のタイムゾーンを取得【アルファ版】」ブロックを使用する場合は、「オブジェクトの配列形式」のデータを変数で入力する必要があります。

オブジェクトの配列形式」とは、下図のような配列の各要素がオブジェクトであるデータ形式のことです。

しかし、今回のサンプルではBigQuery上のデータの形式が異なるため、何らかの方法でオブジェクトの配列形式に変換したデータを変数に格納する必要があります。

これには、「クエリーの実行」ブロックが役立ちます。なぜなら、「クエリーの実行」ブロックのクエリー結果は、オブジェクトの配列形式で変数に格納できるからです。

infoオブジェクトの配列形式のデータを変数で入力する必要があるブロックは、「クエリーの実行」ブロックと組み合わせて使うと便利です。

今回のケースでは、以下のクエリー文で「クエリーの実行」ブロックを実行すると、「経緯度のタイムゾーンを取得【アルファ版】」ブロックの入力に必要なデータ形式へ変換できます。

SELECT
  CONCAT(
    CAST(latitude AS STRING),
    ',',
    CAST(longitude AS STRING)
  ) AS location
FROM
  example.geocode
LIMIT
  10

上記クエリー文で、「クエリーの実行」ブロックを実行すると、下図のようなオブジェクトの配列形式のデータが、変数へ格納されます。

このように、「クエリーの実行」を使うと、BigQuery上のデータを簡単に変換・加工できます。

例えば、以下のように「クエリーの実行」ブロックと「経緯度のタイムゾーンを取得【アルファ版】」ブロックをつなげると、BigQuery上の経緯度のデータを、簡単に住所に変換できます。

結果は、下図のようなオブジェクトの配列形式で変数に格納されます。

変数に格納されるデータの形式は、オブジェクトの配列であるため、この形式で入力可能なブロックと組み合わせると便利です。例えば、「変数からテーブルへロード」ブロックは、オブジェクトの配列形式のデータを変数で入力し、BigQueryテーブルにそのデータを格納してくれます。

ということで、以下のように「経緯度のタイムゾーンを取得【アルファ版】」ブロックに「変数からテーブルへロード」ブロックを繋げると、経緯度からタイムゾーンへ変換したデータをBigQueryテーブルへ簡単に格納できます。

このフローを実行すると、以下のような形でBigQueryテーブルにデータが格納されます。

offset timezone
32400 Asia/Tokyo
32400 Asia/Tokyo
32400 Asia/Tokyo
32400 Asia/Tokyo
32400 Asia/Tokyo
32400 Asia/Tokyo
32400 Asia/Tokyo
32400 Asia/Tokyo
32400 Asia/Tokyo
32400 Asia/Tokyo

この情報は役に立ちましたか?