GPSデータと写真のシンクロ

先日のハイキングの際に、Joeがトレッキング中GPSを身につけていてログを取っておいてくれたので、これを使って写真に位置情報を付加することを試してみました。ちょっと探しみてると予想どおり、既に商用/フリーのツールがけっこうあります。仕組みは大概同じだと思いますが、タイムスタンプを使って各写真に適当な位置情報を埋めこんでいきます。中でも簡単そうだったのを2つ試してみました。1つ目は、GPSTagrというWebのサービスで、既に写真をFlickrにアップロードしてある場合、これが一番簡単。2つ目は、gpsPhotoというPerl Scriptで、GPSのログと写真を与えると、EXIFGPS情報の箇所に、位置情報を書きこんでくれます。
まずは、GPSのログのフォーマットですがGoogle Earth上でトレッキングコースを確認したりする目的には、kml/kmzというフォーマットが使用されていますが、上の2つの方法では、gpxというこれまたXML形式のファイルが必要です。変換が必要なら、GPSBabelというツールで変換することができます。gpxファイルの用意できたら、後は簡単。
GPSTagrの場合、gpxファイルをアップロードすると、トレッキングの開始時間〜終了時間までの間に撮影された写真をFlickrの自分の写真の中から自動的に選び、Flickr用のGeoTagという位置情報をTagとして付加してくれます。gpxファイルでは、タイムスタンプにGMTEXIFでは通常ローカルタイムが使用されていますが、これも上手く処理してくれるので簡単。できあがりはこんな感じ...

せっかくトレッキングのログがあるのでGoogle Earthのようにパスも表示して欲しいのですが、所詮写真共有サイト。パスを表示する機能がないのが欠点。もう1つの欠点は、GeoTagは、Flickrの中でだけ意味があるので、可搬性が無い。
gpsPhotoの方は、EXIFで定義されているGPS情報に書きこんでくれるので可搬性がある。GMTEXIFのローカルタイムとの問題にもオプション(--timeoffset)で解決できる。対象のイメージファイルのリストをテキストファイルで用意して以下のように実行するだけ。

gpsPhoto.pl --timeoffset 28800 -I IMAGELIST --gpsfile hiking.gpx --maxtimediff 300

JPEGファイルのEXIF/GPSタグを埋めたという満足感はあるのですが、なにしろコマンドラインツール、地味です。やってみるとけっこう便利そうなツールがいろいろあるし、以前にも書きましたが$100程度で買える安価なGPSがあるので、GPS買いたくなってきました。