撮影した写真への位置情報の書き込みにいつもは GPSロガーで記録したGPSログを使い,gpscorrelateコマンドを利用しています.
以下のスライドは2008年のものですが現在もそのままの手順で埋め込んでいます.
建物内などに入ったときなどGPSログが取れないので埋め込みも出来ていませんでした.でも今回建物内で撮影したのが分かっている写真にその場所の位置情報を埋め込みたいと思いました.
gpscorrelateコマンドのマニュアルを見た感じそれらしいオプションは見当たりませんでした.ダミーのGPSログを書くとかもちょっと考えたのですが,exiv2コマンドで座標指定でいけるのではとmanを見ると行けそうです.
exiv2 -M"set Exif.GPSInfo.GPSLatitude 4/1 15/1 33/1" \ -M"set Exif.GPSInfo.GPSLatitudeRef N" image.jpg Sets the latitude to 4 degrees, 15 minutes and 33 seconds north. The Exif standard stipulates that the GPS‐ Latitude tag consists of three Rational numbers for the degrees, minutes and seconds of the latitude and GPS‐ LatitudeRef contains either 'N' or 'S' for north or south latitude respectively.
しかし座標の度分秒変換が必要でちょっとめんどうです.
ExifToolを見ると変換なしで行けそうなのでこれで試してみました.(-geotag optionでgpscorrelateと同じこともできそう)
-geotag TRKFILE Geotag images from the specified GPS track log file. Using the -geotag option is equivalent to writing a value to the "Geotag" tag. After the -geotag option has been specified, the value of the "Geotime" tag is written to define a date/time for the position interpolation. If "Geotime" is not specified, the value is copied from "DateTimeOriginal#" (the "#" is added to copy the unformatted value, avoiding potential conflicts with the -d option). For example, the following two commands are equivalent: exiftool -geotag trk.log image.jpg exiftool -geotag trk.log "-Geotime<DateTimeOriginal#" image.jpg When the "Geotime" value is converted to UTC, the local system timezone is assumed unless the date/time value contains a timezone. Writing "Geotime" causes the following tags to be written (provided they can be calculated from the track log, and they are supported by the destination metadata format): GPSLatitude, GPSLatitudeRef, GPSLongitude, GPSLongitudeRef, GPSAltitude, GPSAltitudeRef, GPSDateStamp, GPSTimeStamp, GPSDateTime, GPSTrack, GPSTrackRef, GPSSpeed, GPSSpeedRef, GPSImgDirection, GPSImgDirectionRef, GPSPitch and GPSRoll. By default, tags are created in EXIF, and updated in XMP only if they already exist. However, "EXIF:Geotime" or "XMP:Geotime" may be specified to write only EXIF or XMP tags respectively. Note that GPSPitch and GPSRoll are non-standard, and require user-defined tags in order to be written.
すでに埋め込み済みのジオタグを参考にして,
$ exiftool -v IMGP5011.JPG|grep GPS | 12) GPSInfo (SubDirectory) --> | + [GPS directory with 11 entries] | | 0) GPSVersionID = 2 0 0 0 | | Warning = Tag ID 0x0000 out of sequence in GPS | | 1) GPSVersionID = 2 3 0 0 | | 2) GPSLatitudeRef = N | | 3) GPSLatitude = 31 19 18.23 (31/1 19/1 1823/100) | | 4) GPSLongitudeRef = E | | 5) GPSLongitude = 130 53 57.6 (130/1 53/1 5760/100) | | 6) GPSAltitudeRef = 0 | | 7) GPSAltitude = 7.8833 (78833/10000) | | 8) GPSTimeStamp = 7 10 37 (7/1 10/1 37/1) | | 9) GPSMapDatum = WGS-84 | | 10) GPSDateStamp = 2018:01:13
こんな感じかな?
- GPSLongitudeRef=E -> 東経, 西経
- GPSLongitude=130.86455555555557 -> 経度
- GPSLatitudeRef=N -> 北緯, 南緯
- GPSLatitude=31.386555555555553 -> 緯度
- GPSAltitude=41.47 -> 海抜標高
実際にExifToolで埋め込んでみました.
$ exiftool -GPSLongitudeRef=E -GPSLongitude=130.86455555555557 -GPSLatitudeRef=N -GPSLatitude=31.386555555555553 -GPSAltitude=41.47 IMGP5021.JPG
座標系がないとまずいかなと思いましたがJOSMやGpsPruneにこの写真を読み込んでみると想定していた座標にプロットされました :)
exiftoolは既定値ではIMGP5021.JPG_original
のようにオリジナルファイルのバックアップが作成されるので 問題なかったらこれは消しておきましょう.
$ rm *_original