API経由で住所データをジオコーディングしてみる #Alteryx #08 | Alteryx Advent Calendar 2016

API経由で住所データをジオコーディングしてみる #Alteryx #08 | Alteryx Advent Calendar 2016 | Tableau-id Press -タブロイド-
tableauid20161208-1

『Alteryx Advent Calendar 2016』スポット参戦シリーズ第二弾です。

Alteryx Advent Calendar 2016 | シリーズ | Developers.IO

Alteryx Advent Calendar 2016 – Qiita

 

08日目のエントリとしてAlteryxを用いてYahooのAPIと連携し、ジオコーディングを行ってみます。

 

まず、YahooのAPIと連携するためには、Yahoo! デベロッパーネットワークでアプリケーションIDを取得する必要があります。

さすがはYahoo! Japanさん。分かりやすいヘルプがあるので、こちらのページを参考に簡単に取得可能です。

Yahoo!デベロッパーネットワークヘルプ

なお、ジオコーディングにはYahoo! ジオコーダAPIを用います。

Yahoo! ジオコーダAPI

 

今回、ジオコーディングの対象住所には、『住所一覧』でググったら上位に出てきた大阪府の公立小学校のデータを用いることにしました。

tableauid20161208-1

エクセルを開くとこんな感じです。データ取得上は不要となるタイトルがついています・・・。

tableauid20161208-2

しかも・・・実際には後で気づきましたが、下のほうにも別のテーブルがありました。

tableauid20161208-3

APIでジオコーディングする前に、これらの不要なデータをAlteryxで処理する必要がありそうです。

 

さて、実際のモジュールですが、結論から言うと最終形はこんな感じです。

tableauid20161208-4

意外と小さなモジュールで済みました。

 

上半分と下半分に分けて細かく見ていきます。

tableauid20161208-4-18

最初に元データとなるエクセルファイルを読み込み、不要なデータを順に取り除いています。
二連続となる[Filter]ツールでは、もう一つのテーブルとのカラム名の列と、テーブルとテーブルの間の空白をカットするために用いています。
右端にある[Formula]ツールで、APIに投げ込むURLデータを生成しています。

続いて下半分です。

tableauid20161208-4-19

API経由でのデータダウンロードに始まり、JSONデータを分解、縦持ちデータを横持ちに変更します。
次にJSON形式で取得した緯度経度はカンマ区切りで一つのカラムに入ってしまっているため、[Formula]ツールで切り分けます。

YahooのジオコーダAPIは番地レベルで厳密にヒットしないと変換されず、Nullで返ってきます。
今回は995レコード中27レコードがはじかれてしまいました。
それらがすぐに判別できるよう変換判定のフラグを立た上で、データのソートまでこのフローに組み込んでいます。

なお、今回は大阪府が発表している公共施設のデータなのでヒット率が高かったのですが、個人の住所データや手入力の住所情報等の場合、エラーが多く出力されることになります。
GoogleのAPIだと厳密にヒットしなくても近しい住所データにマッチングしたり、複数候補を挙げてくれたりするのですが、GoogleはAPIの制限が厳しく、無償で大量のデータを処理することも難しいため、ここではYahooのAPIを使用しました。

さて、今回はExcelでアウトプットしてみましたが、例によってTableauにつなげて可視化してみるとこんな感じです。

tableauid20161208-4-20

市区町村などのカラムがないので、ワイルドカード照合で絞り込みが効果的です。
ちなみに矢印のついている大阪市立友渕小学校は我が母校です。

 

明日9日目は『住所データを都道府県と市区郡町村に分割してみる』を連続投稿予定です。

明日9日目は『ポイントデータ(緯度経度)データをポリゴンデータに紐付けてみる』です。※2016/12/08 修正

 

T.Fuji