以前画像のExif情報から位置情報を取得する作業があったのですが、
ぱっと調べてもファイルアップロードしたりツールを使ったりと簡単に地図に表示する方法の紹介が少ないように感じました。
なのでワンライナーで簡単に地図(google map)に表示する方法を紹介?します。
dependency
Ubuntu: 18.04
ImageMagick: 6.9.7-4
firefox: 75.0
画像の位置情報の読み方について
identifyコマンドで簡単に表示できます。
$ identify -verbose sample.jpg | grep GPS
exif:GPSAltitude: 56219/4096
exif:GPSAltitudeRef: 0
exif:GPSDateStamp: 2020:02:23
exif:GPSDestBearing: 48287/361
exif:GPSDestBearingRef: M
exif:GPSImgDirection: 48287/361
exif:GPSImgDirectionRef: M
exif:GPSInfo: 1998
exif:GPSLatitude: 34/1, 36/1, 4625/100
exif:GPSLatitudeRef: N
exif:GPSLongitude: 135/1, 31/1, 520/100
exif:GPSLongitudeRef: E
exif:GPSSpeed: 0/1
exif:GPSSpeedRef: K
度分秒表記だと北緯:34度36分46秒25 東経:135度31分5秒2みたいです。
各数字の比率?を計算する必要があります。
具体的には経度だと「135/1, 31/1, 520/100」の「/」のあとの数字で各数字を割る必要があるみたいです。
(135 / 1)度 (31 / 1)分 (520 / 100)秒 (520 % 100) ⇒ 135度31分5秒2
緯度経度を10進数の表記で表すと下記のようになります。
N34.6128,E135.518
各数字を「1」,「60」,「3600」で割って足します。
つまり10進数表記での経度の計算は下記のようになります。
(135 / 1) + (31 / 1 / 60) + (520 / 100 / 3600) = 135.518
⇒ E135.518
あと正確にやるなら「GPSLatitudeRef」の「N」、「GPSLongitudeRef」の「E」も考慮しましょう。
それぞれ「N」が北緯と「E」が東経のはずです。
南半球だと南緯を表す「S」アメリカ大陸などでは西経を表す「W」になるのでしょうか。
他にも様々な表記があるので調べると面白いかもしれません。
この分野詳しくないので計算や文言が間違っていたら教えていただけると幸いです……
google map で開いて確かめる
しかし数字だけ見ても面白くないですね。
google mapで開いてみます。
$ cat sample.jpg |identify -verbose -|grep -e 'GPSL.*,'|tr -d ' '|awk -F '[:/,]' '$0=$3/$4+$5/$6/60+$7/$8/3600'|xargs|tr ' ' ,|xargs -i firefox 'https://www.google.com/maps/search/?api=1&query={}'
生成されたURLは下記のようになります。
https://www.google.com/maps/search/?api=1&query=34.6128,135.518
google mapスクリーンショットは規約的にだめみたいなので実際に開いて確かめてみてください。
大坂の公園が表示されているかと思います。
複数の画像から移動ルートとか調べてみる
google map apiとか使うと自由に良い感じで出来ますが、気軽に調べたいときはシェル芸で十分ですね。
5枚の写真があるフォルダで実行します。
$ ls | xargs -i identify -verbose {} | grep -e 'GPSL.*,'|tr -d ' '|awk -F '[:/,]' '$0=$3/$4+$5/$6/60+$7/$8/3600'|xargs -n2|tr ' ' ,|tr \\n /|xargs -i firefox https://www.google.co.jp/maps/dir/{}
生成されたURLは下記のようになります。
スマホだと駄目みたいなのでPCで開いてください。
○が書かれた場所が写真の場所になります。
写真から公園を歩いた道筋がわかりましたね!わーい!
またこの移動ルートを表示するURL作成方法は、googleの公式ドキュメントには書かれてない(自分が調べた限りでは)ので、正しいかどうかは分からないです。位置情報が多すぎると失敗する気がします。
まとめ
GPSの情報計算とかは参考になるのではないでしょうか?
昔の写真フォルダを漁ってMapに表示し、旅行ルートを思い出したりして楽しめるのではないでしょうか。
この記事が誰かの参考になれば幸いです。
備考
使用した写真は知り合いから許可をもらって利用しました。
ちなみに最初は計算で比率を計算しておらず地図上のいろんな国に飛ばされて混乱したりしてました。