1

我正在使用 Java 中 mongodb 的地理功能,并且在运行命令“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?我想我做错了什么,但看不到什么,也许有更多经验的人可以提供帮助?

4

2 回答 2

4

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

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

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

于 2013-05-29T19:38:30.030 回答
0

真丢脸,我发现了我的错误……我在检查结果时在网站上颠倒了纬度/经度。

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

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

编辑:只需查看您编辑的答案,我会验证它,再次感谢。

于 2013-05-29T20:21:16.673 回答