ストレージ、視覚化、分析のためにGPSトラックを最適にモデル化する方法は?


17

GPSトラックとウェイポイント(主に速度、グレード、いくつかの簡単な統計などのメトリックの保存、表示、計算)を処理するソフトウェアを書くことを考えています。

トラックポイントに関して最も概念的に堅牢なデータモデルはどうあるべきかと思いますが、ここにいくつかの「候補」があります。

  1. トラックをトラックポイントのシーケンスとして考える:

    1.1。地図投影は2Dであるため、トラックは「2D」と見なされます。トラックポイントには標高がある場合とない場合、タイムスタンプがある場合とない場合があります。高度とタイムスタンプは「追加」、「オプション」とみなされます。地上アプリケーションの場合、標高は緯度/経度の直接関数です(DEMで取得可能)。

    1.2。地理空間は確かに3Dであり、受信機の軌跡は3Dであるため、トラックは「3D」と見なされます(したがって、2D投影はデータ削減の形式です)。タイムスタンプが存在する場合と存在しない場合があります(トラックは手で描いた可能性があります)。

    1.3。トラックは「4D」(3空間+時間)と見なされます。したがって、手描きのマップは、標高とタイムスタンプがnull存在する、または存在しない特別なケースですが、Trackpointプロパティは常に「そこ」にあります。

  2. トラックは、すべてのストリームの長さが等しいストリームの辞書と見なされます。緯度のリスト、経度のリスト、標高のリスト、タイムスタンプの1つなどがあります。これにより、各プロパティの統計を簡単に計算でき、トラックポイントの概念はある意味で「仮想」になります。多くのストリームの断面。

正しく理解できれば、GPX形式は1.1を採用し、KMLは1.2を採用します。(タイムスタンプのサポートなし)、およびStrava APIは2(JSON形式)を採用しますが、最終的にはこれらはシリアル化とストレージ用の単なるFILE形式であり、必ずしもモデリング、計算表現、および数値計算用ではありません。

オブジェクト指向の意味で、好ましい形式はありますか?その理由は?(厳密な型付けと賢明なモデリングは、少なくとも意味をなさない操作を回避すると信じています)。

編集:いくつかの「興味深い」追加の質問:

  • 手描きのトラックは、デバイスで記録されたトラックログと概念的に同じものですか?それらは異なるデータ型であるべきですか?
  • KMLがnullの標高をゼロとして保存することは「正しい」と見なされるべきですか?ゼロは標高であり、標高がわからない場合は、数値のゼロを割り当てるべきではありませんか?
  • 標高のあるトラックで、標高がDEMデータ(「オフライン」)またはGPSデータまたは気圧データ(「現場」)から抽出される場合、それは重要ですか?Trackオブジェクトでこれにフラグを立てる必要がありますか?別のトラックポイントプロパティに保存しますか?無視?それらは異なるコレクションデータ型であるべきですか?
  • デバイスに記録されたトラックをマップエディターで編集(ポイントの追加、移動、削除)したり、異なる日付のトラックを結合したりする場合、トラックポイントのタイムスタンプはどのように処理する必要がありますか?nullに「リセット」する必要がありますか?以前のオブジェクトとは異なるタイプのオブジェクト(トラックポイントコレクション)を作成する必要がありますか?

3
3.トラックは、x、y、z、m []および時間属性を持つポイントのコレクションです。キャプチャされた各ポイントのこれら5つの値を含むCSVファイルは、堅牢なデータモデルには十分です。あなたは空想のようなものが必要な場合<>{}、メタデータ- -あなたのデータを整理するためにあなたはそれが間違ってやっています。
nagytech

1
古き良きCSVに同意します。これはGPSが記録しているすべてのものを表しています。しかし、GPX形式はGPSデバイスではかなり一般的です。GPSとKMLの両方がXMLデータ形式であるため、このリンクは価値があります。stackoverflow.com/questions/1820129/...
ピート

XMLは「素晴らしい」ものであり、すべて(@Peteのリンクされた投稿にある理由のため)、これらの点はどれも関係ありません。どちらかといえば、オーバーヘッドは数の処理を遅くするだけで、データストレージと送信方法を肥大化します。確かに、もしあなたがmom-n-pop操作をしているなら、これらの問題に遭遇するのに十分なデータは決してないでしょうし、あなたの番号の計算処理は激しくなることはないでしょう。いずれにせよ、操作を維持するためのリソースはありません。これにより、XMLが不要になります。
nagytech

1
この質問は、実際の実装よりも、モデリングとデータの設計(概念的な本質の表現)に関係があることに注意してください。これまでのコメントは、ファイル形式に焦点を当てています。これは、ファイル形式はデータ自体の性質よりも実装媒体に依存しているため、さらに遠く離れていると思います。
heltonbiker

