GPSログデータコンバータ

Last Update May 24, 1999
V0.21/V0.31/V0.21


変更履歴
24-May-1999 nyp2trk 0.21 nypファイルに含まれるトラックデータを時間順にソートして出力するよう変更。
19-Apr-1999 trk2txt/txt2tr/nme2trk 0.31 西経、南緯対応
trk2log 0.21 西経、南緯対応
19-Mar-1999 trk2txt V0.3 NMEA->.TRK変換。ワイルドカード使用時にもロングファイル名が有効に。
trk2log V0.2a ワイルドカード使用時にもロングファイル名が有効に。
お断り
このアーカイブは必要に応じてその場しのぎででっちあげたプログラムを収めた物です。最初からきちんと計画的に作られたものではないため、操作や動作の統一性は期待しないでください。

作りかけで止まっていますがサポートフォーマットを大幅に増やしたGPSLogCvというプログラムのβ版が掲示板にあります。

特に理由がなければGPSLogCvの方を使ってください。2001/08/14追記


ny2tk032.zip 169KB


GPSで取得できるデータと各フォーマットの関係

時刻 緯度/経度 高度 速度 測位状態 移動方向 スレッド マップマッチ
補正
情報 1次情報 1次情報 1次情報
但し、地を這う乗り物ならその地点の標高として求められる。
(例えばKashmirで可能)
1次情報
ドップラーシフトによる。
位置情報から計算する場合は2次情報。
1次情報 2次情報。
但し、GPSは出力するのが普通。
2次情報 2次情報
.TRK ○UTC × × × ---
.NYP
.
△IPS系GPSを使った場合バグあり。
マップマッチする/しないによってかわる。
× × 解析中
.TXT ○UTC × × × × ---
.NME ○UTC -- ---

ここで二次情報は一次情報から求められる情報という意味です。

各種ログフォーマットと変換プログラム

.TRK .NYP . (DriveLog) .TXT .LOG .TRK(MP2) .NME
Garmin PCX5
Kashmir
Navin' You
パッケージ
Navin' You
DriveLog
Waypoint+
Kashmir(R/O)
Pro Atlas MapFanII NMEA
.TRK -------- trk2drlgで
DriveLogに変換後、
Navin'You
trk2drlg txt2trk -T
or
trk2txt
trk2log trk2txt
|txt2mtk
N/A
.NYP nyp2trk ------ Navin'You nyp2trk -T nyp2trk
|trk2log
nyp2trk -T
|txt2mtk
N/A
. nyp2trk Navin'You -------- nyp2trk -T nyp2trk
|trk2log
nyp2trk -T
|txt2mtk
N/A
.TXT txt2trk
or
trk2txt -p
txt2trk|trk2drlgで
DriveLogに変換後、
Navin'You
txt2trk
|trk2drlg
------- txt2trk
|trk2log
txt2mtk N/A
.LOG N/A N/A N/A N/A ------- N/A N/A
.TRK(MP2) N/A N/A N/A N/A N/A --------- N/A
.NME nme2trk nme2trk|trk2drlgで
DriveLogに変換後、
Navin'You
nme2trk
|trk2drlg
nme2trk
|trk2txt
nme2trk
|trk2log
nme2trk
|trk2txt
|txt2mtk
-----

変換プログラムの機能一覧

プログラム 入力データ < File Cordinate Datum 出力データ > File Cordinate Datum
nyp2trk Navin'You - NYP
DriveLog
(Tokyo) WayPoint+ .TXT DMS same
(Tokyo)
PCX5 .TRK
trk2drlg PCX5 .TRK - DEG/DM/DMS All Navin'You N/A same same
trk2txt PCX5 .TRK DEG/DM/DMS WGS84/Tokyo WayPoint+ .TXT same same
txt2trk WayPoint+ .TXT PCX5 .TRK
nme2trk NMEAキャプチャー DM
trk2log PCX5 .TRK DEG/DM/DMS WGS84/Tokyo Atlas .LOG DMS Tokyo
txt2mtk WayPoint+ .TXT MapFanII .TRK(MTK) DEG256 Tokyo

