この記事は1年以上前の古い記事です。現状に即していない記述の場合があります。あらかじめご了承ください。
ロケタッチの住所正規化APIを使ってコマンドラインから住所を正規化する
nogajun
住所というのは、いろんな風に書くことができます。
たとえば姫路城の住所は姫路市のページには「姫路市本町68番地」と書いてあります。 この書き方では番地の番号が全角で書いてありますが、半角や漢数字で書いたりもできるし「番地」を外すこともできます。 ほかには「xx丁目yy番地zz号」という表現も、「xx丁目yyのzz」と書いたり「xx-yy-zz」と書くこともできます。
というように、表記ゆれがある住所を一定の表記に整えるのが「住所の正規化」ですが、これをなんとかできないかと調べたら、ロケタッチの住所正規化APIを公開しているのを見つけたので使ってみました。
- livedoor Techブログ : 住所正規化APIをロケタッチでリリースしたよ!1: http://blog.livedoor.jp/techblog/archives/67363033.html
- 提供API一覧 | ロケタッチ Developers: http://tou.ch/developer/api_all?uri=geo%2Faddress_normalize
使い方はシンプルで下のような感じでOK。ブラウザにそのまま入力してもJSONが返ってきます。
https://api.loctouch.com/v1/geo/address_normalize?address=[正規化処理したい住所]
curlを使って姫路城内図書館の住所は「姫路市本町68番地258」ですが、番地を「の」に変えて「姫路市本町68の258」で調べるとこんな感じ。
$ curl -s -X GET https://api.loctouch.com/v1/geo/address_normalize?address=姫路市本町68の258
{"is_error":0,"query":"姫路市本町68の258","code":200,"result":{"zip":"6700012","region_id":"28201","normalize":{"number":"68-258","region":"兵庫県姫路市","town":"本町","build":""},"address":"兵庫県姫路市本町68-258"}}
「の」がハイフンで繋がれた形になりました。
ただ、このままだとJSONそのままで使いづらいので、JSONを加工できる「jq」を使って値だけ取り出します。 jqの詳しい使い方は、マニュアルを見てもらうとして正規化された住所だけを取り出すにはこんな感じ。
$ curl -s -X GET https://api.loctouch.com/v1/geo/address_normalize?address=姫路市本町68の258 | jq '.result.address'
"兵庫県姫路市本町68-258"
これで住所を揃えることができますね。