iPhoneアプリでのより高精度な逆ジオコーディングを求めて・・・

iPhoneアプリで緯度経度から住所を求める逆ジオコーディングを行うには、SDK標準APIのMKReverseGeocoderを使えばいい。


MKReverseGeocoderの精度は決して高くなさそう
ただ、このAPIの逆ジオコーディング精度は決して高くないようだ。例えば本来なら「〜町11-11」となるところが「〜町11」となってしまう場合が多い。MKPlacemarkで取得できる全データを出力してみたが、やはり足りない場合がある。世界中を逆ジオコーディングできるというメリットはあるのだが、その分データ精度が粗いのかもしれない。

もう一つわかったのは、MKReverseGeocoderの逆ジオコーディング結果と、iPhone標準のマップアプリケーションでの逆ジオコーディングの結果は明らかに違うということだ。なぜなんだ?開発者用はわざと精度が落とされているのかもしれない。


追記:
その後の調べで、MKReverseGeocoderの精度が高くないというのは間違いだとわかった。
琴線探査: MKReverseGeocoderでより精度の高い住所情報はMKPlacemark.addressDictionaryにあった!


より高精度な逆ジオコーディングを求めて・・・
そういってばかりでも仕方ない。国内だけでも構わないので、もう少し高い精度で住所を得られないものか。そこでより精度の高い逆ジオコーディングを求めて検索の旅に出た。

水先案内人となってくれたのは茜丸@昼勤務さんだ。
逆ジオコーディングサービス増えてた! | GE Maniacs

紹介されていたなかで特に使えそうなものを試してみた。


Yahoo Japan ローカルサーチAPI
まず、YahooのローカルサーチAPIは安定性・継続性ともに安心できるし高機能だが、非商用利用に限られている。無料のアプリには使えるかもしれないが、有料のアプリでは利用できないだろう。


独立行政法人農研機構 「簡易逆ジオコーディングサービス」
独立行政法人農研機構 による「簡易逆ジオコーディングサービス」。精度がMKReverseGeocoderと同等なのでiPhoneアプリで利用する意味はあまりなさそう。しかし、独法もこういうサービスを運営している場合があるのだなぁ。すばらしい。


ALPSLAB 「標高API」
ALPSLABの「標高API」は住所だけでなく標高までわかるので、逆ジオコーディング以外の用途や新しいアプリケーションのアイディアにつながるかもしれないものだが、残念ながら今月一杯でサービス終了らしい。不況のせいだろうか。


「日本測地系」に見る日本のガラパゴス体質
ここで一つ問題になっている事を発見した。Google Mapは「世界測地系」という座標系を使っているが、ALPSLABなど日本のAPIは「日本測地系」なるものを使うものも多い。ということは、もしこうしたAPIをiPhoneで使う場合はそれぞれの座標系の間で変換する必要がある。

まんどくさ。日本のガラパゴス体質、ここにも見たり。できるだけ早く世界標準を採用すべきだ。


NPO法人 情報活用センター 「逆ジオコーディングAPI」
最も使えそうなのはNPO法人「情報活用センター」の「逆ジオコーディングAPI」だ。

サイトを見ただけでは商用利用可能かわからないので問い合わせ中だが、どうだろう。完全にタダでとは申しません。いくばくかは寄付しまっせ〜(^^);

10.03.31追記:
その後、問い合わせのお返事を頂いた。動作保証、品質保証はできないものの、商用利用を制限してはいない、との事。

その後の調べで、iPhoneのAPIの逆ジオコーディングでも十分高い精度の住所が得られること、そして実はGoogle Map APIにすでに同様の機能があったと言う事を知った。
琴線探査: Google Map APIのReverse Geocoding(逆ジオコーディング)はJavascriptを使わなくてもできると知る

ただ、Google Map APIは利用規約上、無料のアプリ(広告は可)には使えても有料のアプリには使えないはずなので、この「逆ジオコーディングAPI」はいぜんとしてありがたいAPIである。

コメント

  1. ALPS LAB、のサービス終了はひっじょうに残念ですね(;゚Д゚)。

    返信削除
  2. 趣味で逆ジオコーディングAPI作りました。 よかったら試してみてくださいませー http://reversegeojpn.appspot.com/

    返信削除

コメントを投稿

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?