一,介绍
-
MongoDB提供两种地图索引
-
2d索引:通过二维平面记录点坐标,支持在平面几何中计算距离
-
2dsphere索引:支持在球面上进行距离的计算,并且支持mongodb的所有地理空间查询方法(mongodb版本高于2.6官方推荐用此索引)
-
-
查询范围类型
- 点:point
- 线:Line
- 多边形:polygon,box(矩形)
- 圆形:center
-
地理空间查询类型
- “$geoIntersects”操作符找出与查询位置相交的文档
- “$within”查询完全包含在某个区域的文档
- “$near”查询附近的位置
- 注意:$near是唯一一个会对查询结果进行自动排序的地理空间操作,它返回的结果是按照距离由近及远排序的。
- "$intersection"交集
二,2dsphere
-
介绍
- 2dsphere用来查询球面几何,索引只能支持球面几何,允许使用GeoJSON格式指定点、线和多边形。
-
代码实现
-
记录点可以用形如[longitude, latitude]([经度,维度])的两个元素的数组表示:
import pymongo client = pymongo.MongoClient() collection = client.places #向数据库插入数据 collection.insert( { 'name':'Tian An Men Square', 'loc':{ 'type':'point', 'coordinates':[116.2317,2] } } )
-
记录线可以用一个由点组成的数组表示:
{ 'name':'Beihai Park', 'loc':{ 'type':'Line', 'coordinates':[[0,1],[0,2],[1,2]] } }
-
多边形的表示方式与线一样,都是由点组成的数组,但是type不同:
{ 'name':'Yonghe Temple', 'loc':{ 'type':'Polygon', 'coordinates':[[0
-