使用GoogleMap和MongoDB的不同测量结果



使用GoogleMap和MongoDB使用相同距离的不同测量结果
事实上,这个问题很难回答。因为需要MongoDB和GoogleMap的方法来解决这个问题。还有一些计算。根据我的其他测试,它们之间的距离差异可能是地球上不同位置的变化。就我而言,这种情况并不重要。但这是个问题。。。


我有两个点的坐标,分别是[41.034892, 28.980788][41.036770, 28.985557]。使用谷歌地图,两点的距离测量为452米。但使用MongoDB $near$maxDistance操作符,我可以在562米处从一个点到达另一个点。

相差110米。有人知道原因吗?

下面是一个示例文档;

{
    "_id": ObjectId("54ddd5a06c0213711ca59257"),
    "loc": { "type":"Point", "coordinates":[41.034892, 28.980788] }
}

使用的查询短语如下;

{
    'loc': {
        $near: {
            $geometry: { "type":"Point", "coordinates":[41.036770, 28.985557] } ,
            $maxDistance: 562                           
        }
    }
}

您可能切换了经度和纬度坐标:在谷歌地图上计算距离时,或者在MongoDB中切换了Point对象中的坐标顺序。

点几何对象的GeoJSON标准规定,数组中的第一项是经度,第二项是纬度。

如果你试图使用谷歌地图计算Lat 28.980788、Long 41.034892和Lat 28.985557、Long41.036770之间的距离,你会得到与MongoDB相同的结果。

在这个页面上的快速检查给了我0.5609公里(560.9米)的距离。

编辑

根据您的评论,我怀疑您可能使用错误的坐标数组创建了Points。这应该是你的样本文件:

{
    "_id": ObjectId("54ddd5a06c0213711ca59257"),
    "loc": { "type":"Point", "coordinates":[28.980788, 41.034892] }
}

最新更新