【AlteryxTips】Google Maps APIを使ったジオコーディングの方法(Geocoding API)

AlteryxでのGoogle Maps APIのGeocoding APIを使ったジオコーディングについてご紹介します

 

AlteryxはRestAPIを利用することが可能です。これを利用することでWEBから様々なデータを入手することが可能です。

今回は、Googleの提供するGoogle Maps Platformで利用可能なGeocoding APIを使って、住所から緯度経度データを取得してみたいと思います(緯度経度から住所を得ることも可能です)。

※Google Maps APIは有料です

 

Googleのサンプル

Geo Coding APIはGoogle社のサンプル ですと以下のような形で呼び出すようになっています。

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

このうち、「YOUR_API_KEY」という部分は、各自で入手したAPI呼び出し用のKeyを入力する必要があります。

※API KeyはGoogle社との契約が必要です(取得方法については、インターネットで検索願います)

 

「address=」よりあとの部分は、緯度経度を取得したい住所を入力する必要があります。

上のサンプルURLの「YOUR_API_KEY」を有効なAPIキーに置き換えたものをブラウザにペタっと貼り付けますと、以下のようなJSONフォーマットで戻り値がブラウザ上に表示されます。

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Amphitheatre Parkway",
               "short_name" : "Amphitheatre Pkwy",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Mountain View",
               "short_name" : "Mountain View",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Clara County",
               "short_name" : "Santa Clara County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "94043",
               "short_name" : "94043",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043 アメリカ合衆国",
         "geometry" : {
            "location" : {
               "lat" : 37.4220579,
               "lng" : -122.0840897
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.42340688029149,
                  "lng" : -122.0827407197085
               },
               "southwest" : {
                  "lat" : 37.4207089197085,
                  "lng" : -122.0854386802915
               }
            }
         },
         "place_id" : "ChIJtYuu0V25j4ARwu5e4wwRYgE",
         "plus_code" : {
            "compound_code" : "CWC8+R9 アメリカ合衆国 カリフォルニア州 マウンテンビュー",
            "global_code" : "849VCWC8+R9"
         },
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

 

このJSON形式のデータですが、各タグはDevelopers Guideを読めば何を示しているかわかりますが、例えば、「formatted_address」という部分を見てみますと、入力した住所に対して整形された住所が取得されています。

"formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043 アメリカ合衆国"

 

また、「Geometry」の「Location」を見ると、緯度経度が取得できているのがわかります。

         "geometry" : {
            "location" : {
               "lat" : 37.4220579,
               "lng" : -122.0840897
            },

 

このようにして戻り値から欲しいデータを取得すれば、完了ということになります。

この一連の流れが、Geocoding APIを使うときの流れです。

 

Alteryxで実現する

Alteryxで実現する場合ですが、ダウンロードツールを使ってデータを取得します。ステップとしては以下のような形になります。

  1. アクセス用のURLを生成する
  2. 生成したURLをダウンロードツールでGoogle Maps Platformに投げる
  3. 取得できた値をパースし、欲しいデータを取り出す

 

1.アクセス用のURLを生成する

ベースとなるURLは以下のようにしたいと思います。先程のGoogle社のサンプルをベースに、実際の値を置き換える部分は鉤括弧で囲ったパラメーター名としています(例:[YOUR_API_KEY]等)。

今回は、住所とAPIキーが可変パラメータとなり、それぞれ[ADDRESS]、[YOUR_API_KEY]としています。

 

https://maps.googleapis.com/maps/api/geocode/json?address=[ADDRESS]&language=Ja&key=[YOUR_API_KEY]

※Google社のサンプルにはありませんが、languageオプションをjaで設定することをおすすめします(Alteryxではjaオプションをつけないと英語で結果が帰ってきてしまいます)

 

上のURLに対して各パラメータを置換し、最終的なURLを作成する形となります。

例えば、これを以下のようなワークフローで最終的なURLを生成することができます。

URL作成

流れとしては、URLとパラメータをテキスト入力ツールでそれぞれ持たせ、検索置換ツールで置き換えるような形にしています。

※一気に複数の住所から緯度経度を取得するにはこのワークフローはあまり向いておりません。その場合はマクロ化することで取得が可能です。まずは機能を試す、という観点で作成しています。

 

2.生成したURLをダウンロードツールを使ってGoogle Maps Platformに投げる

ダウンロードツールの入力に、Step1で作成したURLをインプットすれば、あとはほぼ設定はありません(Google Maps APIは比較的扱いが簡単なAPIです)。

ダウンロードツール設定

なお、ネットワークへのデータのアップロードになりますので、大量のデータを送信する場合は注意して頂ければと思います(スロットルツールなどが利用可能です)。

 

3.取得できた値をパースし、欲しいデータを取り出す

APIからはJSON形式で取得できるので、サンプルにあったようなデータが取得されています。

JSON形式は、[開発者]カテゴリの「JSONパース」ツールで簡単にパースできます。

JSONパース

あとはここから緯度経度情報を取り出すだけですので、基本的なETL処理を行えばよいだけです。

SampleWF

緯度経度から住所を取得したい

緯度経度から住所を取得する場合は、以下のようなサンプルとなります。

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY

 

住所から取得していた時は、「address=」で記載していたところが、「latlng=」に変わるだけです。

 

サンプルワークフローダウンロード

GeocodingAPI_SampleWF

サンプルワークフローを利用するには、テキスト入力ツールのパラメータの部分にAPI Keyを入力する必要があります。API Keyの入手方法は、インターネットで検索願います。

APIキー入力

注意事項

  • Google社の都合によりAPI仕様が変わることがありますので、ご了承ください(2020年7月頭時点での情報に基づいています)

 

参考

 

Alteryxの導入はぜひKCMEで!

セルフサービスデータ分析ツール「Alteryx」は4週間無償トライアルが可能です。

製品に対する操作方法、技術的な質問などは導入前・導入後に関わらずメールにてお答えします。また、Alteryxを用いた環境構築、開発、ヘルプデスク対応、ハンズオン、トレーニング、ワークフロー作成なども承りますので、お気軽にご相談ください。

おすすめの記事