Waypointのデータ量を削減する仕様

Googleマップ上でWaypointのデータ量(GPXファイルのサイズ)を削減する例

GPX Editor and Viewerは、可能な限りルートの形を崩さずに、Waypointのデータ量を削減することができます。GPXファイルは、テキスト形式で記述するため、Waypointの数を削減することは、とても重要です。

GPX Editor and Viewerでデータ量削減処理を実行するダイアログとパラメータ

GPX Editor and Viewerは、2種類のパラメータを用いて、Waypointのデータ量を削減します。"minimum distance" には、2つのWaypoint間の最小距離の閾値(メートル)を指定します。GPXEVは、指定された閾値より短いWaypointを削除します。"route deviation" には、Waypointを削除する前と後で許容できるルートの隔たりの閾値(メートル)を指定します。GPXEVは、指定された閾値に収まるWaypointを削除します。

以下に、Waypointを削減する詳細な仕様を説明します。

1. Minimum Distance

2つのWaypoint間の距離を求める図

まず、パラメータ "minimum distance" を用いてデータ量を削減する方法について説明します。2つのWaypoint、w1とw2が存在するとき、Waypoint間の距離を d と定めます。距離 d が閾値より短い場合は、w1またはw2のいずれか一方を削除します。

ルートの形を崩さずにWaypointを削除する成功例と失敗例の図

GPXEVは、よりルートの形が崩れない方のWaypointを削除します。例えば、左の図では w1とw2が近接していますが、w1を削除するとルートの形が崩れます。一方、w2を削除してもルートの形は崩れません。これは、次に示す「進行方向の変化量」で判断することができます。

ルートの形を崩さずにデータ量を削減するためにルートの進行方向の変化量を求める方法を図示したもの

GPXEVは、各Waypointについて進行方向の変化量(角度)を計算します。この変化量が少ないWaypointほど、削除した時にルートの形が崩れません。具体的には、2つのWaypoint、w1とw2のいずれか一方を削除する場合、それぞれの進行方向の変化量θ1、θ2を計算して、θの値が少ないWaypointを削除します。

ロックされているWaypointは削除しない

GPXEVのデータ量削減処理は、ロックされているWaypointを削除しません。例えば、2つのWaypoint、w1とw2が近接して、且つ w1がロックされている場合は、無条件にw2を削除します。

2. Route Deviation

Googleマップ上でルートのGPXファイルのWaypointのデータ量を削減した例

次に、パラメータ "route deviation" を用いてデータ量を削減する方法について説明します。このパラメータは、長い直線道路や緩やかにカーブしている道路のデータ量を削減するのに有効な方法です。

3つのWaypoint

3つのWaypoint、w1、w2、w3が存在する場合を例に説明します。ここで、w2を削除できるか否かを検討します。

Waypoint間の距離を求める図

まず、w1とw2の距離 r を求めます。

Waypointを削除した場合の進行方向と距離を求める図

次に、w1とw3を結ぶ直線上で、且つ w1から距離 r の地点 p を求めます。

GPXファイルのデータ量削減でWaypointを削除することにより元のルートからズレる距離を求める方法を図示したもの

w2と p の距離 d を計算します。d が閾値より小さい場合は、w2を削除します。つまり、Waypointを削除することで、本来のルートからズレる距離の許容範囲が閾値となります。

2つのWaypointを結ぶ直線に対する垂線との違いを示した図

ここで求めた距離 d を示す直線は、w1とw3を結ぶ直線の垂線ではありません。平面上で垂線を求めるのは簡単ですが、球体(地球)の表面上で緯度と経度を用いて垂線を求める計算式は、かなり複雑になります。そこで、GPXEVは、垂線を用いずに、簡易的に計算した距離 d を用いてWaypointの削除可否を判断しています。