Yuriko.Net 個別記事

2007-02-15
晴れ

Google Maps API で Geocoding

ゆりこ による 22:55:00 の投稿
カテゴリー: ソフトウェア
タグ:

Ktai Location で、住所やランドマーク名称から緯度・経度を調べる (Geocoding) することを思いつきましたが、Google Maps API が geocoder を装備しているようです。HTTP でアクセスできるので、サーバーサイドのスクリプトからの利用も容易っぽい。

To access the Maps API geocoder directly using server-side scripting, send a request to http://maps.google.com/maps/geo? with the following parameters in the URI:

  • q — The address that you want to geocode.
  • key — Your API key.
  • output — The format in which the output should be generated. The options are xml, kml, csv, or json.

これで使えるとは、とってもシンプルですね〜〜。すぐ実装できてしまいそうです;-) 試しに「向ヶ丘遊園駅」で XML を要求してみると以下の結果でした。なお、改行とインデントを入れて整形してあります。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Response>
  <name>向ヶ丘遊園駅</name>
  <Status>
    <code>200</code>
    <request>geocode</request>
  </Status>
  <Placemark>
    <address>(日本)向ヶ丘遊園駅(神奈川)</address>
    <AddressDetails Accuracy="1" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
      <Country>
        <CountryNameCode>JP</CountryNameCode>
        <AddressLine>向ヶ丘遊園駅(神奈川)</AddressLine>
      </Country>
    </AddressDetails>
    <Point>
      <coordinates>139.564719,35.617273,0</coordinates>
    </Point>
  </Placemark>
</Response>
</kml>

複数の結果が返る場合も対応していて、「大久保駅」では以下の結果でした。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Response>
  <name>大久保駅</name>
  <Status>
    <code>200</code>
    <request>geocode</request>
  </Status>
  <Placemark>
    <address>(日本)大久保駅(兵庫)</address>
    <AddressDetails Accuracy="1" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
      <Country>
        <CountryNameCode>JP</CountryNameCode>
        <AddressLine>大久保駅(兵庫)</AddressLine>
      </Country>
    </AddressDetails>
    <Point>
       <coordinates>134.939194,34.681914,0</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <address>(日本)大久保駅(秋田)</address>
    <AddressDetails Accuracy="1" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
      <Country>
        <CountryNameCode>JP</CountryNameCode>
        <AddressLine>大久保駅(秋田)</AddressLine>
      </Country>
    </AddressDetails>
    <Point>
      <coordinates>140.063079,39.870890,0</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <address>(日本)大久保駅(東京)</address>
    <AddressDetails Accuracy="1" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
      <Country>
        <CountryNameCode>JP</CountryNameCode>
        <AddressLine>大久保駅(東京)</AddressLine>
      </Country>
    </AddressDetails>
    <Point>
      <coordinates>139.697478,35.700595,0</coordinates>
    </Point>
  </Placemark>
  <Placemark>
    <address>(日本)大久保駅(京都)</address>
    <AddressDetails Accuracy="1" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
      <Country>
        <CountryNameCode>JP</CountryNameCode>
        <AddressLine>大久保駅(京都)</AddressLine>
      </Country>
    </AddressDetails>
    <Point>
      <coordinates>135.777024,34.874351,0</coordinates>
    </Point>
  </Placemark>
</Response>
</kml>

CSV 出力だとめちゃめちゃシンプルな出力になるんですが、複数出力には対応できません。「大久保駅」の場合は以下のようになり、兵庫県の駅が取り出されるようです。

200,1,34.681914,134.939194

トラックバック・コメント »

コメントはありません。

上に戻る

※スパム対策プラグインの影響により、すぐにトラックバックが反映されない場合があります。お手数ですが、半日ほど待ってみてください。

コメント投稿

※発言の責任を明確にするため「名無し」「通りすがり」「匿名希望」等の匿名は不可とします。捨てハンドルでもいいので必ず名乗ってください。
XHTML (使えるタグ): <a href="" title="" ktai=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> .
※スパム対策プラグインの影響により、すぐにコメント内容が表示されない場合があります。お手数ですが、半日ほど待ってみてください。

上に戻る