サイバーナビの地点データ構造

イオニアサイバーナビ AVIC-H9は登録地のデータをPCカードからメモリーカードに保存できる。このデータはNAVIDATAフォルダのPOINTフォルダ内に拡張子が.V02のファイルとして保存されている。グループ単位で保存してもファイルサイズは67,796バイト(67KB)で固定の模様。
中を見てみると結構単純なフォーマットだったので、登録地の名称と位置のデータがある場所なんかを調べてみた。手前にはFATのようなテーブルが、後ろには、よみ、電話番号、マーク、画像、効果音、方向、探索条件、グループなどの情報が同様な形式で続いているっぽい。このデータ構造はAVIC-H99でも同様な模様。

+00348〜025A7 44バイト×200件 名称(全角20文字まで、シフトJIS、末尾は00で埋める)
+025A8〜02BE7  8バイト×200件 位置(東経4バイト、北緯4バイト、00で埋めると未使用)

東経(経度)及び北緯(緯度)のデータは2バイト目〜4バイト目を逆順に並べた16進数を3600で割ると「度」、その余りを60で割ると「分」、その余りが「秒」となり、1バイト目を256で割ったものが「秒」の小数点以下を表す。
例えば、位置のデータとして「E6 7F 78 07 19 30 EC 01」が入っていた場合、「E6 7F 78 07」が東経を表し、「19 30 EC 01」が北緯を表す。
東経から見てみると2バイト目から4バイト目の「7F 78 07」が16進数「07787F」、これを10進数に直すと「489599」、これを3600で割ると「135」で余りは3599、これを60で割ると「59」で余りは「59」、この時点で東経135度59分59秒まで判る。残りは1バイト目の「E6」を10進数に直した「230」を256で割った「0.8984375」を先ほどの結果に加えれば、東経135度59分59.8984375秒(実際は小数点以下の適当なところで四捨五入する)になる。
同様に北緯も2バイト目からの「30 EC 01」が16進数「01EC30」、つまり10進数で「126000」なので3600で割ると「35」で余りは「0」、これを60で割ると「0」で余りは「0」なので、この時点で北緯35度0分0秒まで判り、1バイト目の「19」を10進数に直した「25」を256で割った「0.09765625」を先ほどの結果に加えた北緯35度0分0.09765625秒を表すことになる。
AVIC-H9で電話番号から探す際に緯度、経度の入力にすると、小数点以下1桁までしか入力できないので実際は東経135度59分59.9秒、北緯35度0分0.1秒ということになる。
位置は日本測地系なので、生活地図サイト MapFan Webならば、
http://www.mapfan.com/index.cgi?MAP=E135.0.0.0N35.0.0.0
で、いつもガイド - ゼンリンの詳しい地図サイトならば、
http://www.its-mo.com/z.htm?m=E135.00.00.0N35.00.00.00
で、Yahoo!地図情報ならば、
http://map.yahoo.co.jp/pl?lat=35.00.00.000&lon=135.00.00.000
で、東経135度0分0.0秒、北緯35度0分0.0秒の地図を表示できる。