扱えるファイル

.TRK
Garminの標準ソフト、PCX5の形式。KashMirでも読み書きできます。Kashmirで読み書きを行うとその地点の標高が高度として記録される、Navin'Youからnyp2trkで変換すると"渋谷-東京"と言った具合にラベルが付くのでこのフォーマットがお勧めです。

(無し)
Sony Navin' Youの走行パスファイル。Navin' YouのDriveLogディレクトリの下にある拡張子の無いファイルです。
.NYP
Sony Navin'Youのパッケージファイル。扱えるのは走行パスだけです。.TRK, .TXTに変換出来ます。
.TXT
有名なGarmin用フリーウェア、Waypoint+のテキスト形式。(Waypoint+の独自形式は扱えません)
.LOG
ProAtlas GPSドライバのログ形式。GPSドライバのログ再生で地図上に表示できます。ただし、ログ再生ですので、結構、時間がかかります。また、表示できるポイントに制限があるのであらかじめ間引いておくと良いでしょう。
.TRK(2)
MapFanIIのログフォーマット。ProAtlasと同じくログ再生なので制約があります。ポイント数が750と少ないので間引きは必須でしょう。PCX5の.TRKと混同しないようmtkと呼んでいますが実際には.TRKにしておかないと使えません。
.NME
NMEAフォーマットの出力をキャプチャーしたもの。

プログラム


nyp2trk/txt
 Navin'YouのDriveLogディレクトリの下にある走行ログまたはNavin'Youの.NYPファイルに含まれる走行ログをPCX5のTRK形式またはWaypoint+のテキスト形式に変換する。出力はDatum:Tokyo, format:DMSになります。異常データのスキップ、一定距離以下のデータのスキップなどの機能も持っています。
NYPファイルの中に複数のデータがある場合、総て変換します。この時、出力ファイル名に日付、走行パス、範囲を指定した場合はデータごとに別ファイルになります。
3秒を越えるデータの中断があった場合、そのデータをスレッドの最初のデータとします。
trk2drlg
Garmin PCX5の.TRK形式トラックデータをNavin' YouのDriveLogフォーマットに変換し、DriveLog.idxに登録してNavin' Youで走行パスとして扱えるようにします。入力Datumは.TRKで扱えるもの総て、FormatはDEG,DM,DMSが扱えます。(Datum変換、Format変換、二点間距離、速度、進行方向計算ルーチンを持っています。)
txt2trk
Waypoint+のテキスト形式トラックデータをGarmin PCX5の.trk形式に変換するフィルタ。逆変換もできます。DatumはTokyoとWGS84、FormatはDEG,DM,DMSを扱えます。ただし、入力と出力のDatum,Formatは同じになります。(Datum,formatの変換機能はありません。)
trk2txt
Garmin PCX5の.trk形式をWaypoint+のテキスト形式トラックデータに変換するフィルタ。逆変換もできます。DatumはTokyoとWGS84、FormatはDEG,DM,DMSを扱えます。ただし、入力と出力のDatum,Formatは同じになります。(Datum,formatの変換機能はありません。)
nme2trk
NMEAログをGarmin PCX5の.trk形式に変換するフィルタ。


*trk2txt/txt2trk/nme2trkはファイル名以外は全く同じ物で自分のファイル名で動作を切り替えています。アーカイブに入っているtrk2txt.exeをそれぞれの名前に必要に応じてコピーしてください。なお、名前に拠らず-T指定でtrk2txt、-P指定でtxt2trk、入力ファイルの拡張子が.TRKの時、trk2txt, .TXTの時txt2trk,.NMEの時、nmea2txtとして動作します。

trk2log
Garmin PCX5の.TRK形式トラックデータ(Datum:Tokyo/WGS84, format:DEG,DM,DMS)をAtlasRDの.log形式に変換するフィルタ。一定距離以下のデータをスキップして間引く機能も持っています。(Datum変換、Format変換ルーチンを持っています。)
txt2mtk
Waypoint+のテキスト形式トラックデータ(Datum:Tokyo, format:DEG,DM,DMS)をMapFanIIのログ形式に変換するフィルタ。間一定距離以下のデータをスキップして間引く機能も持っています。(Datum変換、Format変換ルーチンを持っています。) MapFanIIの制限より750点で変換を打ち切ります。

