2012/08/26 作成、2015/06/13 更新

スマホ向けのコンパクトスタイルで表示しています。

タイトルタイトル

タイトル
ルートマップの表示例と保存方法

みなさんは、地図が好きですか?

私は好きです。もちろん、見るのも好きですが、地図上に自分が走ったルートを記録するのが好きです。

ここでは、そんな走行ルートの記録と表示に関する話について、ツールの紹介を交えて書きつづりたいと思います。

ツーリングの走行ルートの記録

私はツーリングルートを GPX形式のデータで保存しています。ただし、GPSは使っていません。ツーリングから帰ってきたら地図上にゴリゴリとルートを記録しているだけです(笑)

←は、Google Mapsを使ってロングツーリングの全ルートデータを表示した画面です。こうやって俯瞰で眺めるとまだ走っていないところが一目瞭然ですね。この地図を眺めながら次のロングツーリングはどこへ行こうかな~、なんて考えています。

では、次の章からこのルートマップの作り方を紹介していきます。


タイトル
ルートマップができるまでの手順

ルートデータは、Yahooのルートラボ で作成しています。このサイトは誰も無料で使用することができます。作成したルートデータは、GPX形式で保存することができます。GPXとは、一般的なGPSデータのフォーマットです。

GPX形式のデータは、そのままルートラボ上で表示することもできるのですが、私はあえてGoogle Maps上で表示しています。(理由は後述します)

しかし、Google Mapsには標準でGPX形式のデータを表示する機能がありません。そこで私は、Google Maps JavaScript API V3とSilverlightを組み合わせてGPX形式のデータをGoogle Maps上に表示する機能を作っています。

タイトル
Yahooのルートラボ

まずは、Yahooのルートラボ でルートデータを作成します。利用には、Yahooの無料アカウントが必要です。ブラウザには、Silverlightがインストールされている必要があります。この辺りは、ルートラボのガイドに沿って進めば問題ありません。

ルートラボの紹介

ルートは、「道ピタモード」で描きましょう。このモードでは、ルートが自動的に道路に沿って描かれます。たまに、道路データと地図画像に不整合がありルートが道を外れることもありますが、許容範囲内です。ちなみに、4車線クラスの幹線道路には右車線と左車線のデータがありますが、道ピタモードは左側通行を考慮してくれません。ルートを描いていると頻繁に反対車線を逆送しますが、そこはご愛敬(笑)

フェリー航路のように道路データが無い場所は、直線モードに戻して描きます。

ルートラボの紹介

ルートが描けたら、エスクポートボタンをクリックしてGPX形式のデータをローカルにダウンロードします。この時に注意事項が2つあります。

 

1)エクスポートした後で忘れずにルートを保存しましょう

 

エクスポートしたGPXデータとルートラボのサーバに保存されているデータは別物です。エクスポートしたデータをインポートしても完全に復元できない場合があります(ルートを再編集できない場合があります)。

 

2)エクスポートには時間がかかります。

 

エクスポートが完了しても何のメッセージも表示されません。エクスポートが完了する前に別のページへ移動すると正しくデータが保存されません。面倒ですが、HDD上に保存したファイルのサイズを見てダウンロードが完了していることを確認することをお勧めします。

ルートラボの8000点越えエラー

ルートラボは、座標が8000点を越えると保存できなくなります。ただし、8000点を超えてもエクスポートはできます。

私は、この問題を解決するために、一旦エクスポートしたGPXデータから座標を間引いて8000点以下に加工してから再びインポートしています。この方法なら、3,000~4,000kmクラスのルートデータでもルートラボに保存することができます。

簡易GPX間引きツールを用意しました。ご利用ください。

ボタン

GPXデータのサンプル

エクスポートしたGPXファイルをテキストエディタで開くとこんな感じです。

GPXには大きく分けて、Waypoint、Route、Trackの 3種類のデータ記述方法がありますが、ルートラボではTrackを使用しています。

1つのtrkpt(座標:Track Points)タグに、lat(緯度:latitude)とlon(経度:longitude)の 2つの属性が記述されています。

ルートラボのデータには、ele(標高:elevators)も出力されています。

タイトル
Google Maps上にルートを表示する

さて、とても便利なルートラボなのですが・・・

1)8000点以上の座標を表示できない

2)複数のルートを一度に表示できない

という、致命的な問題があります。

そこで、ルートラボ上で作成したGPXデータをGoogle Maps上で表示させます。と、言っても冒頭で述べた通り、Google Mapsの標準機能だけではGPX形式のデータを表示できない為、プログラミングが必要になります。

ツーリングルートビューアの紹介

最初にお断りしておきます。

ここで紹介するツールは、まだ α版です。

まだ機能的にかなりプアですがご容赦下さい。

Silverlightさえインストールしてあれば、IE、Firefox、Google Chrome、Safariのいずれのブラウザ上でも動作します。

ボタン

