Java geoNear返回不正确的距离
我正在Java中使用mongodb的geo功能,在运行命令“geoNear”时遇到以下问题: 鉴于: 包含GeoJSON对象的名为“GEOENTITIES”的集合 此集合使用Jongo使用Java代码编制索引:Java geoNear返回不正确的距离,java,mongodb,geospatial,Java,Mongodb,Geospatial,我正在Java中使用mongodb的geo功能,在运行命令“geoNear”时遇到以下问题: 鉴于: 包含GeoJSON对象的名为“GEOENTITIES”的集合 此集合使用Jongo使用Java代码编制索引: collection.ensureIndex("{ coordinates : '2dsphere' }"); 示例中名为“A”的文档存在,坐标等于[48.0,9.0] 执行时: {geoNear: 'GEOENTITIES', near: [48.0,9.1], spherical:
collection.ensureIndex("{ coordinates : '2dsphere' }");
示例中名为“A”的文档存在,坐标等于[48.0,9.0]
执行时:
{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公里,而计算出来的距离是7.46公里?
我想我做错了什么,但不知道是什么,也许有更多的人可以帮忙?交换坐标。你需要长时间,拉特: MongoDB 2.4中类地球球体的默认基准是WGS84。坐标轴顺序为经度、纬度
交换你的坐标。你需要长时间,拉特: MongoDB 2.4中类地球球体的默认基准是WGS84。坐标轴顺序为经度、纬度
真可耻,我发现了我的错误。。。检查结果时,我在网站上反转了lat/long 正确的距离是MongoDB给出的,所以一切正常 再次抱歉,感谢A.Jesse Jiryu Davis的帮助:
编辑:只需查看您编辑的答案,我会验证它,再次感谢。真为我感到羞耻,我发现了我的错误。。。检查结果时,我在网站上反转了lat/long 正确的距离是MongoDB给出的,所以一切正常 再次抱歉,感谢A.Jesse Jiryu Davis的帮助:
编辑:只需查看您编辑的答案,我会验证它,再次感谢。差异是因为我在命令中添加了距离参数,地球半径以公里为单位。但是去掉这个参数会得到以下结果:0.0017453293495129868。所以和你不一样,这是有疑问的,我明天会对此进行更多的调查。谢谢你的回复。对不起,在你的代码中没有看到距离参数。你的结果很奇怪,它应该以公里为单位,而不是以半径为单位,对吗?哈,只需将插入中的第二个坐标更改为正确的值,而不是哦,我误解了你-我认为你的文档坐标和你的搜索项具有相同的坐标。我将编辑我的答案。差异是因为我在命令中添加了距离参数,地球半径以公里为单位。但是去掉这个参数会得到以下结果:0.0017453293495129868。所以和你不一样,这是有疑问的,我明天会对此进行更多的调查。谢谢你的回复。对不起,在你的代码中没有看到距离参数。你的结果很奇怪,它应该以公里为单位,而不是以半径为单位,对吗?哈,只需将插入中的第二个坐标更改为正确的值,而不是哦,我误解了你-我认为你的文档坐标和你的搜索项具有相同的坐标。我将编辑我的答案。