GPX ファイルの標高は、フィートとメートルのどちらで保存されているのか
常にメートルです。記録した端末がどれでも、記録した国がどこでも、いま見ているアプリの表示単位がフィートに設定されていても関係ありません。GPX ファイルには単位を選ぶ項目も、どちらの単位を使っているかを示す印もなく、フォーマットが書き込むのはメートルひとつだけです。フィートで表示するアプリがあるとすれば、それはファイルからそう読み取っているのではなく、表示する瞬間にその場で変換しています。
まず結論
GPX ファイルの標高値はすべて、記録した各点に付く <ele> タグの中に、メートル単位の数値としてそのまま書き込まれています。「これはメートルです」と示す添え字も、フィート用の別のタグも存在せず、フォーマットは最初から単位をひとつに決めていて、どの端末で記録しても、どの国で記録しても、あとで読む人がどちらの単位を好んでいてもそれは変わりません。<ele> タグの中の 312 という値は、東京で記録した iPhone のファイルでも、デンバーの GPS 機器のファイルでも、常に 312 メートルを意味します。
なぜ単位をひとつに固定しているのか
GPX は、ある端末で記録したルートが、まったく別のソフトウェアでも正しく開けるようにするための形式です——記録した国のアプリと、別の国で作られた地図ツールと、その会社が想定してもいなかったスプレッドシート。そういう相互運用性は、ファイルの中の数字がどのソフトウェアで読んでも同じ意味を持ち、推測する余地が一切ない場合にしか成り立ちません。もし標高が何か別の設定次第でフィートにもメートルにもなり得るなら、読み込む側のアプリは高度プロフィールを描く前にまずどちらの単位なのかを判断しなければならず、そのフラグをひとつ見落とすだけで正しい数字が静かに間違った数字に変わってしまいます。単位を最初から一つに固定しておけば、この種の失敗はまるごと起こりません。GPS の座標そのものが、端末ごとに好きな表し方を選べるのではなく、常に一つの形で統一されているのと同じ考え方です。
フィートへの変換は、実際にはどこで起きているのか
スマートフォンの画面でも、地図アプリの中でも、GPX ファイルをアップロードしたウェブサイトでも、獲得標高がフィートで表示されているのを見たら、その数字は表示する瞬間に計算されたものであって、ファイルから直接読み取られたものではありません。アプリは <ele> タグに入っているメートルの値を取り出し、それにおよそ 3.28 を掛けて、自分の設定や地域の慣習に合わせた単位で表示しているだけです。その下にあるファイル自体は何も変わっていません。まったく同じ GPX ファイルを二つのアプリで開いて、一方が「410 m」、もう一方が「1,345 ft」と表示することもありますが、どちらも同一の数字を読んでいて、それぞれの利用者に合わせた単位で見せているだけです。
自分でファイルを開くとどう見えるか
GPX ファイルをテキストエディタで開くと、各点はだいたい <trkpt lat="..." lon="..."><ele>412.3</ele><time>...</time></trkpt> のような形をしています。この 412.3 はメートルであり、記録した端末の画面表示がマイルとフィートに設定されていたとしても変わりません。アプリの画面表示とアプリが書き出すファイルは別のものです——画面はあなたが選んだ単位に合わせて姿を変えますが、その下にあるファイルは常に一つの決まった書き方を保っていて、次にそれを開く人が誰であっても、どの端末で開いても同じ意味になります。
勘違いしやすいところ
- 記録した端末が距離をマイルで表示しているからといって、<ele> タグの生の数値もすでにフィートになっていると思い込む——画面の表示単位とファイルの中身は別物で、ファイルは常にメートルです。
- GPX ファイルの中に単位を切り替える設定を探してしまう——そもそも存在しません。フォーマットの仕様が単位を固定しているのであって、ファイルごとに選べる項目ではないからです。
- 普段と違う単位設定のアプリに GPX ファイルを読み込ませると、数字が静かに間違って変換されるのではと心配する——読み込む側は毎回同じ固定のメートル値を読んでいて、仕様に沿ったアプリならどれも同じように正しく変換します。
- 地域が違えば単位も違うファイルが存在するはずだと思う——フォーマットの仕様上それはあり得ません。もしメートル以外の単位で標高を保存している GPX ファイルがあれば、それは仕様に沿っていない珍しい例で、書き出したソフト側の不具合であって、地域差ではありません。
TrailCam の場合
TrailCam は記録できる限りすべての点に標高値を書き込みます。GPS に加えて、多くの iPhone では気圧センサーも使います。書き出す GPX 1.1 ファイル——1 本のルートでも履歴まるごとでも——の中でも、これらの値はほかの GPX ファイルと同じくメートルのままです。ルート自体に表示される獲得標高や、歩行中に読み上げられる数値は、距離と同じく設定した単位に従います。書き出しは任意の TrailCam Pro に含まれる機能で、アプリ自体のダウンロードは無料です。
よくある質問
- GPX ファイルの標高をフィートで保存することはできますか?
- 仕様上はできません。GPX の標高値は常にメートルで、表示する際にアプリがフィートへ変換することはあっても、ファイルに保存されている数値の形式自体が変わることはありません。
- ファイルにメートルしかないのに、アプリがフィートで表示できるのはなぜですか?
- 表示する瞬間に変換しているからです。保存されているメートルの値におよそ 3.28 を掛けて表示しているだけで、ファイルから別の単位を読み取っているわけではありません。ファイル自体はその変換によって書き換わりません。
- GPX ファイルをテキストエディタで開いたとき、数値がメートルだとどう分かりますか?
- 確認する必要はありません。仕様がそう決めています。<ele> タグの中の数値は、どの端末が書き出したファイルでも、書き出した当時の画面の単位設定が何であっても、常にメートルです。
自分のルートを記録する
TrailCam は iPhone 用の GPS ルート記録アプリです。動画・写真・音声メモを撮ったその地点に紐づけて保存し、GPX 1.1 または CSV で書き出せます。ダウンロードは無料です。