- 更新日: 2015年6月30日
- Ruby
Yahoo地図API(YOLP)のジオコーダAPIで住所から緯度・経度を求めるRubyコード
スポンサーリンク
Yahoo の地図 API(YOLP)の Geocoding(ジオコーディング)用 API を使って、住所の文字列から緯度・経度を求める Ruby コードです。YOLPジオコーダAPIで、住所文字列から簡単にジオコードを取得することができます。
YOLP(地図):Yahoo!ジオコーダAPI – Yahoo!デベロッパーネットワーク
詳細は上記 Yahoo!デベロッパーネットワークのページを参照。
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
住所から経度・緯度を求める Ruby コード
net/http を使ってリクエストした後に、JSON でレスポンスを受けとるようにしました。YAHOO_APP_ID の部分は、Yahoo API 利用でのアプリケーションIDに変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
require 'net/http' require 'json' require 'singleton' class Yolp include Singleton GEOCODER_BASE_URL = "http://geo.search.olp.yahooapis.jp/OpenLocalPlatform/V1/geoCoder" YAHOO_APP_ID = "*****" # get geocodes from address by YOLP API def geocode_from(address) geocodes = { latitude: nil, longitude: nil } uri = request_url(address) begin response = Net::HTTP.get_response(uri) # check response code case response when Net::HTTPSuccess then # 200 OK data = JSON.parse(response.body) coordinates = data['Feature'][0]['Geometry']['Coordinates'].split(/,\s*/) rescue nil if coordinates && coordinates.size == 2 geocodes = { latitude: coordinates[1].to_f, longitude: coordinates[0].to_f } end else puts [uri.to_s, response.value].join(" : ") end rescue => e puts [uri.to_s, e.class, e].join(" : ") end geocodes end private # build request url with json def request_url(address) encoded_address = URI.encode(address) url = "#{GEOCODER_BASE_URL}?appid=#{YAHOO_APP_ID}&query=#{encoded_address}&output=json" URI.parse(url) end end tokyo_tower = "東京都港区芝公園四丁目2-8" kokkai_gijido = "東京都千代田区永田町一丁目7番1号" Yolp.instance.geocode_from(tokyo_tower) # => {:latitude=>35.65859206, :longitude=>139.74546335} Yolp.instance.geocode_from(kokkai_gijido) # => {:latitude=>35.67589293, :longitude=>139.74486552} |
緯度・経度をハッシュで返す実装です。こんな感じで簡単に、住所の文字列から緯度経度を取得することができました。
スポンサーリンク
私は以下の本で Ruby を覚えました。メタプログラミングRubyは入門を超える内容で難しめです。
<< 前の記事 : Rubyで文字列中の英数字の半角/全角を変換する
- Ruby の関連記事
- Gemの作り方(Ruby Gem)
- ローカル開発中のgemをGemfileに書いてインストール
- 熊本地震の余震が夜に多いのは本当か?Rubyプログラムで検証してみた
- El Capitanでgemのnative extensionビルド失敗に対応
- Rubyで親クラスから子クラスの定数を参照
- MacabをRubyで使う
- rbenv/ruby-buildでRuby最新バージョンをインストール
- Rubyでクラスインスタンス変数にインスタンスメソッドからアクセス
- 距離1kmあたりの緯度・経度の度数を計算(日本・北緯35度)
- Google Maps Geocoding APIで住所から緯度・経度を取得するRubyコード
Leave Your Message!