GPX Editor and Viewerは、可能な限りルートの形を崩さずに、Waypointのデータ量を削減することができます。GPXファイルは、テキスト形式で記述するため、Waypointの数を削減することは、とても重要です。
GPX Editor and Viewerは、2種類のパラメータを用いて、Waypointのデータ量を削減します。"minimum distance" には、2つのWaypoint間の最小距離の閾値(メートル)を指定します。GPXEVは、指定された閾値より短いWaypointを削除します。"route deviation" には、Waypointを削除する前と後で許容できるルートの隔たりの閾値(メートル)を指定します。GPXEVは、指定された閾値に収まるWaypointを削除します。
以下に、Waypointを削減する詳細な仕様を説明します。
まず、パラメータ "minimum distance" を用いてデータ量を削減する方法について説明します。2つのWaypoint、w1とw2が存在するとき、Waypoint間の距離を d と定めます。距離 d が閾値より短い場合は、w1またはw2のいずれか一方を削除します。
GPXEVは、よりルートの形が崩れない方のWaypointを削除します。例えば、左の図では w1とw2が近接していますが、w1を削除するとルートの形が崩れます。一方、w2を削除してもルートの形は崩れません。これは、次に示す「進行方向の変化量」で判断することができます。
GPXEVは、各Waypointについて進行方向の変化量(角度)を計算します。この変化量が少ないWaypointほど、削除した時にルートの形が崩れません。具体的には、2つのWaypoint、w1とw2のいずれか一方を削除する場合、それぞれの進行方向の変化量θ1、θ2を計算して、θの値が少ないWaypointを削除します。
GPXEVのデータ量削減処理は、ロックされているWaypointを削除しません。例えば、2つのWaypoint、w1とw2が近接して、且つ w1がロックされている場合は、無条件にw2を削除します。
次に、パラメータ "route deviation" を用いてデータ量を削減する方法について説明します。このパラメータは、長い直線道路や緩やかにカーブしている道路のデータ量を削減するのに有効な方法です。
3つのWaypoint、w1、w2、w3が存在する場合を例に説明します。ここで、w2を削除できるか否かを検討します。
まず、w1とw2の距離 r を求めます。
次に、w1とw3を結ぶ直線上で、且つ w1から距離 r の地点 p を求めます。
w2と p の距離 d を計算します。d が閾値より小さい場合は、w2を削除します。つまり、Waypointを削除することで、本来のルートからズレる距離の許容範囲が閾値となります。
ここで求めた距離 d を示す直線は、w1とw3を結ぶ直線の垂線ではありません。平面上で垂線を求めるのは簡単ですが、球体(地球)の表面上で緯度と経度を用いて垂線を求める計算式は、かなり複雑になります。そこで、GPXEVは、垂線を用いずに、簡易的に計算した距離 d を用いてWaypointの削除可否を判断しています。