« 冷凍庫よりも寒い! 寒気の底に沈む北嶺山 | メイン | あぁ、だまされて野良ハイク・・・ »

2008 - 1 /28

trkをkmlに

覚え書き・・・


Garmin eTrex のトラックデータをカシミール経由でトラックファイル(.trk)にしたものを、Googleマップで利用できるファイル(.kml)に変換するときには、ちょっとした細工が必要だった、というお話し。


うまく行かないことほど楽しいものはない
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


GPSのトラックデータ(trkファイル)をGoogleマップで表示するためには、kmlファイルに変換する必要があります。
kmlファイル(「Keyhole Markup Language」のことだそうです)はその拡張子から推測できるとおり、XML形式で記述されたテキストファイルです。


KML 2.1 Reference - KML - Google Code
http://code.google.com/apis/kml/documentation/kml_tags_21.html


そして trkファイルもまた、実はただのテキストファイルなのです。
なので、KMLのリファレンスを読んで記述方法さえ分かれば手書きで変換することも可能だし、ヒマさえあればこの程度のテキスト'コネコネ'プログラムは書けそうだけど、変換に特化したソフトを誰かが必ず作ってるはずだと信じ、探すことにしました。


古今東西ファイル形式を変換するためのソフトって、たいていその名称はアレです。
変換前の拡張子と、変換後の拡張子を、数字の '2' で挟むという、アレです。
今回のケースはかなり使用者が限定されるので、どうだろうなーと思いつつ "trk2kml" で検索してみると、ビンゴ!。

 "trk2kml"をGoogle検索の結果


このソフト、ウェイポイント(wptファイル)までをもきちんと統合してくれます。
ちなみに wptファイルもテキストファイルです。
ところがいざ使ってみると、[変換]ボタンを押すなりエラーが出てしまいました。


 文字列は有効な DateTime ではありませんでした。


trkファイルに記されている日付データが、そのままでは DateTime型の変数として扱えないということでしょうか。
それとも日付データの値がただ利用できない値だよ、というだけなのでしょうか。
いずれにしても、今のぼくの立場は開発者サイドではないので、他の方法をさがすしかありません。


プログラムを展開したフォルダには、"sample.trk" というお試しファイルがあり、このファイルは問題なく変換できることが分かりました。
となれば、トラックファイルの方をいじれば何とかなりそうです。


テキストエディタで双方をコンペアしてみると、やはり日付の形式に違いがありました。

トラックデータのコンペア結果

サンプル:11-NOV-06
実ログ :12-1-08


eTrexが吐くトラックファイル(eTrex→カシミール経由)の仕様が変わったんでしょうか?。
ってことで、"12-1-08" を "12-JAN-08" に一括置換してから変換させると、見事 kmlファイルが出来上がりました
めでたしめでたし。


Web検索しても解決法が見当たらなかったこの件。
あまりにマニアックなので記事としての価値は低いと思ってますが、もしかすると過去に書いた MSKSrvrのCPU使用率100%問題MSN Internet Access の話のように、とつぜん検索サイト経由のお客さんが予期せぬほど押し寄せる可能性も・・・


てことで、ぼくが昔から使わせていただいてるエディタを、おススメってことで紹介しておきます。

NoEditor
http://www.vector.co.jp/magazine/softnews/031112/n0311122.html


エディタとしては標準的なSDI式のテキストエディタですが、Grep機能に特化した "Grep.exe"とやり取りできるので便利です。
こいつがあれば、大量のファイルを一気に Grep&Replaceするのも簡単です。
ただしやり直しは利かないので、バックアップをお忘れなく。

投稿者 hamayo : 2008年1月28日 21:36

関連するエントリ

【エントリ・タグ】

    このエントリにはタグがありません。

    このエントリは、 PC > ソフト カテゴリに属しています

トラックバック(0)

このブログ記事を参照しているブログ一覧: trkをkmlに

このブログ記事に対するトラックバックURL: http://cosmeticpunk.sakura.ne.jp/mt/mt-tb.cgi/283