↑のボタンをクリックすると、ツーリングルートビューア(仮称)が開きます。

ウィンドウは 2枚開きます。

説明の都合上、小さい方を「コントロールパネルウィンドウ」、大きい方を「ルートマップウィンドウ」と呼びます。

ツーリングルートのロード

ルートラボで作成したGPXファイルをコントロールパネルウィンドウ上にドラッグ&ドロップします。

GPXデータの処理には、少々時間がかかります。

 

しばらくそのままお待ち下さい。

 

ルートマップウィンドウ上にルートが描画されればOKです。

ルートラボで作成したGPXファイルをそのまま加工せずに表示しようとすると、かなり時間がかかります。(8000点で30~60秒)

高速化する方法は後述します。

ツーリングルートの色指定

前述の手順を繰り返すことで、一度の複数のルートデータを描画することができます。

ルートデータは、それぞれ色を変えて表示することができます。

ただし、表示しているルートの数が多くなると、地図のスクロールが極端に遅くなります。

描画後に地図をスクロールさせる時は、[全ルート表示]チェックボックスを外して一時的に、ルートを非表示にするとスムーズにスクロールできます。

ツーリングルートの色分け表示例

ツーリングルートを走った日付で色分け表示するとこんな感じになります。

現状、α版なのでこの程度しか実現できていません。今後は、

1)GPXデータ読み込み速度の高速化

2)trkseg/trkpt以外のGPXデータのサポート

3)ルートの表示スタイルの多様化

4)座標間引き処理の追加

5)任意のサーバからのルートデータのダウンロード

6)GPXデータの圧縮と最適化

などの機能強化を検討中です。

最後に試しに使ってみたいという方の為に、GPXデータのサンプルを置いておきます。

ロングツーリングレポートに書いた「2012年 四国一周編」の走行ルートデータです。

データ量を減らす為に座標を間引いて、1日辺りの座標数を 8000点以下に抑えています。

gpx_example.zip (548kb)

タイトル
ルートの表示を高速化する

ここから先は、ルートラボで作成したGPXデータをGoogle Maps上に表示する際に、表示速度を高速化する方法ついて書きます。

方法は単純で、GPXデータを縮小します。

 

1)座標以外のデータを削除する

2)精度を下げる

3)座標を間引く

この3つの方法を順に説明します。

ルート表示に不要なGPXのタグ

ステップ1)座標以外のデータを削除する

ステップ1は簡単です。ルートラボで保存したデータからルートの表示不要なeleタグとtimeタグを削除するだけです。eleタグの削除は、正規表現に対応したテキストエディタなら "\<ele\>[0-9]+\.[0-9]+\<\/ele\>" で一括削除できます。

ルートラボのGPXデータの精度の問題

ステップ2)精度を下げる

次に座標の精度を下げます。

← の矢印の部分に注目して下さい。35.6732458333333、と明らかに変な緯度になっています。よく見ると他の座標の末尾も、111111や888889のように規則性があることが判ります。これはルートラボの問題なのですが、地図の精度が小数点以下 8位までしかないのに、GPXデータには小数点以下12位まで記述されています。そこで小数点以下 9位で四捨五入します。例えば、35.6732458333333は、35.67324583に修正します。

ちなみに、かなり乱暴な計算ですが、地球一周を40,000kmと仮定すると、赤道(緯度 0度)において経度 1度は40,000km÷360度=111km/度になります。小数点以下 8位の単位辺りの距離は、111km÷10^8=0.111cmになります。もちろん、日本が位置する緯度35度近辺ではそれより約17%ほど距離大きくなりますが、それでもツーリングルートにはオーバスペックの精度ですよね。もう少し精度を下げても大丈夫です。

3400kmのルートデータを8000点の座標で表示した例

ステップ3)座標を間引く

これが高速化には最も効果的な方法です。

ルートラボが表示できる座標の上限が8000点ですが、これは距離にするとだいたい300~350kmぐらいです。実際にはカーブが多いルートほど座標の数が増えます。

この座標数は、俯瞰でルート表示するには多すぎます。私は、ロングツーリングの全行程もルートラボで公開するために8000点以下までデータ量を削減しています。

←は、3400kmのルートデータを8000点の座標で表示した例です。約425mおきにプロットしている計算になりますが、このズーム率であれば十分に見ることができます。

座標を間引く際には単純に数を減らすとズームアップした際にルートが乱れるので、前後の座標を見てベクトル計算(進行方向を計算)しながら間引いても影響が少ない座標から優先的に間引きます。

上記の3つの機能を備えた簡易GPX間引きツールを用意しました。ご利用ください。

 

ボタン

タイトル
変更日 バージョン内容
2012/08/26v0.01α版を公開しました。GPXファイルの読み込み・表示機能のみを実装しています。

Copyright (C) 2006-2017 KaK. ()

このページに掲載されている画像の転載は、再配布条件 をご参照ください。