mongodb 查询区域范围内的经纬度坐标集合,发现查询出的结果有一部分坐标在区域范围以外

  1. 我查询一个区域内的坐标集合发现当这个范围特别大(>300km)时,会查询出一些在区域范围外的坐标。这是因为半径太大误差造成的还是我写的代码有问题呢。当这个范围小一点时,发现查询出的结果是正常的。
Bson bson = Filters.geoWithinCenterSphere(“loc”, 110.29239, 30.2323, 120 / 6371000); // 120米除以6371000转换成弧度

FindIterable findIterable = mongoTemplate.getCollection(“test”).find(bson);  

我用命令查询

db.places.find( { loc :
                  { $geoWithin :
                    { $geometry :
                      { type : "Polygon",
                        coordinates : [ [
                                          [ 151.53203354373443 , 58.49758352997918 ] ,
                                          [ 151.53203354373443 , 58.60891434369525] ,
                                          [ 157.98703167431324 , 58.60891434369525 ] ,
                                          [  157.98703167431324 , 58.49758352997918 ],
                                          [151.53203354373443 , 58.49758352997918]
                                        ] ]
                } } } } )

发现结果列表中有个别经纬度不在这个区域范围内。比如:156.1194,58.638217这个一个坐标。
不明白是我查询方法有误?还是mongodb区域查询误差造成的呢?

阅读 2.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题