- 我查询一个区域内的坐标集合发现当这个范围特别大(>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区域查询误差造成的呢?