RMagickを使って画像Exif位置情報を10進値に変換
iPhoneやAndroid携帯で撮影した写真にはGPSによる位置情報を付けることができます。最近ではGPSに対応したデジタル一眼レフカメラも普通にあるようですしサービスを作る上で利用したいですね。
ImageMagickコマンドで確認
Exifの位置情報はどんな風に格納されているのかImageMagickを使って見てみましょう。
$ identify -verbose ~/Desktop/image.jpg | grep itude exif:GPSAltitude: 9509/501 exif:GPSAltitudeRef: 0 exif:GPSLatitude: 35/1, 3850/100, 0/1 exif:GPSLatitudeRef: N exif:GPSLongitude: 139/1, 4497/100, 0/1 exif:GPSLongitudeRef: E
どうやら60進数の文字列として格納されてそうです。
#ちなみにこの位置は昨日のお昼ご飯のお弁当なので会社の場所です。うちじゃないですよ(笑)
Rubyでハンドリング
RailsからアクセスするとなるとRMagickを使うのが楽そうです。
Google Mapsなどを使って表示しようとすると10進のFloatの方が扱いやすそうですので変換してみます。緯度経度の値の中に文字列表記の除算が出てきますが、RubyにはRationalライブラリが含まれているのでFloatに変換する直前までRationalで行けば楽チンで誤差も最小限。
Google Mapsで確かめて見ましょう。
iPhoneのGPSなので少しずれてますが10m程度でした。
おまけ
日本では必要ないはずですが、世界をにらんだサービスであればGPSLatitudeRefとGPSLongitudeRefも見て調整する必要があるようです。
コメントする