GPXファイルには、測位点ごとのGPS精度が記録されているのか
フォーマットとしては用意されている。GPX 1.1では、精度に関わる項目——測位精度低下率(DOP)の数値、使用した衛星の数、フィックスの種類——を各測位点に持たせられるようになっていて、それらを持つファイルも立派に正しいGPXファイルだ。珍しいのは、スマホで記録したトラックが実際にそこを埋めていることのほうで、理由はアプリが手を抜いているからというより、そもそもスマホの位置情報システムが渡してくる数字が、この項目が想定しているものとは違う種類だから、という話に近い。
まず結論
GPXの測位点には、精度に関わる項目——hdop、vdop、pdop、sat、fix——を持たせることができるが、どれも任意項目で、スマホで記録された大多数のトラックはそのすべてを省いている。ハイキングやランニング用の一般的なアプリから書き出したGPXファイルを開くと、たいていは緯度、経度、高度、そして各点のタイムスタンプがあるだけで、それ以外は何もない。
これはファイルが壊れているとか不完全だという意味ではない。アプリがそもそもこれらの項目が求めるような種類の数値を一度も持っていなかったので、決まった意味を持つタグに誤解を招く値を書き込むよりは、空のままにしておいた、というだけのことだ。
フォーマットが実際に用意している項目
GPX 1.1では、任意の要素として、測位点にhdop(水平方向の精度低下率)、vdop(垂直方向の精度低下率)、pdop(位置全体の精度低下率)、sat(そのフィックスに使われた衛星数)、fix(フィックスの種類——2D、3D、DGPSなど)を持たせられる。どれも必須ではない。緯度と経度しか持たない点も、これら五つすべてを持つ点と同じくらい正当なGPXの測位点だ。
これらの項目は、ひと世代前のGPS機器——専用のハンディGPSや、船舶・航空用の受信機——の名残だ。位置を計算するチップが、その瞬間の衛星配置がどれだけ良かったかを合わせて報告できた時代の産物になる。精度低下率の数値が低ければ、視界に入っている衛星が空全体にうまく散らばっているという意味で、高ければ衛星が偏って固まっていて、フィックスが弱くなっていることを意味した。座標と一緒にその数値を書き込むのは、そうした受信機にとって自然なことだったので、フォーマットの側にもその場所が用意された。
そもそもスマホは精度の表し方が違う
スマホは、専用のGPSチップが内部で計算しているような生の精度低下率をアプリに渡してはいない。iOSが位置情報の精度として渡してくるのは、メートル単位の水平精度の値——実際には、報告された地点を中心にした半径で、本当の位置がその範囲内に収まっていそうだという数字だ。記録中にリアルタイムで表示するには十分役立つ数字だが、HDOPとは別の測定方法であり、片方からもう片方へ単純に換算する方法もない。アプリがGPXの測位点に意味のあるhdopの値を書き込めないのは、そもそもそういう値を渡されたことが一度もないからで、手元にあるのはメートル単位の距離だけであり、フォーマットの側にもその特定の数値のための標準項目は用意されていない。
つまりこの空白は、記録アプリが書き出し処理を手抜きしているという話ではない。現代のスマホの位置情報APIが報告してくるものと、GPXの伝統的な精度項目が想定していたものとの、実質的な違いを映しているだけだ。
それで実際に何が困るのか
思っているほどには困らない。記録アプリは、ハイキングの最中、その時点で持っている精度の情報をすでに使っている——あるフィックスをログに残すほど十分な精度と判断するか、明らかにおかしい値をならしてしまうか、受信機が落ち着くまでもう少し待ってからトラックを開始するか、といった判断のことだ。ある測位点が保存されたルートに入り、後にGPXファイルとして書き出される頃には、そのふるい分けはすでに終わっている。手元に残るのは、アプリが「これなら大丈夫」と判断した測位点の集まりであって、一点一点に信頼度のスコアを添えた生データの垂れ流しではない。
統計的なふるい分けのために精度低下率の数値をどうしても必要とするGISツールや研究用の作業手順があるとすれば、それはスマホのトラックがそもそも答えるようにはできていない種類の問いを投げていることになる。それはこの項目が本来想定していた専用のGPS機器にこそふさわしい使い道であって、一般向けのアウトドア記録アプリが最初から目指していたものではない。
つまずきやすいところ
- hdop項目が空だと、そのトラックは信用できないと思い込む——たいていの場合、それが意味するのはファイルがスマホ由来だということだけで、項目自体が任意であり、スマホのアプリにはそこに入れる対応した値がそもそも無い。
- 精度低下率の数値を求めてくる地図やGISのツールが、測量用の受信機から来たファイルと同じようにスマホ記録のGPXファイルも受け付けてくれると期待する——項目が無いのは記録に使った機器が報告してくる情報の違いであって、ファイルの欠陥ではない。
- 記録中に画面に表示されているリアルタイムの精度の数値と、書き出したファイルに実際に入る値を同じものだと思い込む——目的は近くても同じ項目とは限らず、たいていの一般向けアプリは画面上の数値をそのままGPXの書き出しに引き継いではいない。
- すべての記録アプリが同じ理由でこれらの項目を省いていると思い込む——単にその数値を一度も持たなかったアプリもあれば、チップが直接精度低下率を計算できるために、実際にきちんとした値を書き込める専用GPS機器も一部にはある。
TrailCam の場合
TrailCamはルートをGPX 1.1として書き出し、このガイドシリーズのどのツールも実際に頼りにしている項目——緯度、経度、高度、各点のタイムスタンプ——を持たせている。精度低下率の数値は付けていないが、理由は上で説明したのと同じで、それはそもそもiPhoneの位置情報システムがアプリに渡してくる種類の精度情報ではないからだ。書き出し機能は有料のTrailCam Proに含まれる機能で、アプリ自体のダウンロードは無料。
よくある質問
- あとから、トラックのある測位点がどれくらい正確だったか調べられますか?
- 一般的な書き出し機能ではできません。記録中に表示されるリアルタイムの精度の数値は、たいていGPXの任意項目であるhdopとは別のもので、どちらの数値も書き出したファイルまで引き継がれないアプリがほとんどです。
- 専用のハンディGPS機器から書き出したGPXファイルにはhdopの値があるのに、自分のスマホの書き出しには無いのはなぜですか?
- 昔ながらの専用受信機は、衛星の配置から精度低下率を直接計算して、そのままファイルに書き込めます。スマホの位置情報システムが報告してくるのは別の種類の精度の測り方——メートル単位の水平精度の半径——で、それに対応する標準のGPX項目は存在しません。
- hdop項目が無いのは、記録に何か問題があったということですか?
- いいえ。この項目はGPXフォーマットの中では任意で、スマホで記録された大多数のトラックはそもそもそこを埋めていません。項目が空なのは記録した機器が報告してくる情報の違いであって、トラックの不具合ではありません。
自分のルートを記録する
TrailCam は iPhone 用の GPS ルート記録アプリです。動画・写真・音声メモを撮ったその地点に紐づけて保存し、GPX 1.1 または CSV で書き出せます。ダウンロードは無料です。