geoNear返回不正确的距离

时间:2013-05-29 16:24:40

标签: java mongodb geospatial

我正在使用Java中的mongodb的geo功能,我正面临运行命令'geoNear'的以下问题:

假设:

  • 使用GeoJSON对象命名为“GEOENTITIES”的集合
  • 此集合使用Java代码(使用Jongo)编制索引:

    collection.ensureIndex("{ coordinates : '2dsphere' }");
    
  • 存在一个坐标等于[48.0,9.0]

  • 的文件(例子名为'A')

执行时:

{geoNear: 'GEOENTITIES', near: [48.0,9.1], spherical: true, num: 5, distanceMultiplier: 6371}

然后:

我有命令结果:

{ "dis" : 11.11949328574724 , "obj" : { "coordinates" : [ 48.0 , 9.0] , "_id" : { "$oid" : "51a62a5485878b1ceca38ab3"} , "name" : "Toto"}}

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

2 个答案:

答案 0 :(得分:3)

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

  

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

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

答案 1 :(得分:0)

对我感到羞耻,我发现了我的错误......在检查结果时,我在网站上反转了lat / long。

正确的距离是MongoDB给出的距离,所以一切都好。

再次抱歉,感谢A. Jesse Jiryu Davis的帮助:)

编辑:只看到你编辑过的答案,我会对它进行评估,再次感谢。