【问题标题】:Calculate distance in MongoDB is not accurate [duplicate]在MongoDB中计算距离不准确[重复]
【发布时间】:2013-11-03 11:20:57
【问题描述】:

我正在尝试在我的 MongoDB 数据库上构建空间查询(以便使用 geoNear 查找所有结果。

它有效,只是计算的距离根本不准确。所以,这就是我所拥有的:

> db.status.find()
{
    "_id":NumberLong(5),
    "location":{
        "latitude":48.8947767,
        "longitudes":2.103352099999997
    }
}

我有一个索引:

> db.status.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "ns" : "aroundb.status",
        "name" : "_id_"
    },
    {
        "v" : 1,
        "key" : {
            "location" : "2dsphere"
        },
        "ns" : "aroundb.status",
        "name" : "location_2dsphere"
    }
]

这是我的查询:

db.runCommand({ geoNear:"status",near: [ 48.8947767, 2.093352099999997], spherical:true, distanceMultiplier:6371} )

结果是:

{
"ns" : "aroundb.status",
"results" : [
    {
        "dis" : 1.1119514223177513,
        "obj" : {
            "_id" : NumberLong(5),
            "location" : {
                "latitude" : 48.8947767,
                "longitudes" : 2.103352099999997
            }

        }
    }
],
"stats" : {
    "time" : 14,
    "nscanned" : 1,
    "avgDistance" : 1.1119514223177513,
    "maxDistance" : 1.1119514223177513
},
"ok" : 1

}

如您所见,计算出的距离(乘以地球半径以公里为单位)为 1.1119514223177513 公里。

如果我在http://www.lexilogos.com/calcul_distances.htm 网站上计算距离,则计算出的距离为 0.7312508492264875 公里。

使用Google Maps,距离也是0.7312508492264875公里。

所以,问题是:我做错了什么?

【问题讨论】:

标签: mongodb grails geolocation gmongo


【解决方案1】:

MongoDB 需要[longitude, latitude] 格式的坐标。在您的情况下,它是[latitude, longitude],如果您标记字段以标记该顺序与预期不同,这并不重要:

"location":{
   "latitude":48.8947767,
   "longitudes":2.103352099999997
}

仍被解释为[long: 48.8947767, lat: 2.103352099999997]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2017-07-03
    • 2020-11-26
    相关资源
    最近更新 更多