我需要计算一组点之间的总行进距离。他们都有一个时间戳,以正确的顺序让他们。我只允许使用MongoDB。
样品采集:
{
"_id" : ObjectId("596cd354241aa3174056fb98"),
"spelerID" : 1,
"timestamp" : ISODate("2017-02-01T19:00:00.000Z"),
"coordinates" : {
"type" : "Point",
"coordinates" : [
4.29870386367084,
50.8357637566422
]
}
}
/* 2 */
{
"_id" : ObjectId("596cd354241aa3174056fbb4"),
"spelerID" : 1,
"timestamp" : ISODate("2017-02-01T19:00:01.000Z"),
"coordinates" : {
"type" : "Point",
"coordinates" : [
4.29868458167181,
50.8357575419868
]
}
}
/* 3 */
{
"_id" : ObjectId("596cd354241aa3174056fbce"),
"spelerID" : 1,
"timestamp" : ISODate("2017-02-01T19:00:02.000Z"),
"coordinates" : {
"type" : "Point",
"coordinates" : [
4.29867536067721,
50.8357376028214
]
}
}
我不知道如何以正确的顺序计算这些点之间的距离。
答案 0 :(得分:0)
MongoDB可以使用$ near或$ geoNear来表现两点之间的距离。
按照接近指定点的顺序返回文档,从最近到最远。 geoNear需要地理空间索引。 https://docs.mongodb.com/manual/reference/command/geoNear/
在您的情况下,我认为这不会解决问题,因为您想要在多个点之间执行多个距离计算。
可以使用 MapReduce 指示MongoDB创建非常复杂的算法。即使我不是GIS应用程序的专家,您也可以尝试使用函数创建MapReduce例程,该函数可以根据需要计算多个点之间的距离。
此链接可以帮助您编写要在Map Reduce中使用的JS函数: Calculate distance between two latitude-longitude points? (Haversine formula)
祝你好运!