GPXファイルをもっと使えないか
サイクリングにキューシートのような行程表を持っていくことがある。 その作成はというと、GPXファイルが有るのに、 コピペとか手入力とか、なかなか面倒な作業になる。 ググってみても、良い方法に出くわさない。ありました。こちらで丁寧に説明されています。 無料アカウントで、キューのcsvファイルがゲット出来ます。csvがあれば、あとはなんとかなります。
そこで、gpxのトラックデータには、 GPX 1.1 Schema Documentation にもあるように、[name]の項目があるので、 地図上にgpxファイルを表示させながら、 この項目に、〇〇庵とか、右折直進、とか記入できれば、 吐き出すgpxファイルをもっと有効に使いまわせるのではないかと考えた。 ルートではなく、トラックです。
まあ、 通常使っているVikingでは、 トラックの各ポイントに名前や標高をセットできるので、 こいつを使えればと思ったわけ。
トラックポイントに、[name]を加えて使う
手作業でつくる
編集できればなんでもいいが、 私は通常、Vikingを使っているので、こいつがメイン。ただ、Vikingでは、トラックのポイント名が地図上に表示されないし、 1点づつしか表示・編集できないので、今ひとつの使いゴゴ地。 カシミール3Dは出来たような気がする(今使ってないんで)。
カシミールでは、ルートデータなら編集できるが、 トラックデータは扱えないみたい。ルートデータを編集して トラックデータに変換、書き出しで、 nameは飛んでしまう。トラックはあくまで記録としての扱いみたい。
で、Debianでも使える、RouteConverterというのも使ってみた。 Gitではここ。
GPXファイルを、ルート検索サイト等で作成、ダウンロードする。当然、トラックデータ。 こいつを編集する。
- Vikingの場合。
- GPXファイルを読み込み、トラックポイントの編集機能で、 [name]を編集する。
- 必要なら、トラックポイントの追加、位置修正を行う。
- 追加する場合は、標高データを、前後を参考に設定しておくとよい。
- GPXファイをエキスポートする。
- RouteConverter の場合。一覧をざっと確認するのに向いている。
- GPXファイルを読み込み、編集機能でDescriptionの内容を修正する。
- 必要なら、トラックポイントの追加、位置修正を行う。
- 修正後、ファイルセーブで保存する。
- [name]がないポイントには、 読み込み時に Position + 番号 が入る。 (オプションで変更できる)
もともと、こんなファイルだったのを、
こんなファイルにする。
[name]付きGPXファイルをcsvに
gxpファイルの変換にはgpsbabelを良く使うようで、 やってみたが、[name]は問題なく変換できるが、 標高が扱えないようで悔しい(マニュアルが読めてないだけかもしれない)。で、他の方法を探すと、pythonのパッケージに、 GitHub - tkrajina/gpxpy: があるのを 見つけが、pythonは関数電卓程度にしか使えないので、どうすりゃ使えるのか解らない。 で、サンプルコードを探した。
あった。ありがたい。ライアン?さん、ありがとう。
ネットで調べながらいじくりまわして、一応動くようになった。pandasとnumpyも必要。 GUI、エラー処理など、一切なし。
$ python ~/bin/conv_gpx_to_cue.py data.gpx
[name]を加えたgpxファイルから、 <ポイント番号、始点からの路線距離、標高、累積標高の正負、[name] >を、 csv形式で、全点と[name]に「Position」を含まない点との2種類を吐き出すようにした。 距離は二次元で計算。標高データはそもそも目安程度。出力したcsvはこんな感じ
表計算ソフトに入れて、こんな感じ。
一応、スクリプトを ranger に登録した。
間違えてれば、出先で痛い目にあうかもしれない。 でも、まあよかった、かな。
20170827追加
RideWithGPSのgpxファイルを使う
RideWithGPSのフリーアカウントで、 ルートのトラックデータと、キューの内容で作成されたルートデータがダウンロードできる。 いずれのファイルも、gpx形式で、座標が含まれるので、 こいつらを使って、上と同じことが出来るようにしてみた。キューにリストされたポイント座標を、トラックデータの中で最も近い点を選んで、キューの記述内容を当て込んで、
やってみて分かったが、ダウンロードした座標データが丸め値みたいで、キューの点が近接していると判定できずに、トラックの複数点に対応することがある。 RideWithGPSのサイトである程度のキューの内容を調整する作業が必要みたい。
あと、自転車道をルート検索に含める場合、OSMの地図をベースにする必要がある。googleベースで編集すると、設定したルートが変わることがある。
BikeRouteToasterのファイルを使う
BikeRouteToasterでも、 ルートのトラックデータと、キューの内容で作成されたトラックデータとしてがダウンロードできる。ただし、キューはtcxとcsvだけで、gpxはサポートされていない。 このサイトがよいのは、ルート検索機能をオフにして(というか、私の環境ではルート検索ができない)、ルートの編集が出来る所。RideWithGPSからダウンロードしたtcxファイルを読み込んで、googleの地図を背景に修正作業ができる。Plotarouteは止めておく
plotaroute も RideWithGPSと同様の作業が可能だが、キューへの対応が良くないようだ。Noteとして画面にリスト表示されるが、ダウンロードしたファイルと整合性が取れていない場合があった。今回は除外。キュー関係は以外は、好きかも。
結局どうしたのか
ルート検索サイトからダウンロードしたデータを使って、ポイント番号、路線距離、標高、獲得標高、座標、キューを含むCSVファイルを、全点と、キューのある点のみの2種類作成するようにした。以下の三種類に対応させた。
- Ride with GPSの、ルートのデータ(Export の GPX Track (.gpx))と、キューのデータ(Export の GPX Route (.gpx))から、csvファイルを作成
- Bike route Toasterの、 ルートのデータ(Export の GPX) と、 キューのデータ(Export の csv)から、 csvファイルを作成
- Viking や RouteConverter で加工したデータ。 Export したname付きのgpxファイルから、csvファイルを作成
$ python ~/bin/Convert_from_gpx_to_csv_with_other_data.py 名前.gpx
tcxが扱えればいいのに、その腕がない。一応、ひと区切り。