Symfoware

Symfowareについての考察blog

Pythonで郵便番号から緯度と経度を取得する(HeartRails Geo API使用)

郵便番号から緯度と経度を取得したいことがありまして、
Pythonを使って何とかならないか調べた時のメモです。


HeartRails Geo API



HeartRails Geo API

こちらで郵便番号から位置情報を取得するAPIが公開されています。
郵便番号による住所検索 API

郵便番号が公開さているのは知っていましたが、
郵便番号データダウンロード

国土交通省が位置情報を公開しているんですね。知らんかった。
位置参照情報ダウンロードサービス



API仕様



以下の形式でリクエストを送ると、結果がXML形式で返されます。


http://geoapi.heartrails.com/api/xml?method=searchByPostal&postal=[郵便番号]




サンプルはこちら
http://geoapi.heartrails.com/api/xml?method=searchByPostal&postal=0010010


  1. <response>
  2.     <location>
  3.         <city>札幌市北区</city>
  4.         <city-kana>さっぽろしきたく</city-kana>
  5.         <town>北十条西一丁目</town>
  6.         <town-kana>きた10じょうにし(1-4ちょうめ)</town-kana>
  7.         <x type="decimal">141.352625</x>
  8.         <y type="decimal">43.073528</y>
  9.         <prefecture>北海道</prefecture>
  10.         <postal>0010010</postal>
  11.     </location>
  12.     <location>
  13.         <city>札幌市北区</city>
  14.         <city-kana>さっぽろしきたく</city-kana>
  15.         <town>北十条西二丁目</town>
  16.         <town-kana>きた10じょうにし(1-4ちょうめ)</town-kana>
  17.         <x type="decimal">141.351328</x>
  18.         <y type="decimal">43.073307</y>
  19.         <prefecture>北海道</prefecture>
  20.         <postal>0010010</postal>
  21.     </location>
  22.     <location>
  23.     <city>札幌市北区</city>
  24.         <city-kana>さっぽろしきたく</city-kana>
  25.         <town>北十条西三丁目</town>
  26.         <town-kana>きた10じょうにし(1-4ちょうめ)</town-kana>
  27.         <x type="decimal">141.349677</x>
  28.         <y type="decimal">43.073127</y>
  29.         <prefecture>北海道</prefecture>
  30.         <postal>0010010</postal>
  31.     </location>
  32.     <location>
  33.         <city>札幌市北区</city>
  34.         <city-kana>さっぽろしきたく</city-kana>
  35.         <town>北十条西四丁目</town>
  36.         <town-kana>きた10じょうにし(1-4ちょうめ)</town-kana>
  37.         <x type="decimal">141.348077</x>
  38.         <y type="decimal">43.07288</y>
  39.         <prefecture>北海道</prefecture>
  40.         <postal>0010010</postal>
  41.     </location>
  42. </response>





Pythonで取得



APIを呼び出し、得られた結果の最初の座標を取得するサンプルです。


  1. # -*- coding:utf-8 -*-
  2. # HeartRails Geo API - http://geoapi.heartrails.com/api.html
  3. # 郵便番号から緯度、経度情報を取得
  4. import urllib2
  5. import xml.etree.ElementTree
  6. API_URL = 'http://geoapi.heartrails.com/api/xml?method=searchByPostal&postal='
  7. # 緯度、経度情報を取得したい郵便番号
  8. zip_code = '0010010'
  9. # APIに接続し、情報を取得
  10. response = urllib2.urlopen(API_URL + zip_code)
  11. xml_result = response.read()
  12. response.close()
  13. # 取得したXML文字列を取得
  14. elem = xml.etree.ElementTree.fromstring(xml_result)
  15. # 最初の緯度、経度を取得
  16. x = elem.findtext(".//x")
  17. y = elem.findtext(".//y")
  18. # 結果の表示
  19. print x, y




実行してみると、ちゃんと緯度と経度が取得出来ました。


$ python sample.py
141.352625 43.073528



関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/03/03(火) 20:26:46|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<R言語 ggmapでGoogleMapに座標を上書きし、画像として保存する | ホーム | R言語 散布図と線形単回帰>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1665-31a3a716
この記事にトラックバックする(FC2ブログユーザー)