私の知る限り、「ルート」データの保存/操作/処理に関しては、標準のライブラリ、インターフェイス、または確立された一連のベストプラクティスさえありません。Ride with GPSではこれらの問題に多大な努力を払ってきましたが、関連する問題を解決する他のサイトでも同じことが言えると思います。基準があればいいのにと思います。誰かと一緒に仕事をしたいと思っています。
GPXは問題なく、一種の標準のように見えます...少なくともGPXファイルの処理を開始し、心拍数、ケイデンス、パワーなどのデータを処理するために、全員が同時に独自のカスタム拡張機能をフォーマットに追加していることに気付くまでは。また、ルートポイントをトラックポイントに関連付ける標準的な方法はありません。ルートの「パンくずトレイル」は一連のtrkpt要素として表され、コースポイント(「左折して4番街」など)は別の一連のrtept要素で表されます。理想的には、コースポイントに緯度と経度を与えるだけでなく、特定のコースポイントを特定のトラックポイントに関連付けたいと考えています。パスが同じ通りで複数のループを実行する場合、コースポイントをルートに沿って接続する必要がある場所にあいまいさが生じる可能性があります。
KMLとGarminのTCX形式はGPXに似ていますが、それぞれ長所と短所があります。結局、これらのフォーマットは、実際にはプログラム間でデータを転送する目的にのみ役立ちます。これらは、プログラムでデータを表現する方法や、データに対して実行できる操作の種類の問題には対応していません。
トラックデータをオブジェクトの配列として保存し、キーは緯度、経度、標高、開始からの時間、開始からの距離、速度、心拍数などのさまざまな属性に対応します。さらに、ルートに沿っていくつかのメタデータを保存して指定します各セクションの詳細。トラックポイントの配列を解析するとき、このメタデータを使用してルートを一連のセグメントに分割します。セグメントは、分割、結合、削除、アタッチ、反転などが可能です。また、直線に沿ってポイントを補間するか、エンドポイント間の方向を表すパスを要求することによって、トラックポイントを生成する方法をカプセル化します。これらのメソッドを使用すると、ドラッグ/ドロップ編集やその他の一般的な操作をかなり簡単に実装できます。Routeオブジェクトは、複数のセグメントを含む操作を処理するために使用できます。1つの例は、セグメントで構成されるルート(いくつかの運転方向、直線、歩行方向など)があり、ルートを逆にしたい場合です。プロセスで設定を維持しながら、各セグメントにそれ自体を反転するように依頼できます。より高いレベルでは、Mapクラスを使用してインターフェイスを接続し、コマンドをルートにディスパッチし、一連のスナップショットまたは遷移関数を適切に更新して、適切な元に戻す/やり直しをサポートします。
ルートの操作と生成は目標の1つです。他のものは要約統計量を集約しており、効率的な視覚化/相互作用のためにデータを構造化しています。これらの問題は、データを取り込んで折れ線グラフを作成するシステムによってある程度解決されています。ここでは正確に新しい領域ではありません。ルートデータの興味深い特徴の1つは、x軸に2つの変数を選択できることです。開始からの時間と開始からの距離です。どちらも単調に増加しており、どちらも有用ですが異なるデータの解釈を提供します。距離のx軸を使用して標高のグラフを見ると、自転車が丘を上り下りするのが対称であることがわかります。時間のx軸を使用すると、上り坂の部分はかなり広くなります。これは、グラフ上でデータを視覚化することだけではありません。また、データを要約統計量に処理するときに行う決定にも変換されます。一部の加重平均は、時間に基づいて、一部は距離に基づいて計算するのが理にかなっています。最終的に必要な操作は、最小、最大、加重(独立変数の選択に基づく)平均、ポイントをフィルター処理してフィルター処理された最小/最大/平均を実行する機能(移動したポイントのみを使用、外れ値を無視など)です。 )、さまざまな平滑化関数(たとえば、総高度ゲインの計算を支援するため)、マップ/リデュース機能の基本概念(20〜30mphの間で費やした時間など)、および補間を含む固定ウィンドウ移動平均。後者は、最速の10分、または最高の平均心拍数の10分などを特定する場合に必要です。最後に、
興味のある方は、このすべての実際の例をここで見ることができます:http: //ridewithgps.com/trips/964148
下部のグラフは、マウスで移動し、ドラッグ選択してズームインできます。x軸には、距離/時間を切り替えるためのリンクがあります。下部の左側のサイドバーには、30秒と60秒のベストエフォートが表示されます。これらは、補間を使用した固定ウィンドウ移動平均で行われます。右側のサイドバーで、[メトリック]タブをクリックします。ドラッグ選択してグラフのセクションを拡大すると、選択内容を反映するようにすべてのメトリックが更新されます。
どんな質問にも喜んで答えるか、これらのアイデアのいくつかのある種の標準的またはオープンな実装について誰かと協力してください。
これはおそらくあなたが探していた答えではありませんが、あなたが探しているように見える実際の基準を認識していないので、RidewithGPSで私たちがどのように物事を行うかについていくつかの詳細を提供すると思いました。
ありがとう!