ジオどすは「京都市中京区四条河原町上ル東入ル」のような京都の通り名をジオコーディングできるWeb API。
Google Maps APIYahoo!地図Web APIのローカルサーチAPI とほぼ同じインプット・アウトプット仕様になっているので、これらのジオコーダAPIのプロキシとして使うことが可能。

京都市内で日常的に使われる、「京都市××区○○通△△西入ル」などの住所表記は、京都で生活する上では非常に便利です。文字どおり、基点となる交差点から指定された方向へ行けば目的地が見つかります。ですので、京都市内でお客様に来て頂く必要のあるホテル、レストランなどのお店の住所は、通り名での表記になっていることがほとんどです。

ただ、この表記方法は一点の場所を特定することができません。また丁目番地といった郵便の住所とも異なります。
このため、地図サイトでの住所検索や、住所から緯度経度の座標を特定する「ジオコーダー」と呼ばれるプログラムでは扱われないままになっていました。一部のジオコーダーでは一見結果を返すようですが、「京都市○○区」の部分までを住所とし、以下を切り捨てて検出を行っており、その区の区役所など指すこともたびたびありました。
(中略)
この「京都通り名ジオコーダー『ジオどす』」は京都の通り名による住所表記から、アバウトでもよいので座標を取得したい、という要望から作られました。「ジオどす」単体では京都の通り名表記のみの対応となるので、他のジオコーダーと組み合わせて補完的に使用できるようになっています。使い方もとても簡単で、既にあるグーグルマップやヤフー地図を使って作られた地図サービスでもすぐに京都対応にできます。

おこしやす | 『ジオどす』 京都通り名ジオコーダーAPI

API置き換えパターン

Google Maps API の場合:
GClientGeocoder
-> GClientGeocoderWithGeodosu

Google Maps API HTTP ジオコーダの場合:
http://maps/google.com/maps/geo?
-> http://api.geodosu.com/{APIキー}/maps/google.com/maps/geo?

Yahoo!地図Web APIのローカルサーチAPI の場合:
http://map.yahooapis.jp/LocalSearchService/V1/LocalSearch?
-> http://api.geodosu.com/{APIキー}/map.yahooapis.jp/LocalSearchService/V1/LocalSearch?

サンプルコード

とりあえず、GClientGeocoder を GClientGeocoderWithGeodosu で置き換えるサンプルを作ってみた。
「京都市中京区四条河原町上ル東入ル」がちゃんとジオコーディングされている。
ジオどすAPIを使ったサンプル : Sample of GClientGeocoderWithGeodosu

ちなみに GClientGeocoder では「京都市中京区四条河原町上ル東入ル」はぜんぜんジオコーディングできていない。
GClientGeocoderのサンプル に「京都市中京区四条河原町上ル東入ル」を入力すると Not Found.

開発裏話がおもしろい

グーグルやYahooでは時々検出することもあるが、動きから予測すると、ローカルサーチ用の情報として登録されているレストラン・ホテル・店舗などの住所表記と一致した場合だけのようで、汎用的に使えるわけではないようだ。

京都の通り名のジオコーダくらいあるだろう?と思って、地図・GISの事ならなんでも知っているオークニーの森さんに尋ねてみると、するとジオセンスの小林さんが京都ジオコーダ(京都通り名マップ)を完成させたらしいという情報が!
ジオセンスの小林さんなら既に面識があったので、早速アポとって尋ねる。

小林さんによると、京都ジオコーダは作りかけで、京都の各通りの座標データ入力まで終わったところらしい。更正途中とのことだが各交差点の位置が分かれば大体計算で出せそう。
ということで小林さんにご承諾頂いて通りのデータを頂いた。
これと平行して、京都市役所に聞き込みに行く。京都市役所で「道路明示課」なる部署に聞きに行く。担当の方は親切だったが、どうもここは担当部署ではないらしい。
改めて受付で

「京都の通り名の規則を調べているのですが、何処の課に行けばいいですか?」

受付の人は親切に市街地整備課やら観光課やら街歩き推進課(だったかな?)やら片っ端から電話をかけてくれるも、ほとんどタライ回し状態。
最終的に普通の市民相談を受け付けているところのお兄さんが、個人的見解をいろいろ教えてくれた。
あとは、街で郵便配達中の人を捕まえてきいたり、実際に街を歩いてみたり。あとは京都出身の友人知人に問い合わせる。

開発裏話 | 『ジオどす』 京都通り名ジオコーダーAPI

主要な地図サイトでの京都通り名ジオコーディング対応状況

上の「開発裏話」によると、日本の主要な地図サイトは京都の通り名のジオコーディングにほとんど対応できていない様子。
ただ、Yahoo!地図では京都通り名のジオコーディングに対応しているらしい。ローカルサーチAPIでも対応しているかどうかはわからないが。。。

「京都通り名(きょうととおりな)」とは、歴史的な住所表現として、京都において長く利用されてきている通称住所です。
まずはいくつか、通り名の住所表記の例を見てみましょう。

「東本願寺」の住所 → 京都府京都市下京区烏丸通七条上る
「本能寺」の住所  → 京都府京都市中京区寺町通御池下ル下本能寺前町522
「白山神社」の住所 → 京都市中京区麩屋町通押小路下る上白山町243


京都の町は碁盤目形状なので、東西・南北通りの交差点を基点として「上る(北へ進む)」「下る(南へ進む
)」「西入(西へ進む)」「東入(東へ進む)」などと進む方向を示せば、間違えることなくその場所へ誘導できるわけです。「京都通り名」は、道案内的な発想で作られた住所なんですね。

ちなみに、平成19年版・京都市観光調査年報(京都市産業観光局)によると、平成19年に同市を訪れた観光客数は4,944万5千人を数えるそうです。京都にお住まいの皆さんをはじめ、観光で京都を訪れる多くの皆様にも、Yahoo!地図を便利にお使いいただければ幸いです。

【地図検索】「京都通り名」の検索ができるようになりました! - 地図スタッフブログ - Yahoo!ブログ

追記: 2009-01-29

もともとは、マッシュアップアワードの参加作品を作っていたとき、ユーザーが入力してくれた住所情報から自動でグーグルマップにマーカーを立てる機能が、京都だけほぼ全滅していることにチームメンバーが気づいたことが発端です。詳しくは開発裏話に掲載したのでそちらを読んでください。

京都ジオコーダだけでは弱いのですが、2回連続マッシュアップアワード準グランプリ+グーグルガジェットコンテスト準グランプリ+数々の賞を受賞しているスーパーマッシュアッパー、クリエイトシステムの太田さんのアイデアで、グーグルとヤフーのジオコーダへのプロキシ機能をつけました。
グーグルやヤフーと全く同じインプットパラメータ、アウトプットフォーマットとして、利用者はAPIのリクエスト先のドメイン部分を少し変えるだけで、あたかもグーグルやヤフーのジオコーダが京都対応したかのような動きをします。これまでにグーグルマップやYahoo!地図を使って作られたマッシュアップ・サービスがすぐに京都対応になる優れもののアイデアですね。

ロカポ ブログ: 京都通り名ジオコーダーAPI『ジオどす』を公開しました。

tags: zlashdot GIS GIS Geocoding GoogleMapsAPI WebServices YahooJapanMapsAPI

Posted by NI-Lab. (@nilab)