GPSログデータコンバータ
Last Update May 24, 1999
V0.21/V0.31/V0.21
作りかけで止まっていますがサポートフォーマットを大幅に増やした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で変換すると"渋谷-東京"と言った具合にラベルが付くのでこのフォーマットがお勧めです。
プログラム
*trk2txt/txt2trk/nme2trkはファイル名以外は全く同じ物で自分のファイル名で動作を切り替えています。アーカイブに入っているtrk2txt.exeをそれぞれの名前に必要に応じてコピーしてください。なお、名前に拠らず-T指定でtrk2txt、-P指定でtxt2trk、入力ファイルの拡張子が.TRKの時、trk2txt,
.TXTの時txt2trk,.NMEの時、nmea2txtとして動作します。
*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
...
使用例
.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(電子工作)の掲示板]