mongodb空间查询之查询单位
mongodb空间查询之查询单位
1.建立空间索引
www.zzzyk.com
db.collection.ensureIndex({‘geom.coordinates’:’2d’})
2.空间查询
这里遇到的问题是查询的时候会涉及到范围,那么这个范围的单位是什么?
官方文档提到了该单位使用的是弧度。
所以,比如查询的是 5公里范围某个点周围的信息,则使用如下:(官方推荐的坐标顺序采用的是 [lng,lat]。)
{"geom.coordinates":{$within:{$centerSphere:[[116.314869,39.950785],5*0.621/3963.192]}}}
1) geom.coordinates 是前面的空间索引字段
2) $within 某个范围内,可以是圆,多边形等
3) $centerSphere[[lng,lat],radius]
4) radius 是将公里转成英里然后在除以3963.192化成弧度
Ref:
To convert:
distance to radians: divide the distance by the radius of the sphere (e.g. the Earth) in the same units as the distance measurement.
radians to distance: multiply the rad ian measure by the radius of the sphere (e.g. the Earth) in the units system that you want to convert the distance to.
The radius of the Earth is approximately 3963.192 miles or 6378.137 kilometers.
官方资料:http://docs.mongodb.org/manual/core/geospatial-indexes/