【目次】

【はじめに】

KMZ 形式(Google Earth 形式)で保存されている GPS 軌跡データを、ITM 形式(GPS Photo Tagger 他の形式)に変換するツール、kmz2itm を作成する過程で、ITM 形式について調査を行ったので、その内容を整理してまとめておく。

※内容は不完全で、不明な点も多いので、間違いや補足ございましたら、メールやコメント等でご連絡いただけると幸いです。

【ITM 形式を用いているアプリケーション】

ITM 形式はいくつかのアプリケーションで使われている。どのアプリケーションも画面が似ており、iTravel-Tech 社の OEM と思われる。現時点で、ITM 形式を使っていることが確認できているアプリケーションは以下。アプリケーションが対応している GPS 機器も併記しておく。
  • GPSPhotoTaggerGPS Photo Tagger
    • CanMore Electronics……GT-730FL-S、GP-101
    • Transystem……747Pro、747ProS、PhotoMate887、860E、TripMate850、TripMate852

  • ezTourezTour
    • Holux……M-241

  • ATLASTOURATLASTOUR
    • ユピテル……ASG-CM11、ASG-1、ASG-2、AL20

ITM 形式の調査は、GPS Photo Tagger(Ver 1.2.4)で取り込んだ GT-730FS-S の軌跡において行っている。GPS Photo Tagger で保存した ITM ファイルを、他のアプリケーションからも読み込めたので、基本的には同じフォーマットと思われるが、一部のデータが異なる可能性はある。

【ITM 形式の概要】

ITM 形式は、ファイル形式としては ZIP 形式である。拡張子を .zip に変更して解凍すると、以下の内容が得られる。
  • attachfile(フォルダ)
  • icon(フォルダ)
  • imagegrid(フォルダ)
  • ituser.itx
  • ituser.poi
このうち、軌跡データが保存されているのは ituser.poi である。

【ituser.poi の概要】

ituser.poi は SQLite3 のデータベースファイルである。PupSQLiteSQLite Database Browser などの SQLite ツールで内容を確認することができる。

ituser.poi には以下のテーブル(全 20 個)が含まれている。
  • IT_TGVLib……目次のようなテーブル。他のテーブルに格納されているデータの情報が格納されている。
  • GPSLog……測定点データ。測定時刻と、速度を保持している。
  • WP……測定点データ。緯度・経度・高度を保持すると共に、測定点を軌跡として繋げるための情報も保持している。
  • Line……軌跡データ。軌跡名、開始地点、終了地点を保持している。
  • VStyle……軌跡線のスタイル情報。線の太さ、色など。
  • VSTag……軌跡線に関するデータと思われるが、詳細不明。
  • CP……詳細不明。
  • FileD……詳細不明。
  • FTag……詳細不明。
  • Map……詳細不明。
  • NTag……詳細不明。
  • POI……詳細不明。
  • PropDouble……詳細不明。
  • PropInt……詳細不明。
  • PropText……詳細不明。
  • TagD……詳細不明。
  • TypeD……詳細不明。
  • Val……詳細不明。
  • ValD……詳細不明。
  • VP……詳細不明。

【IT_TGVLib】

IT_TGVLibIT_TGVLib は、他のテーブルに格納されているデータについての情報を保持している。目次のようなテーブル。

全部で 20 行のデータがあり、各行が 1 つずつテーブルに対応している。

列は以下。
  • fUserType……連番。
  • fDBType……不明。
  • fObjNo……テーブルに格納されているレコードの数(行数)。
  • fObjFreeNo……テーブルに格納されているレコードのうち、削除フラグが付いているレコードの数。GPS Photo Tagger は、基本的にデータを削除せず、代わりに、削除フラグを付けて削除したことにしている。例えば、右の画面の 11 行目では、fObjNo が 10777、fObjFreeNo が 10400 なので、WP テーブルの有効レコード数は差し引き 377 ということになる。
  • fTypeName……対象となるテーブル名。

【GPSLog】

測定点 1 つ 1 つに関する情報を保持するテーブルその 1。各測定点の測定時刻と、測定時の速度を保持している。
  • fID……連番。
  • fZero……有効なレコードの場合は 0、無効なレコードの場合は 1。GPS Photo Tagger では、データを削除する際、レコードを削除するのではなく、fZero に 1 を立てて削除したことにしている。
  • fGPSTime1、fGPSTime2……測定時の時刻。具体的なフォーマットは不明。
  • fGPSSpeed……測定時の速度 [km/h]。
  • fGSensorX、fGSensorY、fGSensorZ……名前からして加速度センサーの値を保持するためのフィールドと思われるが、GT-730FL-S による測定においてはすべて 0 となっている。