*trk2logとtxt2mtkはファイル名以外は全く同じ物で自分のファイル名で動作を切り替えています。アーカイブに入っているtrk2log.exeをそれぞれの名前に必要に応じてコピーしてください。なお、名前に拠らず-P指定でtrk2log、-T指定でtxt2mtk、入力ファイルの拡張子が.TRKの時、trk2log, .TXTの時txt2mtk,として動作します。


オプション

nyp2trk trk2drlg txt2trk
trk2txt
nme2trk
trk2log
txt2mtk
日付補正 -A Navin' YouでIPS系GPSを使用した場合の日付bug補正
0 自動(デフォルト) N/A
1 若い日付(IPSのとき。-A0より早くなります。)
2 後の日付
N 無補正(Mobile packのとき。-A0より早くなります)
データの間引き -D dddd dddd[m]以上離れた点のみ処理します。(デフォルト:0) - -
出力先 -F stdoutに出力します。 N/A
異常値の処理 -S xxxx 16進数xxxxでデータをスキップする異常の種類を指定します(デフォルト:fffe)
スキップした次のデータをスレッドの最初のデータとします。

002 同一時間のデータ。
010 不正な時間データ。
020 時間を遡るデータ。
040 北緯20度-48度の範囲外。
080 緯度方向の移動速度が秒速1Kmを越えるデータ。
100 東経120度-150度の範囲外。
200 経度方向の移動速度が秒速1Kmを越えるデータ。

デフォルトはfffeです。0に設定すると総てのデータがファイルに出力されますが異常値をはねなかった場合、正常な動作は保証出来なくなります。
N/A
-W xxxx 16進数xxxxでデータをスキップした場合に警告を出す異常の種類を指定します(デフォルト:fffc、同一時間データのスキップ以外すべての警告を出します。)
値の意味は上記-Sと同じです。-W0で一切の警告が出なくなります。
出力形式 -P PCX5 .TRK形式で出力します。(デフォルト) ○(除くnme2trk)
-T Waypoint+ .TXT形式で出力します。 ○(除くnme2trk)
処理 -L 情報一覧のみ表示します。
出力ファイル -N 出力ファイル名を指定します。
0 入力ファイル名+出力拡張子(デフォルト) N/A
D 日付_時刻をファイル名にします。複数のパスが含まれている場合はひとつずつ別のファイルになります。
C ログ範囲をファイル名にします
P 走行パス名をファイル名にします
-O 出力するファイルと同名のファイルがある場合の処理。変換したデータと勘違いして掛け替えの無いダウンロードしたGPSデータを削除しないよう注意してください。
N 上書きしません。 N/A
Q 問い合わせます。(デフォルト)
'A'を指定するとそれ以降、すべて上書きされます。'R'を指定するとそれ以降-ORと同じ動作。
R 末尾に_nnを付けたファイル名にrenameします。
F 上書きします。
-U 出力ファイルのタイムスタンプを最終レコードの日付と同じにします。 -
補助データ -M map 地図データ名を指定します。 N/A N/A
-H path 走行パス名を指定します。
-Q Pauseしない。 - - -
-I dir DriveLog.idxのあるディレクトリを指定する。
指定が無い場合、入力ファイルのあるディレクトリ、実行ファイルのあるディレクトリの順に探します。
N/A N/A


nyp2trk

拡張子の無いNavin' YouのDriveLogディレクトリの下のファイルをドロップすると.TRKのファイルを作ります。
拡張子が.NYPのファイルをドロップすると.TRKのファイルを作ります。

コマンドラインSyntax:

nyp2trk [<オプション>] <ファイル名(ワイルドカード可)>

使用例

全てのnypファイルを.TRK形式に変換します。
nyp2trk *.nyp

nypファイル内の走行パス一覧を表示します。
nyp2trk -L *.nyp

