(つづき)
> >京都や帯広のような特殊な住所表記
> 京都や札幌、帯広等の交差点呼び名の住所表記は全滅ですね。しかし
> なかにはうまくいくのもあるから不思議です。
以前から話題に出ている㈱ジャスミンソフト社の「住所正規化コンバータ」ですが、デモで試してみると特殊な住所表記も「ある程度」の精度で正規化してい
ます。
[KBS京都]
京都府京都市上京区烏丸通一条下る龍前町600-1
→ GoogleGeo:602エラー | 住所正規化コンバータ:号レベル
住所正規化コンバータ:
http://www.addressmatch.jp/
先ほどの大字・小字の件もそうですが、住所の正規化を行った上で
① 住所をそのままジオコーディング
②③ 住所に大字(小字)を付け足してジオコーディング
④⑤ 住所に大字(小字)を消してジオコーディング
このうち1番高い精度のジオコーディング情報を負荷する位じゃないと、正確なジオコーディングを得られないのかもしれません。
ここまでやるとなると住所の正規化は必須でしょうし、それなりの費用も覚悟しないとダメでしょう。(私には無理です)
> 水をさすつもりはありませんが、たとえ膨大なデータベースを用意したと
> しても、住所表記の正規化は超困難だと予想されます。
以前YONさんにもお話ししましたが(エクセル表からGoogleMap用のKMLファイルを作成する)
入力済の住所データをジオコーディング(マッピング)していく上で、「入力のゆれ」の問題はいつまでもついてくると思います。
住所データが正規化されていればさほど問題ありませんが、1フィールドに住所も番地も号もマンション・アパート名もごちゃ混ぜに入ってる…なんてことも
あります。
このようなデータの場合、大字・小字の問題や住所自体の「入力のゆれ」はどうしようもないと割り切るしかありません。
ただ、正しい住所が入力されていても、丁目以降の表記方法によってジオコーディングのエラーが出るのはできるだけ避けたいと思った次第です。
丁目 - 番地 - 号 - ビル・マンション・アパート棟番号・記号 - 階数 - 部屋番号
上記の形への丁目以降の正規化=文字列の置換と考えてますので、流れだけ
[仮データ]
東久留米市南町三丁目の10ー5号 ミナミハイツC 3棟 2階 201号室 → 602エラー
①英数字を全て半角・大文字にする
②"の"や長音をハイフンに置換: \d+(ー|ー|の|ノ|ノ)\d+
③"丁目"をハイフンに置換 : (\d+|一|二|三| ~ |四十一)(丁目|丁)(-|\d+)
④"番地"をハイフンに置換 : \d+(番地|番)(\d+|-|$)
⑤"号"をハイフンに置換
⑥アパート・マンション名をハイフンに置換
⑦階数がある場合 半角英数字 + "F" に置換
⑧"号室""棟"をハイフンに置換
⑨半角英字と半角数字を分割し間にハイフンを追加 : [A-Z](\d+|$)
⑩ハイフンのダブり・最終文字が半角英数字で終わるようにする・スペースの削除
このような流れで 東久留米市南町3-10-5-C-3-2F-201 に置換できているかと思われます。(たぶんできていないです。。助けてくださ
い)
この書式であればGeoAPIは取得できるところまでのジオコーディングを行い、それ以降は切り落して値を返します。
東久留米市南町3-10-5-C-3-2F-201 → 東京都東久留米市南町3丁目10-5 精度8(住所レベル)
号以降の表記ですが、"2F"や"150F"(階数)は許すが、"BF"(地下階)や"B1F"(地下1階)の表記は許さないなど暗黙の部分が結構あり
そうです。
ここら辺は、英語表記の住所に順守してるっぽいですね。
長々と書かせていただきましたが、現状では 正しい住所のリクエスト → 正確なジオコーディング結果 となります。
世界一正規化が困難だと言われている日本の住所データを、どのように正規化すれば正しい住所になるのか?
どこまで正確な位置情報の取得が必要か?
少しでも皆様のご参考になればと思います。
(了)