
ソニーのGPSユニットである、
GPS-CS1Kを購入しました。
スイッチを入れるだけで、延々と位置情報を記録してくれます。
デジカメが画像に書き出すEXIF情報の時刻とGPSのログを照合して画像のEXIFにGPS位置情報を記録し、EXIFのGPS情報に対応した地図ツールで画像を地図上に配置してみるというweb2.0的?使いかたもできるわけです。
さらにGPS-CS1KはUSBストレージに対応しているので、Linuxに接続するとマウントでき、ログファイルを読み出すことができます(MAC OS Xでは何故か認識されない)。さらに、ログ形式は
NMEA-0183という汎用のテキストフォーマットで記録されています。ソニーらしくない(笑)標準化対応した製品です。
でも、肝心のGPS情報を読み出して画像に書き込むソフトである、付属のGPS Image TrackerはWindowsソフトです。
私のメインの環境はLinuxなので、Linuxでできるようにしたい、ということで、perlのスクリプト
gpslog2exifを作成しました。
続きは本文で。
perlモジュールの準備
まず、以下のperlモジュールが必要になりますのでインストールしてください。
インストールはCPANから可能ですので、rootで
perl -MCPAN -e shell
でCPANのシェルを起動した後、「install ExifTool」「install DateTime」としてください。
ダウンロード
gpslog2exifからダウンロードしてください。
GPS-CS1Kのログの準備
GPS-CS1Kのログをリネームせずに一箇所のフォルダにまとめてコピーします。
gpslog2exifはこのフォルダにあるGPS-CS1Kのログから、最適なものを自動的に選択します。
画像の準備
EXIF情報の含まれた画像を用意します。念のためオリジナルをバックアップしておいてください。
実行
gpslog2exif.pl -d <ログファイル> <画像ファイル>...
と実行すると、画像の撮影日時からGPSログを検索し、画像が撮影される直前のGPS情報を記録します。
画像ファイルは複数指定可能です。
ログファイルのディレクトリは環境変数GPSLOGDIRに設定可能ですが、「-d」オプションの指定が優先されます。
GPS情報が画像の撮影日時より60秒以上(「-t」オプションで変更可)差がある場合は、そのGPS情報を画像に記録するかどうか聞いてきますので、y/nで答えてください。
既にGPS情報が記録されている画像に記録しようとした場合に、記録するかどうか聞いてきますので、y/nで答えてください。
最後にEXIF情報をファイルに書き込むかどうか聞いてきますので、y/nで答えてください。「-f」をつければ聞かずに書き込みます。
注意
画像の日付は日本時間を前提としていますので、カメラの時間は日本時間にあわせてください。(他のタイムゾーンには容易に対応できると思います)
あまり細かいエラー処理をしていないので、意図しない情報を画像に書き込む場合があります。
その他、利用は自己責任でお願いします。画像はあらかじめバックアップをとっておいてください。
コメントは投稿者の責任においてなされるものであり、サイト管理者は責任を負いません。