MongoDB地标索引

一,介绍

  1. MongoDB提供两种地图索引
    • 2d索引:通过二维平面记录点坐标,支持在平面几何中计算距离

    • 2dsphere索引:支持在球面上进行距离的计算,并且支持mongodb的所有地理空间查询方法(mongodb版本高于2.6官方推荐用此索引)

  2. 查询范围类型
    • 点:point
    • 线:Line
    • 多边形:polygon,box(矩形)
    • 圆形:center
  3. 地理空间查询类型
    • “$geoIntersects”操作符找出与查询位置相交的文档
    • “$within”查询完全包含在某个区域的文档
    • “$near”查询附近的位置
      • 注意:$near是唯一一个会对查询结果进行自动排序的地理空间操作,它返回的结果是按照距离由近及远排序的。
    • "$intersection"交集

二,2dsphere

  1. 介绍
    • 2dsphere用来查询球面几何,索引只能支持球面几何,允许使用GeoJSON格式指定点、线和多边形。
  2. 代码实现

    (参考链接:https://mongoing.com/docs/tutorial/calculate-distances-using-spherical-geometry-with-2d-geospatial-indexes.html

    • 记录点可以用形如[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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值