nypファイル内の走行パス一覧をファイルにとります。
nyp2trk -L *.nyp >list.txt

IPS系GPSで記録したnypファイル内の走行パスをAtlasRDのログ形式に
変換します。日付補正リトライ禁止のために-A2を指定しています。
nyp2trk -T -F -A2 *.nyp | txt2log >990206.LOG

==========================================
IPSフォーマットGPS使用時の日付補正について
==========================================
Navin'Youが時間変換関数を使うときにはtm_mon=月-1としなければいけないところをtm_mon=月でやってしまっているため変換が必要でしかもその変換が一部不可逆になっているという問題があります。

変換が不可逆な日付(渡されるパラメータ)->正規化された日付の表を作ってみました。

=====
95/01/29(95/02/29)->95/03/01
95/01/30(95/02/30)->95/03/02
95/01/31(95/02/31)->95/03/03
----
95/02/01(95/03/01)->95/03/01
95/02/02(95/03/02)->95/03/02
95/02/03(95/03/03)->95/03/03
=====
95/03/31(95/04/31)->95/05/01
----
95/04/01(95/05/01)->95/05/01
=====
95/05/31(95/06/31)->95/07/01
----
95/06/01(95/07/01)->95/07/01
=====
95/08/31(95/09/31)->95/10/01
----
95/09/01(95/10/01)->95/10/01
=====
95/10/31(95/11/31)->95/12/01
----
95/11/01(95/12/01)->95/12/01
=====

例えば、95/10/31でも、95/11/01でも95/12/01と記録されてしまうので95/12/01が本当はどちらの日付かというのはこれだけでは分かりません。

こういう日付が一年で7つあるわけです。

なお、うるう年の時は、
===
96/01/30(96/02/30)->96/03/01
96/01/31(96/02/31)->96/03/02
----
96/02/01(96/03/01)->96/03/01
96/02/02(96/03/02)->96/03/02

となるので6つに減ります。

これではお手上げのように思えますがNavin'youは最終書き込み日付も記録しているのでこれと突き合わせればなんとかならないこともありません。しかし、ログがどちらか分からない日付を跨っている場合も有り得るので、あまりうまい手がありません。ちょっと泥臭いですが一つずつ条件を変えて試すことにしました。

1)最初、どちらか分からない日付は前の月になるよう設定。
2)レコードを手繰っていって、途中で1日以上日付が戻ったら、どちらか分からない日付は次の月に属するように設定してやり直してみます。うまく辻褄が合えばそのまま続けます。
3)最後のレコードの日付とNavin'Youのディレクトリが持っている日付を比較してほぼ一致していればOK。
4)一致しないようならどちらか分からない日付は後の月になるように設定して2)からやり直し。

もちろん、完全ではありませんが大抵の場合はこれで問題無いと思います。


trk2drlg

.TRKファイルをドロップすると拡張子の無いNavin' Youファイルを作りDriveLog.idxに登録します。

使い方:
Navin' YouのDriveLogディレクトリ、例えば、"C:\Program files\Sony\Navin' You\DriveLog"にtrk2drlg.exeをコピーする。(ショートカットでは駄目です)

まず、Navin' Youが動いていないことを確認してください。変換したい.TRKファイルを選択してコピーしたtrk2drlg.exeもしくはそのショートカットにドロップする。変換後、<Return>を押して情報表示を閉じる。
Navin' Youを起動して走行パス一覧で変換した走行パスを選択する。

Syntax:
trk2drlg [options] yymmdd0.trk yymmdd1.trk ...

-M地図データ名
地図データ名を指定します。省略すると"Super全国版III"になります。
-Q
終了時の確認メッセージを出しません。
-Iディレクトリ
DriveLog.idxファイルのあるディレクトリを指定します。省略時はカレントディレクトリ、実行ファイルのあるディレクトリを順に探し、DriveLog.idxが見つかったディレクトリを使用します。
-U
作成したファイルの日付を最終レコードと同じにします。
-H走行パス名
H xx〜xx"('〜'を含んでいるもの)を走行パス名として使用します。ただし、実際のトラックデータより前にあるもののみ有効です。後にしかないもしくは、全く無い場合は"A〜B"になります。変換後、Navin'YouでA〜B"を右クリックして名前の変更を選ぶことで、適当な名前に変更できます。

