TrailCam

ガイド

GPX ファイルを別の場所で開くと距離が変わって見えるのはなぜ?

そもそも GPX ファイルには距離という値が保存されていないからです。ファイルに入っているのは点の並びであって、それを開いたソフトのほうが自分で合計を計算し直す必要があります。GPX のトラックは、各点の緯度・経度と、任意で高度・時刻が記録されているだけで、「合計距離」というフィールドはどこにもありません。ハイキングの最後に表示される数字と、別のソフトが取り込み後に表示する数字は、同じ生の点から出発した二つの独立した計算であって、ファイルの中を一つの数字が運ばれてきたわけではないのです。小さなずれはほぼ避けられませんが、大きなずれには理由があり、それは多くの人が思っているのとは違うところにあります。

短い答え

GPX ファイルは、緯度と経度に、任意で高度と時刻を添えた点の並びです。距離がそのまま値として保存されていることはありません。距離を表示するソフトは、記録した本人のアプリも含めて、すべて点を順番にたどり、隣り合う点どうしの直線距離を足し合わせて自分で計算しています。同じ点の並びを二つのソフトがそれぞれ合計しても、途中の扱い方次第でわずかに違う値になり得ます。これが、ファイルが別の場所に渡ると数字が動く理由のすべてです。

GPX ファイルに実際に入っているもの

GPX ファイルをテキストエディタで開くと、そこにあるのは点の並びで、それぞれに緯度・経度、たいていは高度と時刻がついています。ほぼそれだけです。走行距離を積算するメーターのような値はファイルの中に書き込まれていませんし、ペースの推移も、どこが歩行でどこが停止だったかを示す印もありません。距離、ペース、移動時間、獲得標高といった生の位置情報より一歩進んだ数字は、点を見てあとから計算して初めて得られるものであり、ファイルが値として一緒に持ち歩いているものではないのです。

これは見落としではなく、フォーマットとして意図的な線引きです。GPX が記録しているのは、ある時刻の並びでデバイスがどこにいたかということであり、その経路から距離や速さ、登った高さをどう読み取るかは、次にファイルを開くソフトの側にすべて委ねられています。

同じ点を足しても、ソフトによって答えが違う理由

隣り合う点どうしの直線距離を足すだけなら、答えは一つに決まりそうに聞こえますし、完全にきれいな点の並びであればそのとおりです。実際に記録された GPS のトラックは完全にはきれいではありません。どんな記録にも、実際にいた場所からわずかにずれた点がいくつか混じっていて、そのわずかな点をどう扱うかでソフトごとに合計が変わります。記録されたとおりにすべての点をそのまま足すソフトもあれば、一歩にしては大きすぎる孤立した飛びのような、ノイズに見える点を先に間引いたりならしたりしてから足すソフトもあります。どちらが絶対的に正しいというわけではなく、同じ曖昧なデータに対する判断の違いにすぎず、判断が違えば合計も違ってきます。

もともと記録していたアプリは、その瞬間その瞬間に、書き出したファイルには一切残らない情報を持っていることがよくあります。それぞれの測位の精度の見積もりや、デバイス自身が「今動いているかどうか」をどう判断していたか、といった情報です。こうした付随情報は GPX フォーマットの一部ではないため、いったん書き出されてしまうと、別のソフトは生の点だけを頼りに、元の記録がリアルタイムでかけていたはずのフィルタなしで判断することになります。この、使える情報の差こそが、二つの合計が完全には一致しない主な理由であって、どちらかが間違っているわけではありません。

差が思ったより大きくなるのはどんなとき

全体の距離のごく一部にあたる程度の差は普通のことで、気にする必要はありません。上で説明したような、ありふれた小さな食い違いを反映しているだけです。明らかに大きな差がある場合は、たいてい一部の点が実際の経路から目立ってずれていることが原因で、記録を始めた直後や、電波が一瞬途切れた場面、木々に覆われた区間などでよく起こります。点を疑わずにすべて足すソフトは、その一つの飛びが誇張した距離をそのまま合計に加えてしまいますが、外れ値を先に除くソフトはそうなりません。どちらのソフトでも点そのものは同じで、違うのはその外れ値をどう扱うかという判断だけです。

CSV での書き出しでも同じことが起きる?

はい、原因はまったく同じです。CSV での書き出しも、記録した点を行ごとに並べた表であって、距離の合計値を保存しているわけではありません。それを表計算ソフトで開いて行間の距離を合計するのは、GPX ファイルを別の場所で開くのとまったく同じ種類のあとからの計算で、やり方次第で合計がわずかに違ってくる余地も同じようにあります。

つまずきやすいところ

  • GPX を別の場所で開いて数字が変わっただけで、書き出し自体が壊れていると決めつけてしまう — たいていファイルは正しく開けており、二つのソフトがそれぞれ独立に生の点から距離を計算しただけです。
  • 大きく表示されたほうの数字を「正しい」と思い込む — 数字が大きいことは正確さの証明にはならず、一方が外れ値の点をそのまま残し、もう一方が静かに取り除いた結果というだけのこともあります。
  • 書き出しファイルにも元のアプリが表示していた合計距離がそのまま入っていると期待してしまう — GPX も CSV も点を保存しているのであって、完成した距離の数字を保存しているわけではないので、別のソフトがそのまま読み出せるものはそこにありません。
  • 数パーセント程度の差を不具合のように扱ってしまう — その程度のずれは、二つの別々のソフトがそれぞれ同じ不完全な点に対して自分なりの判断を下した、ごく普通の結果です。

TrailCam の場合

TrailCam はルートを、Strava・Garmin Connect・Komoot が読める GPX 1.1、または CSV として書き出せます。どちらも任意の TrailCam Pro に含まれる機能です。どちらの書き出しも、位置・高度・時刻という記録した点そのものを運ぶのであって、完成した距離の数字を運ぶわけではないので、あとで開いたソフトは他のどんなソフトとも同じように自分で合計を計算し直すことになります。TrailCam 自体は無料でダウンロードできます。

よくある質問

GPX ファイルにはハイキングの合計距離が保存されているのですか?
いいえ。保存されているのは緯度・経度、たいていは高度と時刻からなる点の並びです。距離は、ファイルを読むソフトのほうがそのつど計算するものであり、値として中に保存されているわけではありません。
アプリの距離と、書き出し後の距離、どちらを信じればいいですか?
どちらか一方が絶対的に正しいということはありません。小さな差は、同じ点をそれぞれのソフトが少しずつ違うやり方で合計していることによる、ごく普通のずれです。大きな差がある場合は明らかな外れ値の点がないか確認する価値はありますが、それはどちらかの合計が壊れている証拠ではありません。
GPX ではなく CSV で書き出せば、この問題は避けられますか?
いいえ、原因はどちらでも同じです。CSV での書き出しも、完成した距離の数字ではなく、記録した点の表にすぎないので、別のソフトで開けば GPX ファイルのときと同じように、独立したもう一つの計算が行われます。

自分のルートを記録する

TrailCam は iPhone 用の GPS ルート記録アプリです。動画・写真・音声メモを撮ったその地点に紐づけて保存し、GPX 1.1 または CSV で書き出せます。ダウンロードは無料です。

App Store でダウンロード