以什么单位返回pymongo geo2d聚合结果

时间:2017-04-11 15:55:36

标签: python pymongo geospatial

我的mongodb集合中有以下记录

/* 1 */
{
    "_id" : ObjectId("58ecf141624bc0798ee5882d"),
    "username" : "user.sthlm",
    "location" : [ 
        18.0686, 
        59.3293
    ]
}

/* 2 */
{
    "_id" : ObjectId("58ecf141624bc0798ee5882e"),
    "username" : "user.malmo",
    "location" : [ 
        13.0038, 
        55.605
    ]
}

/* 3 */
{
    "_id" : ObjectId("58ecf141624bc0798ee5882f"),
    "username" : "user.la",
    "location" : [ 
        -118.2437, 
        34.0522
    ]
}

“location”是“2dsphere”类型,它按顺序排列[经度,纬度]

现在我正在使用如下的pymongo查询来检索给定点之间的距离

(斯德哥尔摩协调员) 经度= 18.0686 纬度= 59.3293

for doc in self.users.aggregate([{"$geoNear": {"near": [longitude, latitude],
                                                           "distanceField":"distance",
                                                           "distanceMultiplier": 1.0,
                                                           "num": int(count),
                                                           "spherical": True}}]):

结果如下

  {
      "distance": 0,
      "username": "user.sthlm"
    },
    {
      "distance": 0.08048218816530191,
      "username": "user.malmo"
    },
    {
      "distance": 1.393869662777678,
      "username": "user.la"
    }

在查询回复中,斯德哥尔摩与洛杉矶之间的距离重新调整为1.393869662777678。我不太确定它在哪个单位。

从谷歌地图,坐标之间的距离是8,875公里或5,515英里,而1.3938不适合任何一项法案。从mongoDB文档中,我引用的结果不是以弧度形式返回的。所以我想知道从我的查询响应中引用什么。

由于

1 个答案:

答案 0 :(得分:1)

以弧度为单位返回距离 。通过乘以6371将(非常近似)弧度转换为km。

6371 * 1.393 = 8874 km,如预期的那样。