使用例
.TRKファイルをNavin' Youの走行経路に登録する。
trk2drlg -H大宮〜茂木 -MSuper全国版III -U -I"C:\Program files\Sony\Navin' You\DriveLog" *.TRK

ヒント:
実行ファイルをDriveLogディレクトリに置いておけば.TRKファイルをその上にドロップするだけで使えます。
一々、オプションを打つのが面倒な場合、バッチファイルを作成して、そこに記述しておけばその上にドロップするだけで実行できます。

注意:
ファイルの拡張子は必ず".TRK"で無ければいけません。これは複数のファイルをまとめてドロップした時などに.TRK形式以外のファイルが混じりエラーになるのを予防するためです。

一時にたくさんのファイルをまとめてドロップするとエラーになることがあります。その場合は少しずつ分けてドロップしてください。

問題が起こった事はありませんが、一応、DriveLog.idxのbackupを取ってから試した方が良いかも知れません。

ディレクトリ名を指定するとき"Navin'you"ではなくて"Navin' You"とスペースが入っていることに注意してください。

DriveLog.idxが全く無い場合は動作しません。添付のdummy.idxをDriveLog.idxにrenameしてお使いください。

.TRKファイルにDatumの指定がないときは"Tokyo"として扱います。
.TRKファイルにCordinateの指定がない場合は"DEG"として扱います。

-Tによる指定は直後の1ファイルにのみ有効です。複数指定したり、ワイルドカードを使った場合、残りのファイルは総べて.TRKの記述もしくはそれがない場合"A〜B"になります。

制限:
速度、進行方向は緯度/経度データから計算しています。そのため、最初の一点は必ず速度0に、進行方向は真北になります。

.TRKファイルのデータチェックは行っていません。

日本国外で取得したデータには対応していません。Navin' Youでも表示出来ないはずなので問題ないでしょう。


txt2trk/trk2txt/nme2trk

*この3っつは名前が違うだけで、全く同じ物です。
名前によってデフォルトの動作が変わります。

拡張子が.TRKのファイルをドロップすると.TXTのファイルを作ります。
拡張子が.TXTのファイルをドロップすると.TRKのファイルを作ります。
拡張子が.NMEのファイルをドロップすると.TRKのファイルを作ります。


使用例
trk2txt *.trk
trk2txt *.txt
trk2txt *.nme
trk2txt <yymmdd.trk >yymmdd.txt
txt2trk <yymmdd.txt >yymmdd.trk
trk2txt -F yymmdd.trk >yymmdd.txt
nme2trk <yymmdd.nme >yymmdd.trk


trk2log/txt2mtk

*この二つは名前が違うだけで、全く同じ物です。
名前によってデフォルトの動作が変わります。

拡張子が.TRKのファイルをドロップすると.LOGファイルを作ります。
拡張子が.TXTのファイルをドロップすると.MTKのファイルを作ります。

コマンドライン使用例

総ての.TRKファイルから.LOGファイルを作成する。
trk2log *.TRK

総ての.TRKファイルから.LOGファイルを作成する。50m以上離れている点のみ変換する。
trk2log -D50 *.TRK

フィルタ使用例
trk2log <yymmdd.trk >yymmdd.log

使用例
txt2mtk *.TXT
txt2mtk -D50 <yymmdd.trk >yymmdd.log
txt2mtk yymmdd.txt


----
謝辞
----

calc_traceは見習い魔術士さんのmergenypから抜き出してアレンジしたものです。

----
献辞
----
本物の次世代、天平と七海に。

------
その他
------
このプログラムの改良、一部の関数の流用は、その旨、明記されていれば自由です。ただし、もちろん無保証です。

mailto:imaizumi@nisiq.net
http://wwww.os.rim.or.jp/~gigo/


[Home]|[GPSとH8(電子工作)の掲示板]