AlteryxでのGoogle Maps APIのGeocoding APIを使ったジオコーディングについてご紹介します
AlteryxはRestAPIを利用することが可能です。これを利用することでWEBから様々なデータを入手することが可能です。
今回は、Googleの提供するGoogle Maps Platformで利用可能なGeocoding APIを使って、住所から緯度経度データを取得してみたいと思います(緯度経度から住所を得ることも可能です)。
※Google Maps APIは有料です
Googleのサンプル
Geo Coding APIはGoogle社のサンプル fa-share-square-oですと以下のような形で呼び出すようになっています。
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で実現する場合ですが、ダウンロードツールを使ってデータを取得します。ステップとしては以下のような形になります。
- アクセス用のURLを生成する
- 生成したURLをダウンロードツールでGoogle Maps Platformに投げる
- 取得できた値をパースし、欲しいデータを取り出す
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とパラメータをテキスト入力ツールでそれぞれ持たせ、検索置換ツールで置き換えるような形にしています。
※一気に複数の住所から緯度経度を取得するにはこのワークフローはあまり向いておりません。その場合はマクロ化することで取得が可能です。まずは機能を試す、という観点で作成しています。
2.生成したURLをダウンロードツールを使ってGoogle Maps Platformに投げる
ダウンロードツールの入力に、Step1で作成したURLをインプットすれば、あとはほぼ設定はありません(Google Maps APIは比較的扱いが簡単なAPIです)。
なお、ネットワークへのデータのアップロードになりますので、大量のデータを送信する場合は注意して頂ければと思います(スロットルツールなどが利用可能です)。
3.取得できた値をパースし、欲しいデータを取り出す
APIからはJSON形式で取得できるので、サンプルにあったようなデータが取得されています。
JSON形式は、[開発者]カテゴリの「JSONパース」ツールで簡単にパースできます。
あとはここから緯度経度情報を取り出すだけですので、基本的なETL処理を行えばよいだけです。
緯度経度から住所を取得したい
緯度経度から住所を取得する場合は、以下のようなサンプルとなります。
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
住所から取得していた時は、「address=」で記載していたところが、「latlng=」に変わるだけです。
サンプルワークフローダウンロード
GeocodingAPI_SampleWF fa-download
サンプルワークフローを利用するには、テキスト入力ツールのパラメータの部分にAPI Keyを入力する必要があります。API Keyの入手方法は、インターネットで検索願います。
注意事項
- Google社の都合によりAPI仕様が変わることがありますので、ご了承ください(2020年7月頭時点での情報に基づいています)
参考
- Google Maps API > Geo Coding API > Get Started fa-share-square-o
- Google Maps API > Geo Coding API > Intro fa-share-square-o