漢字交じりの住所をある一定のルールで揃えたいときありますよね。
そんな時は、ロケタッチの住所正規化APIが便利です。
APIの使い方
address引数の値を利用して、結果がJSONで返ります。
https://api.loctouch.com/v1/geo/address_normalize?address=[正規化処理したい住所]
query | 入力データ |
---|---|
result.address | 正規化後の住所 |
result.resion_id | JSI X 0402 に定められた市区町村コード |
result.zip | 郵便番号 |
result.normalize.region | 都道府県、郡、市区町村 |
result.normalize.number | 住所の数字部分(一部の住所では数字以外も入る) |
result.normalize.build | ビル名部分 |
is_error | 正規化失敗した場合は 1 を返す |
より詳しい情報はこちら
http://tou.ch/developer/api_all?uri=geo%2Faddress_normalize
実装サンプル
今回は手軽に使えるHTTPクライアント、Faradayを使います。
require "faraday"
require "json"
require "pp"
address = "東京都渋谷区渋谷二丁目21番地-1"
res = Faraday.new(:url => "https://api.loctouch.com").get("/v1/geo/address_normalize", {address: address})
body = JSON.parse(res.body)
pp body
実行すると、このように結果を取得できます。
$ ruby address_normalizer.rb
{"is_error"=>0,
"query"=>"東京都渋谷区渋谷二丁目21番地-1",
"code"=>200,
"result"=>
{"zip"=>"1500002",
"region_id"=>"13113",
"normalize"=>
{"number"=>"2-21-1", "region"=>"東京都渋谷区", "town"=>"渋谷", "build"=>""},
"address"=>"東京都渋谷区渋谷2-21-1"}}
便利ですね!
おまけ
次のように、curlコマンドとjqコマンドをセットで利用しても便利です。
$ curl -s "https://api.loctouch.com/v1/geo/address_normalize?address=東京都渋谷区渋谷二丁目21番地-1" | jq '.result'
{
"zip": "1500002",
"region_id": "13113",
"normalize": {
"number": "2-21-1",
"region": "東京都渋谷区",
"town": "渋谷",
"build": ""
},
"address": "東京都渋谷区渋谷2-21-1"
}
$ curl -s "https://api.loctouch.com/v1/geo/address_normalize?address=東京都渋谷区渋谷二丁目21番地-1" | jq '.result.address'
"東京都渋谷区渋谷2-21-1"
併せて読みたい
- livedoor Techブログ : 住所正規化APIをロケタッチでリリースしたよ!
http://blog.livedoor.jp/techblog/archives/67363033.html