1
オブジェクト指向では、ポイント(lat、lng、ele、time、speed、bearingなど)を保持できるLineクラスを使用しました。そして、そこから、手描きまたは意図された「トラック」を表すルートと、時間/速度データを含む実際のトラックを表すトラック。概念的には、それらは異なっていると思います(実際のトラックに対して、手描きや地図製作者などによって提供されます)。確かに用語は単なるセマンティクスですが、実際の型を使用すると便利です(単に「トラック」としてまとめて使用するよりも)。また、シリアル化形式に関しては、GeoJSONを検討します:en.wikipedia.org/wiki/GeoJSON
チャーリーコリンズ

回答:


4

私はこれにアプローチする方法がたくさんあるので、この質問が実際に決定的に答えられるとは思わない..

ただし、これらの考えは関連する場合があります。

データストレージは比較的重要ではありません。データベース、JSON、KMLなど、どのようなメカニズムを使用しても、それは「フラットストレージ」のままです。

重要なのは、使用するソフトウェアと、モデリングを実行できるようにソフトウェアでデータをどのように表現するかです。

速度は、距離x時間、またはデータのソースとなるGPSデバイスからの出力の2つの方法で利用できます。したがって、時間は情報項目としてではなく、無関係になります。

さらに、トラックの先頭からのオフセットを使用して時間を考慮することもできます。速度と距離がある場合は、ポイントで時間を計算できます。(2点間の距離は、さまざまな方法で決定できます)

標高は、空間モデルの一部と見なされる必要があります。これらは、トラック自体に関する興味深い情報全体を決定するのに関連しています。たとえば、勾配を計算して、トラックに沿った速度の変動を理解できます。勾配がない場合は、アクセルから足を離したために速度が低下したり、速度が上昇した可能性があります。

トラックと手書きトラックのマージに関しては、時間はほとんど関係ありません。任意の速度を適用して時間を決定することができます。たとえば、指定された速度でトラックをトラバースする時間などです。数日離れてトラックをマージする場合、データは単に意味をなさないため、おそらくトラックの先頭からのオフセットを使用して、時間フィールドをリセットする必要があります。

標高が不明な場合は不明であるため、ゼロにすることはできません。負の標高も有効な標高であるため、負であってはなりません。(海面下の谷、鉱山の穴など)

はい、DEMSは利用可能です。はい、それらから抽出できます。十分に正確ですか?ありえないことですが、精度が問題にならない限り。GPSまたは気圧計を使用すると、標高が最高になります。

だからあなたに近づいて答えをしようとする:

任意のフラット形式でデータを保存しますが、PostGISPostGRESを使用することをお勧めします。3Dを適切に処理します。その後、PostGISの広範な空間関数を使用して、データを操作/モデル化できます。

開発する何らかの形式のカスタムプログラムを使用する場合は、配列ではなくオブジェクト指向のアプローチを使用してください。配列を使用する場合は、データベースも使用できます。


1
あなたの時間と関心に感謝します、あなたの答えは非常に興味深いものでした。しかし、私は「同意することはできません」という点で、速度は標準的な変数であり、時間はそうではないということです。これには多くの理由がありますが、主に速度は時間に対する距離の導関数であるためです。セグメント時間にわたってセグメント距離を導出すると、常に良好な速度と特別に良好な平均速度が得られます(インスタント速度よりも有用であることがわかりました)。一方、速度を積分すると、短いサンプル数の後に積分エラーが非常に間違った結果をもたらします。
heltonbiker

2
はい、私はその点を認めることができます。ただし、GPSトラックの使用自体は位置誤差の影響を受けます。それはすべてあなたが得ることができる精度の問題です。時間は非常に正確ですが、GPSの位置エラーにより、これを使用してもエラーが発生します。トラックポイントの1秒間隔は1秒だけですが、GPSの内部では、アルゴリズムが推定位置に到達するためにとにかく補間されている可能性があります。明らかに、データの粒度は、選択された分析方法に大きな影響を与えます
マーク・クピット

非常にうまく言えば...だから私はすでに「瞬間速度」のプロットをあきらめて、ある種の「瞬間平均速度」を求めて、「軌道の与えられた点ごとに、その瞬間平均速度が平均である」最後のN分の速度。」それは非常にうまくプロットし、旅行に沿って速度変動の適切な感覚を与えます。しかし、適切な計算は難しい場合があり、ほとんどの場合計算量が集中します。
heltonbiker

0

別の回答で既に述べたように、多くの異なるアプローチがあります。「概念的に堅牢なデータモデル」を求めたので、多くの研究の後に、「移動オブジェクト」の概念に対する2つのまったく異なるアプローチを提供し、多くの重複(良い意味で)をもつ2つの素晴らしい知識を見つけました。

  1. Springer Verlagが発行したGennadyとNatalia Andrienkoの書籍、たとえば、同じ出版社の優れた視覚分析など。強くお勧めします。
  2. ISO / OGC(ISO 191xx基準)、特にISO 19107(空間スキーマ)、19108(時間スキーマ)、19111(座標による空間参照)、19141(移動機能)および19148(線形参照)の抽象仕様(概念スキーマ)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.