2017-10-10 16 views
0

GPS座標(経度& Latitude)とタイムスタンプからなるGPSトラックを保存するのに、最も効率的(または最もインテリジェント)な方法についてのご意見をお待ちしています。MongoDB:タイムスタンプを含むGPSトラックを保存する方法

私はこれら二つのアイデアを考えています:

gpsTrack = { 
     "gps_track" : { 
     "type": "FeatureCollection", 
      "features": [ 
       { "type": "Feature", 
       "geometry": {"type": "Point", "coordinates": [104.0, 0.3]}, 
       "properties": { 
        "absolute_timestamp" : "2011-12-31T23:50:59Z" 
       } 
       }, 

      { "type": "Feature", 
       "geometry": {"type": "Point", "coordinates": [128.0, 0.5]}, 
       "properties": { 
        "absolute_timestamp" : "2011-12-31T23:59:59Z" 
       } 
       } 
      ] } 
} 

または配列としてにGeoJSONマルチポイントとタイムスタンプを使用。

gpsTrack = { 
     "geometry": {"type": "MultiPoint", "coordinates": [[104.0, 0.3], [128.0, 0.5]]}, 
     "properties": { 
      "timestamps" : ["2011-12-31T23:50:59Z", "2011-12-31T23:59:59Z"] 
} 

ウェイポイントの総量は、4.000~10.000と仮定されますが、確かに100.000未満です。最初のアイデアでは、すべてのポイントとそのタイムスタンプが別々に保存されているので、コレクションがかなり長くなるのではないかと心配しています。 2番目のアイデアはよりコンパクトで、MultiPoint GeoJSONタイプを利用しています。

ありがとうございます。

+0

トラックデータに対して[LineString](https://docs.mongodb.com/manual/reference/geojson/#linestring)の方が「MultiPoint」に適していませんか? – barbakini

+0

かもしれませんが、MongoDBでジオ空間クエリを実行することはできません。しかし、私はタイムスタンプとそれを結合する方法にもっと興味があります。 – Matthias

+0

LineStringはmongodb geoクエリでもサポートされています。 lineStringまたはMultiPointの横、タイムスタンプの部分。 3番目の要素としてタイムスタンプを座標副配列の中に入れたらどうでしょうか?私はそれを試していないが、おそらくmongodbはジオクエリのためにそれを無視しますが、あなたはそれを使用することができ、座標配列とタイムスタンプ配列と一致する必要はありません – barbakini

答えて

1

タイムスタンプの座標配列を使用することもできます。おそらくmongodbは座標の最初の2つのオブジェクトに興味があります。 3番目のオブジェクトとしてタイムスタンプを入れることができます。私が言ったように、これはcoordinates上で地理クエリを作るためにMongoDBに違反している場合

gpsTrack = { 
    "geometry": { 
     "type": "MultiPoint", 
     "coordinates": [ 
      [104.0, 0.3, "2011-12-31T23:50:59Z"], 
      [128.0, 0.5, "2011-12-31T23:59:59Z"]] 
    } 
} 

、私がしようとしませんでした。

+0

挿入、索引作成、および問合せは正常に機能しました。 PointまたはMultiPointのような既存のデータ型にフィールドを追加できることを知らなかった。私は解決策を受け入れる前に他のアイデアを待ちます。どうも! – Matthias

関連する問題