geoNear 返回不正确的距离

kij*_*kij 1 java geospatial mongodb

我正在使用 Java 中的 mongodb 的地理功能,并且在运行命令“geoNear”时遇到以下问题:

鉴于:

  • 名为“GEOENTITIES”的集合,包含 GeoJSON 对象
  • 该集合使用 Java 代码建立索引(使用 Jongo):

    collection.ensureIndex("{ coordinates : '2dsphere' }");
    
    Run Code Online (Sandbox Code Playgroud)
  • 存在一个文档(示例中名为“A”),其坐标等于 [48.0, 9.0]

执行时:

{geoNear: 'GEOENTITIES', near: [48.0,9.1], spherical: true, num: 5, distanceMultiplier: 6371}
Run Code Online (Sandbox Code Playgroud)

然后:

我有命令结果:

{ "dis" : 11.11949328574724 , "obj" : { "coordinates" : [ 48.0 , 9.0] , "_id" : { "$oid" : "51a62a5485878b1ceca38ab3"} , "name" : "Toto"}}
Run Code Online (Sandbox Code Playgroud)

为什么距离是 11.11(公里),而从http://williams.best.vwh.net/gccalc.htm计算得出的距离- 例如 - 是 7.46 ?我认为我做错了什么,但不明白是什么,也许经过更多实验的人可以提供帮助?

A. *_*vis 5

交换坐标。您需要(长,纬度):

MongoDB 2.4 中类地球体的默认基准是 WGS84。坐标轴顺序为经度、纬度。

http://docs.mongodb.org/manual/core/2dsphere/