【WP】

測定点 1 つ 1 つに関する情報を保持するテーブルその 2。緯度・経度・高度を保持すると共に、測定点を軌跡として繋げるための情報も保持している。テーブル名は Way Point(軌跡)の略と思われる。
  • fID、fZero は GPSLog と同様。
  • fParentID……軌跡線番号(Line テーブルの fID)。fParentID が同じ軌跡同士で、1 つの軌跡線を形成している。
  • fNextID……軌跡上で次の測定点が何番の fID かを示す。通常は fID+1。軌跡上、最後の点の場合は、fNextID が 0 となる。
  • fGPSLogID……対応する GPSLog テーブルのデータを示す。通常は fID と等しい。
  • fMapID……マップ番号(Map テーブルの fID)。通常は 1。
  • fPosX、fPosY……不明。通常 -1。
  • fLongitude、fLatitude、fAltitude……経度、緯度、高度。
  • fOrder……不明。通常 0。
  • fTemprature……名前からして温度と思われるが、GT-730FL-S による測定においてはすべて 0 となっている。
  • fMBar、fBPM、fRPM……不明。通常 0。


【Line】

軌跡線データ。軌跡名、開始地点、終了地点を保持している。

  • fID、fZero、fMapID はこれまでと同様。
  • fName……GPS Photo Tagger で表示される軌跡名。
  • fTypeID……不明。通常 2。
  • fIsGroup、fParentID、fVIID、fStartID、fEndID……不明。通常 0。
  • f1stWPID……軌跡の開始点を示す。WP テーブルの fID。
  • fLstWPID……軌跡の終了点を示す。WP テーブルの fID。


【VStyle】

軌跡線のスタイル情報。線の太さ、色などを保持している。

  • fID、fZero はこれまでと同様。
  • fName……スタイルの名前と思われるが、どこにも表示されない模様。
  • fVSDefineType……不明。通常 11。
  • fVSStyleType、fVSPattern……不明。通常 0。
  • fVSWidth……線の太さ。
  • fVSHeight……不明。通常 0。
  • fVSFColor、fVSBColor、fVSOColor……線の色を指定していると思われるが、具体的なフォーマットは不明。
  • fVSFontSize……不明。通常 0。
  • fVSFontName、fVSPatternName、fVSIconName……不明。通常 NULL。


【VSTag】

軌跡線に関するデータと思われる。

  • fID、fZero はこれまでと同様。
  • fStartType……不明。通常 11。
  • fStartID……不明。通常 fID と等しい。
  • fEndType……不明。通常 18。
  • fEndID……不明。通常 fID と等しい。


【PropInt】

存在意義が不明だが、軌跡線の測定開始時刻を保持しているようだ。

2 レコードが 1 セットとなっており(従って、レコード数は軌跡線の数×2 となる)、1 レコード目が GPSLog の fGPSTime1、2 レコード目が GPSLog の fGPSTime2 を保持している。
  • fID、fZero はこれまでと同様。
  • fName……1 レコード目が 't1'、2 レコード目が 't2'。
  • fObjType……不明。通常 11。
  • fObjID……Line テーブルの fID。1 レコード目の fObjID と 2 レコード目の fObjID は等しい。
  • fUserFlag……不明。通常 0。
  • fValue……1 レコード目が fGPSTime1、2 レコード目が fGPSTime2。

【軌跡線取得方法】

軌跡線を取得するには、以下の流れでデータを検索するとよい。
  • Line テーブルのレコードのうち、fZero が 0 のレコードを取得
  • そのレコードの f1stWPID を取得
  • WP テーブルのレコードのうち、fID が f1stWPID と等しいレコードを取得→軌跡開始点
  • そのレコードの fGPSLogID を取得
  • GPSLog テーブルのレコードのうち、fID が fGPSLogID と等しいレコードを取得→軌跡開始点の追加情報
  • WP テーブルのレコードから fNextID を取得
  • WP テーブルのレコードのうち、fID が fNextID と等しいレコードを取得→次の測定点
  • このように、次の測定点を次々とたどっていく
  • fNextID が 0 になったら軌跡終了

≪GPS 関連の記事一覧≫