分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
GPX を CSV にする変換は、記録した軌跡を、地点 1 つにつき 1 行の表に平坦化します。列は type、name、latitude、longitude、elevation、time です。セグメントはつなげられ、ウェイポイントは名前を保ち、座標は小数点以下 6 桁で書かれます。GPX の解析はブラウザーの中で行われます。走った場所と時刻の記録だからこそ、これは重要です。
一度に100ファイルまで。フォーマットが混ざっていても構いません。
順番に変換し、まとめてZIPでダウンロードします。
GPX から CSV
GPX ファイルは入れ子になった XML です。1 つの trk 要素が 1 つ以上の trkseg 要素を持ち、それぞれが緯度と経度を属性に、標高と時刻を子要素に持つ trkpt 要素の長い列を持ちます。スプレッドシートにはその入れ子を表す方法がないので、変換は平坦化します。すべての地点が記録された順に 1 行になり、地点より上の構造は、その行がどんな種類のものか、何と呼ばれていたかを示す 2 つの列としてだけ残ります。
この平坦化がすべての取引です。並べ替え、絞り込み、グラフ化ができ、pandas に渡せる表を得る代わりに、元のグループ分けを保ったまま GPX を復元する能力を失います。往復が重要なら GPX を残してください。分析が重要なら表のほうが良いオブジェクトです。1 秒ごとに 2 時間記録したライドは 7,200 行で、どんなスプレッドシートも問題なく開き、どんなデータフレームも数ミリ秒で読み込みます。
ヘッダー行は type,name,latitude,longitude,elevation,time で、7 番目の列はありません。type は track か waypoint のどちらかです。name はその行が属するトラックかウェイポイントの名前で、すべての行に繰り返されるので、参照なしで 1 つのトラックだけを絞り込めます。latitude と longitude は 10 進度、elevation は GPX が記した海抜メートル、time は記録されたそのままのタイムスタンプです。
速度、距離、勾配、ペースは、変換機が計算できるにもかかわらず意図的に含まれていません。それぞれ、何個のサンプルにわたって、どの外れ値を除いて、といった平滑化の判断を必要とし、その判断で生まれた値はスプレッドシート上では測定値と見分けが付きません。連続する行の間の距離は、表を目の前にすれば 1 行の計算で済み、そのときの判断はあなた自身のもので、見える形で行われます。
GPX は記録装置が測位を失うたびにトラックをセグメントに分けますが、その trkseg の境界は捨てられます。地点は連続する 1 本の行の並びとして出てくるので、長いトンネルを通ったライドが黙って 2 つのデータセットに分断されることはありません。その隙間をもう一度探したいなら、time 列で連続する行の間の飛躍として見えます。
ルートも同じように扱われます。rte 要素は記録された線ではなく計画された線ですが、その地点は track として現れます。表の中では正直にそれ以外の何かとして扱いようがないからです。ウェイポイントは違い、先頭に waypoint として現れ、それぞれ元の名前を保ちます。1 つのトラックと 12 個の保存地点を持つ GPX なら、12 行の waypoint とそれに続く trackpoint が得られ、先頭列で絞り込めば分離できます。
多くのウォッチは位置以上のものを記録します。心拍数、ケイデンス、温度、パワーは、各 trkpt の中の extensions ブロック、たいてい Garmin の TrackPointExtension 名前空間の下に入ります。ここの読み込み側は latitude、longitude、ele、time を取ってそこで止まるので、それらの値はどれも CSV に現れず、列も作られません。
これは出力が完全に見えるからこそ、分析を計画する前に知っておく価値があります。センサーのストリームが本当に必要なら、このサイトのどの変換もそれを表として渡してはくれません。TCX への変換も同じ理由で同じ制約を持ちます。誠実な助言は、extensions ブロックを自分で解析するか、記録したプラットフォームからワークアウトをエクスポートすることです。たいていそちらにはすでにそれらの列を持つ CSV があります。
緯度と経度は小数点以下ちょうど 6 桁で書かれ、赤道上でおよそ 11 センチメートルに相当します。きれいな数字だからという理由で選ばれたのではありません。一般消費者向けの GPS 受信機は屋外で数メートルの誤差を持ち、木の下や建物の間ではさらに悪くなります。ですから小数点以下 7 桁目、8 桁目は地面ではなく受信機の状態を記述しているだけです。
結果として、倍精度浮動小数点が持てる精度で保存されていた GPX の地点は、丸められて戻ります。原本と比較すれば小数点以下 8 桁目に差が出ます。一般的な記録された軌跡にとって、それはノイズの丸めです。測量データにとってはそれは損失であり、そもそもこの変換は測量データのためのものではありません。トータルステーションのエクスポートは、独自の精度モデルを保つ GIS ツールに属します。
標高は GPX が書いたとおり、丸めも単位変換もなくコピーされます。仕様は WGS 84 楕円体からの海抜メートルとしているので、ファイルの中の 512.4 はセルの中でも 512.4 のままです。タイムスタンプも逐語的にコピーされます。ISO 8601 はすでに標準なので、書式を変えることは意見を持ち込むだけになります。2026-05-12T07:03:11Z はそのまま残り、ミリ秒を書く機器ならそれも保たれます。
1 つ役立つ副作用があります。ISO 8601 は普通のテキストのままでも正しく並べ替わるので、日付として認識していないツールでも time 列で並べ替えれば正しく順序が付きます。同じ理屈の落とし穴として、タイムスタンプのない地点はゼロやエポックで埋められるのではなく空のセルになります。混在するエクスポートは実際に起こります。時刻付きで記録されたトラックの隣に、手で印を付けた時刻を持たないウェイポイントが並ぶ、といった具合です。
座標の表をダブルクリックで開くと 2 つのことが起きがちです。小数点にカンマを使う地域設定では、48.137154 が数値ではなくテキストとして読まれ、緯度の列全体が左詰めになりグラフに使えなくなります。そして time 列はしばしばローカルのタイムゾーンの日時として再解釈され、UTC のトラックが 1 時間以上黙ってずれます。
どちらも開くのではなくインポートすることで避けられます。Excel のテキストインポートダイアログではファイルの原点を設定でき、列ごとに指定できます。2 つの座標列は英語の数値形式を、time 列はテキストのままにしておくのが最も安全です。pandas ではこの問題はそもそも起きません。read_csv がファイルを直接扱い、parse_dates=["time"] を指定すればタイムゾーン情報付きのタイムスタンプになります。オフセットがすでに文字列の中にあるからです。
XML は構造の分だけバイト数を払います。すべての地点に標高とタイムスタンプを持つ、1 秒ごとに 2 時間分の 7,200 地点を持つ合成トラックで、GPX はおよそ 950 KB、1 地点あたり約 132 バイトで、その大半は繰り返される trkpt、ele、time タグです。同じ地点を CSV にするとおよそ 500 KB、1 地点あたり約 70 バイトで、しかも何も落としていません。
どちらの数字も単独では大したことがなく、それこそが指摘すべき点です。サイズを理由にこの変換をする意味はありません。無料の上限は 100 MB で、1 地点あたり 132 バイトなら 100 MB の GPX はおよそ 75 万地点、1 秒ごとに 9 日間連続で記録した量に相当します。その範囲のファイル——1 シーズン分のアクティビティをまとめたもの——は実在し、変換もできますが、ブラウザーのタブはそれなりのメモリーを必要とします。
ここで変換されるすべてのファイルは同じ 6 列を同じ順序で持つので、フォルダーごとまとめるのは繰り返されるヘッダー行を落とすだけの作業です。glob に対する pd.concat か、スプレッドシートでの貼り付けです。まとめた表にないのは、その行がどのファイルから来たかを記録するものです。name 列はトラック名を運びますが、多くのエクスポートはそれを機器の既定値のままにしているか、まったく省いています。
各ファイルを読み込む間にファイル名を追加の列として加えておいてください。pandas ならループの中の 1 行です。統合の後ではなく前に行う価値があります。5 万行が 1 つのフレームに入ってしまえば、14 回のライドを区別するのはタイムスタンプだけになり、同じ朝に記録された 2 つのセッションは、時刻で並べ替えた瞬間に入り混じります。
解析も書き込みもこのタブの中で行われます。GPX をどこかへ運ぶ通信は一切なく、変換中にネットワークパネルで確認できますし、ページを読み込んだあとなら接続を切っても変換は動きます。この主張は、他の多くの組み合わせよりここで価値があります。
GPX はある主題についての文書ではありません。あなたが正確にいつどこにいたかの一覧です。ライドの最初と最後の地点はしばしば自宅の住所そのもので、6 時40分の安静時心拍数は家が空だった時間を語ります。CSV はむしろ元より露出しています。スプレッドシートを開ける誰にでも読めるからです。GPX を保管している場所にそのまま保管してください。
| GPX | CSV | |
|---|---|---|
| 正式名称 | GPS Exchange Format | Comma-Separated Values |
| 拡張子 | .gpx | .csv |
| メディアタイプ | application/gpx+xml | text/csv |
| 最初の公開 | 2002 | 1972 |
| 発行元 | Topografix | — |
| 仕様 | GPX 1.1 | RFC 4180 |
| ライセンス | オープン標準 | オープン標準 |
| 現在の位置づけ | 現行 | 現行 |
| ブラウザで開けるか | 対応なし | 対応なし |
| 代わりに検討される形式 | KML, TCX | XLSX, JSON, Parquet |
開くプログラムが重なりません。GPX はGarmin BaseCamp、Strava、QGISで、CSV はMicrosoft Excel、LibreOffice Calc、pandasで開きます。結果を渡す相手には後者のどれかが要ります。
2 つは狙っている用途が違います。GPX は地図と運動の記録、CSV はプログラム間のデータ受け渡しです。ここは考える価値があります。一方が存在する理由が、そのままもう一方が使いにくい理由になっていることが多いからです。
GPX は Topografix の形式です(2002 年に登場)。 GPX 1.1 で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。
CSV は 1972 年から使われています。規定は RFC 4180 です。Microsoft Excel、LibreOffice Calc、pandasがこの形式を読めます。
CSV は 1972 年、GPX は 2002 年に登場しました。人に渡すならたいてい古いほうが安全で、新しいほうは同じ仕事をより少ないバイト数で片づけます。
いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。
はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。
GPX と CSV は、内容の表し方が根本から違います。ですからこの変換は複製ではなく再構築です。誠実ではありますが、1 バイトも同じというわけではありません。 記録された地点 1 つにつき 1 行です。位置・標高・時刻のほかにファイルが持っていたものは、表には入りません。
変換には要りません。すでに開いているブラウザーの中で行われます。そのあと結果を開くには、お使いの端末がふだん Comma-Separated Values を表示するのに使っているソフトが必要です。