exifrで取得したEXIFに含まれる緯度経度情報の変換
ruby-exif.rbをあきらめてExifrを使ってみる - Paradigm Shift Designの続き
結局、exifrでデータを取得するコードは
@tags = EXIFR::JPEG.new(@filename) if @tags.exif? @content.width = @tags.width; @content.height = @tags.width @content.capture_date = @tags.exif[:date_time]; if @tags.exif.nil?.equal?(false) @latitude = @tags.exif[:gps_latitude] @content.latitude = @latitude[0] + @latitude[1]/60 + @latitude[2]/3600 @longitude = @tags.exif[:gps_longitude] @content.longitude = @longitude[0] + @longitude[1]/60 + @longitude[2]/3600 end p @content end
みたいになった。
上記コードで、
@tags.exif[:gps_latitude] @tags.exif[:gps_longitude]
の値は、
:gps_latitude =>[Rational(35, 1), Rational(93, 10), Rational(0, 1)] :gps_longitude=>[Rational(136, 1), Rational(2901, 50), Rational(0, 1)]
となっていて、緯度経度が時・分・秒に分割され、3つRationalの配列になっている。
これをGoogleMapsなんかで使える値にするには、上記コードのように
@latitude = @tags.exif[:gps_latitude] @latitude[0] + @latitude[1]/60 + @latitude[2]/3600 @longitude = @tags.exif[:gps_longitude] @longitude[0] + @longitude[1]/60 + @longitude[2]/3600
のように変換する必要がある。
上記のデータを変換すると、
latitude: 35.155 longitude: 136.967
というデータが得られる。
Google Mapsで表示させて確認。
・・・びっみょーにずれてるな。研究室の中でとった写真なんだけど。
まいっか。