位置がずれてる!!
公園プロジェクトをやっていて、とても困ったのが、300以上ある公園の住所はわかっているんですが、それをGoogle マイマップに読み込んで位置を特定しようとすると、そこに公園がない!ってことでした。
例えば、寺子屋公園 小平市小川町一丁目936番地5 っていうのがあります。これを素直にGoogle マイマップに読み込んで住所で、場所を特定すると、こんなにずれてます。
なぜずれるのかは、不明ですが、番地や枝番までは、あまり正確に検索できなそうです。
原因をいろいろ検索してみたけど、そもそも住所はエリアを示すので、住所の代表点を示していたり、Google検索は枝番をはしょったりしてしまうようです。
正確な位置にピンをうつには、Map上で修正するしかなさそうです。
簡単な場所特定
実は、Google Mapにも登録されているので、これ、Google mapで素直に検索すると、出てきます。
こういう所は、ある程度探せるのですが、例えば、上水公園で検索すると
Google Mapにも登録されているので、検索できますね。
ってこれ小金井じゃん!(笑)
という風になります。
こういう時は、場所の名前と、「小平市」とか住所のヒントを与えてあげると、「上水公園 小平市」といれると、このように出てきます。(ちょっと違うんだけどね)
「上水公園 たかの台」だと、多機能トイレが検索されます(笑)
面白いですよね。って そこではないのですが・・・
やっぱり緯度経度がいる!
Google マイマップにデータを変えて読み込んだりしようとすると、位置情報が、住所でやると毎回 Map上で修正しなければならないということになって面倒です。
それには緯度経度がいるんですが、緯度経度って、地図系などによっていろいろあるんですよね。
GISでは昔からこれがあって、めんどくさい。それとこのGoogleが何を使っているのかとか、考えたくないですし。。
で、とても便利なWebサービスを見つけました。
Geocoding.jpというサイトです。
これも、上のGoogle mapの検索と同様に、例えば、花5第3児童公園 小平市 で検索すると、緯度: 35.732665 経度: 139.509857 とGoogleマップで使っている緯度経度をちゃんと返してくれます。
こちらは、API(WebのGet Postという方法と同じ使い方で、データだけもらう方法)もあって、XMLで返してくれます。Google全体に言えることですが、文字コードはUTF-8にする必要があります
これを、APIで叩くと、(cURLとかのコマンドでうったり、Chromeなら、Restletなどを使うと便利)
>curl GET http://www.geocoding.jp/api/?q=花5第3児童公園 小平市
HTTP/1.1 200 OK date: Wed, 17 Jan 2018 02:47:49 GMT via: 1.0 localhost (squid/3.1.23) x-cache-lookup: MISS from DCMV-KPXY04:8080 server: Apache vary: Accept-Encoding,User-Agent x-cache: MISS from DCMV-KPXY04 content-type: text/xml; charset=utf-8 connection: close <?xml version="1.0" encoding="UTF-8" ?> <result> <version>1.2</version> <address>花5第3児童公園 小平市</address> <coordinate> <lat>35.732665</lat> <lng>139.509857</lng> <lat_dms>35,43,57.592</lat_dms> <lng_dms>139,30,35.483</lng_dms> </coordinate> <open_location_code>8Q7XPGM5+3W</open_location_code> <url>http://www.geocoding.jp/?q=%E8%8A%B1%EF%BC%95%E7%AC%AC%EF%BC%93%E5%85%90%E7%AB%A5%E5%85%AC%E5%9C%92%E3%80%80%E5%B0%8F%E5%B9%B3%E5%B8%82</url> <needs_to_verify>no</needs_to_verify> <google_maps>花5第3児童公園 小平市</google_maps> </result>
この中に、ちゃんと緯度経度の情報が入っていますね。
<lat>35.732665</lat> <lng>139.509857</lng>
しょっとScript書いてもある程度できますね。
ちなみに、Google App Scriptあたりで、書いてまわしたりできるのですが、Geocoding.jpさんでは10秒に1回程度のアクセスを推奨されています。サーバー負荷にならないように、利用するのが良さそうです。
APIを使ってScriptでXMLを取る方法などもいつか紹介します。その時は、Google Map APIを直接使う方法かな?
とは、いいつつも・・全部できない
こういう風にして、ほとんどの場所が特定はできていくのですが、見つからないところもあったり、Google Mapに入ってないと出てこなかったり。。 と、まぁ、そもそもGoogle Mapに入ってたら、公園マップなんかやらなかったのですが。。
そもそも住所のピンの位置がずれているのが多くて当初困りました。
公園マップは、樋口さんが10日間かかって、のべ160㎞、チャリを漕いで、場所を特定して、それでも、未特定のところは、図書館に行って、ゼンリンの住宅地図から探したり。。いろいろな手段で特定していきました。
やっぱり人が確認することが、まだまだ必要なんですねぇ。