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

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

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

JPGGPSMODIFY/JPGGPSMAP for Widows(http://www.ksky.ne.jp/~yamama/jpggpsmap/manual.htm)


[ サンプル画像2 ]



ファイル先頭部の解析

先頭の256バイトです。



次の順で確認します。

●'Exif' 文字列の確認

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

●TIFF Header 確認

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

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

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

先頭2バイト−− 'II'(49H,49H,リトルエンディアン=インテル方式)
次の2バイト−− 2AH,00H (リトルエンディアン)
次の4バイト−− 最初のIFD へのポインタ(TIFF Header からのずれバイト数) 08H
本例では、IFD ポインタ値=08H ですが、実際には 08H + 0CH = 14H から実データがあります。

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

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

●GPS タグの有無チェック

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

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


GPS情報の取得

先頭から512バイト目からの304バイトです。
2A0H (=294H+0CH) バイト目からGPS データがあります。



次の順で確認します。

●南北

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

●緯度

タグ=02H のエントリでは、05H(LONG,分数)が指定されており、オフセット 02E2H なので、実アドレスは 02E2H + 0CH = 2EEH である。
2EEH からの実データは、 23H(=35), 01H, 029H(=41),01H,1720H (=5920),64H(=100)である。→ 35/1度41/1分5920/100秒 or 35度41分59.20秒

●東西

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

●経度

タグ=04H のエントリでは、05H(LONG,分数)が指定されており、オフセット 02FAH なので、実アドレスは 02FAH + 0CH = 306H である。
306H からの実データは、 8BH(=139), 01H, 2EH(=46),01H,0714H(=1812),64H(=100) である。→ 139/1度46/1分1812/100秒 or 139度46分18.12秒

●測地系

タグ=12H のエントリでは、02H(ASCII)の7バイトが指定されており、オフセット 0312H なので、実アドレスは 0312H + 0CH = 31EH である。
31EH からの実データは、 'WGS-84' の6文字+ヌルである。


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