中井技術工房 Jpeg-GPS 情報解析テク トップ > Exifテク トップ > ここ

GPS 情報取得例3
サンプル画像

次のところからピックアップしたサンプル画像から GPS 情報を取り出してみます。

知らないとヤバい!? 写真のExifから個人情報を守る方法まとめ!(http://photo-studio9.com/exif/)


[ サンプル画像3 ]



ファイル先頭部の解析

先頭の256バイトです。



次の順で確認します。

●'Exif' 文字列の確認

まず先頭部に 'Exif' という文字列をチェックします。(ないかもしれない?)

●TIFF Header 確認

その後に TIFF Header があることを確認します。ない画像もあり、なければ GPS 情報もありません。

この先頭アドレス(本例では 0C H)がオフセット補正量になり、指定オフセット量はこの分だけ加えて絶対位置を計算しなければなりません。

TIFF Headerは8バイト構成でつぎのようになっています。

先頭2バイト−− 'MM' (4DH,4DH,ビッグエンディアン=モトローラ方式)
次の2バイト−− 00,2AH (ビッグエンディアン)で固定。
次の4バイト−− 最初のIFD へのポインタ(TIFF Header からのずれバイト数) 08H
本例では、IFD ポインタ値=08H ですが、実際には 08H + 0CH = 14H から実データがあります。

●0th IFD = Primary IFD データのチェック

エントリ先頭は 14Hで、ここからが IFD です。

●GPS タグの有無チェック

上のエントリ表の中に GPSタグ があることを確認する。(なければ GPS 情報はありません)

GPS タグの 8825H(ビッグエンディアン)の有無をチェックする。
D6H から該当データの12バイトがあり、そのエントリの最終4バイトがGPS IFD へのオフセット(上例では 12DCH)を取得する。


GPS情報の取得

先頭から12E0Hバイト目からの256バイトです。
12E8H (=12DCH+0CH) バイト目からGPS データがあります。



次の順で確認します。

●南北

タグ=01H のエントリでは、02H(ASCII 文字)の2バイトが指定されており、4FH='N'+ヌル がある。つまり北緯である。

●緯度

タグ=02H のエントリでは、05H(LONG,分数)が指定されており、オフセット 1312H なので、実アドレスは 1312H + 0CH = 131EH である。
131EH からの実データは、 23H(=35), 01H, 077EH(=1912),64H(=100),00H,01Hである。→ 35/1度1912/100分 or 35度19.12秒 or 35度19分10.8秒

●東西

タグ=03H のエントリでは、02H(ASCII 文字)の2バイトが指定されており、45H='E' +ヌルがある。つまり東経である。

●経度

タグ=04H のエントリでは、05H(LONG,分数)が指定されており、オフセット 132AH なので、実アドレスは 132AH + 0CH = 1336H である。
1336H からの実データは、 8BH(=139), 01H, 0CD6H(=3286),64H(=100),00H,01H である。→ 139/1度3286/100秒 or 139度32.86秒 or 139度32分51.6秒


トップ > Exifテク トップ> 頁トップ