exifデータをファイルから取得すると、その座標は3つの数値の配列で与えられます。rubyを使用してexif gpsのデータ配列形式を緯度と経度に変換します
i.exif['gps_latitude']
=> ["6/1", "4/1", "911/50"]
一般的な使用のために、より一般的なフロートフォーマットに変換する必要があります。
exifデータをファイルから取得すると、その座標は3つの数値の配列で与えられます。rubyを使用してexif gpsのデータ配列形式を緯度と経度に変換します
i.exif['gps_latitude']
=> ["6/1", "4/1", "911/50"]
一般的な使用のために、より一般的なフロートフォーマットに変換する必要があります。
私は考えることができる最も単純な方法は、Rational
数値に文字列を変換することです:
arr = ["6/1", "4/1", "911/50"]
d, m, s = arr.map(&:to_r)
#=> [(6/1), (4/1), (911/50)]
そして、次のようにして小数点以下の値を計算します。
lat = d + m/60 + s/3600
#=> (1092911/180000)
浮動小数点の値を取得するにはe:
lat.to_f
#=> 6.071727777777777
あなたはルビーで変換を行うために、次のコードを使用することができます。
arr = exif.gps_latitude
pic.lat = arr[0].to_f + arr[1].to_f/60 + arr[2].to_f/3600
pic.lat *= exif.gps_latitude_ref == 'S' ? -1 : 1
arr = exif.gps_longitude
pic.lng = arr[0].to_f + arr[1].to_f/60 + arr[2].to_f/3600
pic.lng *= exif.gps_longitude_ref == 'W' ? -1 : 1
このコードでは、分母が無視されます。 '50'。 3つの数字は、6°4 '911 "ではなく、6°4' 18.22" – Stefan