exiftoolでジオタグ追加


GPS機能なしのカメラで写真を撮り、別に携帯していたGPSロガーの情報を写真のexifに埋め込む。
材料は以下のとおり。

  • 写真群1(Canonのカメラで撮影したもの) 時刻はJST
  • 写真群2(Sonyのカメラで撮影したもの) 時刻はJST
  • GPSロガー(gpx形式のファイルを準備する)時刻は"HH:MM:SS Z"というように、UTC記載になってます。

このメモの趣旨は、同行二名が別々のカメラでサイズも合わせず好き勝手に撮影したものを、後から見やすい形に揃えましょうという話です。

前準備として、細切れになっているgpxファイルは扱いやすい単位に結合しておきます。
私は一日単位に結合しました。いろいろとツールは出ているようですが、Garmin RoadTrip, myTracksともにMacOS版。
カシミールを入れても良いんだけど、あまり大きいものはマシンに入れたくないし。
今回は、力技でXMLEditorでテキスト編集してマージした。数がなければこれで十分だけど、今後どうすっかな。

exiftoolを入れる

SuSEではYASTから簡単に入れることができる。Perlのドライバとしても使えるようだ。windows版、MaxOS版もある。
今回は、ver7.42をインストール。これはすごいツールだね。今まで知らなかったのが恥ずかしい。この業界のスキーマ定義は仕事で使えるかも。

exiftoolの基本的な使い方は、コマンドライン実行。フィルタモード(写真から何らかのメタデータを読み取り標準出力に書き出す)と、更新モード(元ファイルの拡張子を.jpg_originalに変更して上書き)がある。コマンドを実行するには、オプションと写真名を引数として渡す。もしくは、exiftool(-k).exeのように実行ファイル名をリネームして引数を付けておき、それに対して写真名を渡すようにするやり方もある。

写真にジオタグを埋め込む

おおざっぱな手順。
 1、個々の写真のexifタグを抽出する(.xmpファイルへ)
 2、2台のカメラの時間ズレをxmpファイル上で修正する
 3、カメラとGPSロガーの時間ズレを修正する(Canonは買ったばかりなので概ね時間は合ってるだろうと今回はスキップ。やることは2と一緒。)
 4、ジオタグxmpファイルに埋め込む
 5、修正したexifタグ(xmpファイル)を写真に戻す

1、タグ抽出
ファイルのリサイズは既に実施済み(前回の日記を参照)。すべての写真を256x256サイズに変更しておいた。
その画像ファイルをすべて./size0256ディレクトリへ入れて以下のコマンドを実行。

> exiftool -k ./size0256/ -o %d%f.xmp

これにより、写真ファイルと同じディレクトリにxmp拡張子のメタ情報ファイルが生成される。
ちなみに機種を確認する方法。

> exiftool -Make *.JPG

2、カメラ時間ずれ調整
私の場合、CanonSonyの時間は、Sonyが1分17秒進んでいる(Canonに合わせる)のでその分だけ戻す。

> exiftool -k -DateTimeOriginal-="0:0:0 0:1:17" *.xmp

修正前 
2010-09-23T19:52:24+09:00
修正後
2010-09-23T19:51:07+09:00

と、こんな感じで修正できました。

4、xmpファイルにジオタグを埋め込む
先ほど修正したDateTimeOriginalを元に埋め込みをしたい、のでオプションを入れる(windows上では'の代わりに"で囲む)。
ここでハマった。

> exiftool -geotag hoge.gpx '-xmp:geotime

すべてのxmpファイルにgeotimeがないと怒られ、ファイル更新されない。
ドキュメントのページを読むとgeotimeが記載されていない場合にはDateTimeOriginalを自動的に使うと書いてある。一方で、APIを使う場合にはgeotimeは必ず存在していなければならないとの記載もある。いろいろと試したがダメ。
しょうがないのでwindows版ver8.35をインストールしてみる。

> exiftool -geotag hoge.gpx "-xmp:geotime

ということであっさりと、変換できました。時間がかけ離れた写真は自動判定で紐付け除外してくれる。
あっさり動いて拍子抜け。バージョンの違いなのか、win版Linux版の違いなのか。。。深くは追求しない。
Win版を使った作業により、ジオタグが追加された。xmpファイルの一部を書き出す。
DateTimeOriginalに近い時間の情報が追加されていることがわかる。

....

5357/1482
1
3/1
0
0
2010-10-03T05:00:33+09:00
1/1
0221
0/1
0
1/80
7/2
3
0100
64/5
2
704000/73
704000/73
80/1
0
34,36.138456S
58,22.512000W
2010-10-02T20:00:33


125


....

5、タグを写真に埋め戻す
Linux版でもWindows版でもできた。

> exiftool -k -tagsfromfile ".\tag\%f.xmp" -r -ext JPG ".\dir"

おまけ
もっと簡単に(xmpファイルに書き出さず)コマンド一発の方法もある。
下記の参考ページを見ること。

こうして作ったファイルを、picasaに取り込み、kmzしてビジュアル化完了。

参考にさせて頂いたページ