テクノロジー · 実用ガイド

GPXルートをトラックに変換した後、点の名前と時刻は残っていますか

距離がゼロでなくなっても検証は終わりません。gpxpy 1.6.2の実測で、点の情報と経路の重複を別々に確認しました。

オリジナル概念図:4種類のGPX試験コンテナと2次元総長。混合例の経路は意図的に重ねています。
オリジナル概念図:4種類のGPX試験コンテナと2次元総長。混合例の経路は意図的に重ねています。 Watch at Ease

ルートを含むファイルでgpxpyの距離がゼロになるときは、まずファイルの構造を確認します。トラックへの変換で距離が得られても、ほかの情報が変わる場合があります。原本を残し、成功表示ではなく、保存後に開き直した内容で判断してください。

Python 3.12.14と公開済みのgpxpy 1.6.2で、GPX 1.1の人工データを4種類試しました。ウェイポイントのみ、ルートのみ、トラックのみ、そしてルートとトラックに意図的に同じ座標を入れた混合ファイルです。実際の移動記録やナビゲーション機器の試験ではありません。

1. 対処を選ぶ前にコンテナを数える

信頼できるローカルコピーを解析し、len(gpx.waypoints)、len(gpx.routes)、len(gpx.tracks)と、各トラックのセグメントを確認します。GPX 1.1は独立したウェイポイント、順序のあるルート点、トラックのセグメントを区別します。ファイルのどこかに3点あるだけでは、記録済みトラックや独立点の接続順序を意味しません。

インストールしたパッケージの全体長メソッドはトラックを走査します。既存ルートの2次元長だけが目的なら、対象ルートごとのroute.length()を先に確認できます。単位はメートルで、ファイル変換は不要です。ルートの獲得標高や3次元距離を求める方法ではありません。

2. 便利なヘルパーにも保持範囲がある

gpxpyのissue 290は、ルートだけでゼロになる理由をすでに説明し、変換ヘルパーも示しています。緯度・経度・標高からトラック点を作り、ルート全体の名前をトラック名に使い、元のルートを削除する内容です。点の全フィールドはコピーしていません。基本問題には既存の答えがあります。

試験ルートは緯度0、経度0・0.01・0.02、標高10・20・30メートルで、各点に時刻、名前、説明、独自拡張を1つずつ付けました。このヘルパーの動作を再実装すると距離は非ゼロになりましたが、保存して開き直すと4種類のフィールド数はそれぞれ3から0になりました。ルート全体の名前は残り、点の名前は残りませんでした。

3. 通常の保存を対照にして原因を分ける

変換せずルートを保存して開き直す対照も行いました。GPX 1.1の対照では、3つの時刻、点名、説明、拡張要素がすべて残りました。この例で変化を生んだ限定的なヘルパーを切り分ける比較であり、すべてのエクスポートやライブラリ全体を問題視する根拠ではありません。

変換前に、残す必要がある点の座標、標高、時刻、点名、説明、拡張要素を一覧にします。変換後の新しいファイルを開き直し、値、個数、意図した順序を比較してください。何らかの名前や時刻が存在するかだけでは不十分です。トラック名と点名は別に確認します。

4. どの経路を一度だけ数えるか決める

混合例では、1本のルートと1本のトラックに同じ座標を意図的に使いました。当初は既存トラックだけが全体長に入りました。ルートを変換して追加するとトラックが2本になり、2次元総長は2,226.39から4,452.78メートルへ倍増しました。人工的な重複例であり、混合ファイルすべてが二重計上になるという意味ではありません。

測定用トラックに加える前に、そのルートが計画、別案、同じ経路の別表現のどれかを判断します。必要なセグメント境界を残し、無関係な区間を結ぶ架空の移動を作らないようにしてください。プレビューで経路を確認し、どの形状を合計するか記録します。もっともらしい総距離だけでは選択を証明できません。

5. 開き直したファイルを明確な基準で受け入れる

既存ツールも変換時の取捨選択を説明しています。GPSBabel 1.10.0は重複を避ける元データ削除と、時刻コピーに関わるtimelessオプションを文書化しています。GPXAnalyzerのウェイポイント専用ツールは並び順と任意の点名を説明し、説明文・記号を省略し、ルートだけのファイルは変換しません。これは読んだ文書の範囲で、ツールを実行した結果ではありません。

新しいファイル名で保存し、原本のハッシュと未変更コピーを残します。コンテナ・セグメント数、選んだ経路、必要な点情報の値と名前、単位、接続順序が目的に合う場合だけ受け入れてください。想定外の変化があれば停止し両方を保管します。原本はバイト単位で不変でしたが、実走距離、厳密なスキーマ適合性、Garmin、BMW、Strava、GPSBabelの動作は検証していません。

オリジナル概念図:限定的なルート変換では4種類の点情報が失われ、通常のGPX 1.1保存対照では残りました。
オリジナル概念図:限定的なルート変換では4種類の点情報が失われ、通常のGPX 1.1保存対照では残りました。 Watch at Ease