• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 0

    Mongodb地理空间索引和查询(Geospatial Indexes)

    Posted by 撒得一地 on 2016年4月14日 in Mongodb教程
    国外稳定加速器推荐    Express | Vypr

    MongoDB 提供大量的索引和查询机制,来处理地理空间信息。本节介绍了 MongoDB 的地理特点。关于 MongoDB 中地理空间查询的完整示例,请参见地理空间索引教程。

    表面

    在存储地理数据和编写查询之前, 你必须决定使用哪种表面类型用于执行计算。你选择的类型会影响到你将如何存储数据,选择什么类型的索引也会影响到你查询的语法。

    MongoDB 提供了两种表面类型(surface types):

    球面

    若要在类似地球球面上计算几何,存储球面上的地理位置数据,可以使用 2dsphere 索引。

    根据坐标轴的顺序 ︰ 经度、 纬度,将你的地理位置数据存储为 GeoJSON 对象。GeoJSON 的坐标参考系使用的是 WGS84 基准。

    平面

    如果需要计算距离,就像在一个欧几里德平面上,你可以按照正常几何的求解思路,通过存储坐标对的形式存储地理位置数据并使用 2d 索引。

    地理位置数据

    如果你选择球形表面计算,你可以选择下面任一种方法存储地理位置数据 ︰

    GeoJSON对象(GeoJSON Objects)

    通常通过对 GeoJSON 对象的查询,来对一个球面进行计算。GeoJSON 默认的坐标参照系统使用的是 WGS84 基准。

    在最新的2.4版本中:2.4 版本中的新增 GeoJSON 的存储和查询功能。在版本 2.4 之前, 所有的地理空间数据使用的是坐标对形式。

    在2.6版中发生改变:支持更多的 GeoJSON 类型: 多个点,多个线,多个面等混合的几何体数据类型。

    MongoDB 支持以下的 GeoJSON 对象:

    点(Point)
    线(LineString)
    多边形(Polygon)
    多个点(MultiPoint)
    多条线(MultiLineString)
    多个多边形(MultiPolygon)
    几何集合(GeometryCollection)
    多个坐标对(Legacy Coordinate Pairs)
    

    对使用了 2dsphere 索引的坐标对进行球形表面计算,MongoDB 是通过将数据转换为 GeoJSON 类型,。

    如果你使用 2d 索引来进行平面计算,那么你仅需要存储坐标对数据就可以了。

    操作查询

    MongoDB 的地理空间查询运算符可以让你查询如下内容 ︰

    Inclusion
    包含

    MongoDB 对完全包含在一个指定的多边形内的位置进行查询。包含查询使用 $geoWithin 运算符。

    2d 和 2dsphere 索引两种都支持包含查询。对于包含查询,MongoDB 并不需要使用到索引;然而,这种索引将提高查询性能。

    Intersection
    交叉

    MongoDB 可以查询与指定几何相交的位置。这些查询仅适用于球面上的数据。这些查询使用 $geoIntersects 操作符。

    仅仅 2dsphere 索引支持交叉查询。

    Proximity
    临近

    MongoDB 可以查询离另一个点最近的点。接近度查询使用 $near 运算符。$near 运算符需要一个 2d 或 2dsphere 的索引。

    地理空间索引(Geospatial Indexes)

    MongoDB 提供下列地理空间索引来支持地理空间查询。

    2dsphere

    2dsphere 索引(2dsphere indexes)支持:

    在球形平面上的计算

    GeoJSON 对象,并包括向后遗留的兼容性。

    复合索引。这个复合索引可以包含一个 2dsphere 索引字段以及一些按升序或降序建立的普通索引字段(作为 2dsphere 索引的前缀或者后缀)。
    2.4 新版功能: 在版本2.4之前“2dsphere“ 索引是不可用的。

    2d

    2d indexes support:
    2d 索引支持:

    使用平面几何的方式计算

    普通坐标对(比如,在一个平面坐标系中的点)

    作为复合索引,额外索引一个键。方法是,把额外的一个键作为 2d 索引键的后缀

    地理空间索引和分片(Geospatial Indexes and Sharding)

    你不能使用地理索引来作为 shard key 索引。

    你可以在一个被分片的集合上创建并维护一个一个地理空间索引,使用的不能是分片键。

    对于被分片的几何,使用了 $near 操作的查询是不被支持的。作为替代,您可以使用 geoNear 命令或者 $geoNear 在聚合阶段的时候。

    你还可以使用 $geoWithin 对地理空间数据的查询。

    其他资源

    下面的页面为地理空间索引和查询提供完整的文档︰

    2dsphere Indexes

    2dsphere 索引支持类似地球球面上几何计算的查询。索引支持对 GeoJSON 对象和坐标对的方式进行数据存储。

    2d Indexes

    2d索引支持作坐标对存储的数据,在 MongoDB 2.2 及更早的版本使用。

    geoHaystack Indexes

    haystack堆索引是被特殊优化的索引,用于返回小区域内的结果。对于使用球面几何的查询,比起 haystack 索引,2dsphere 索引更好的选择。

    2d Index Internals

    提供了关于地理空间索引内部更深入的解释。这种内部机制对正常操作来说是不必要的,但可能是有利于解决问题和更进一步的了解。

    上一篇:

    下一篇:

    相关推荐

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    8 + 4 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 重庆时时彩1980网址 北京赛车场 大乐透512复式图片 北京福利彩票销售点申请 北京pk10有人赚钱吗 快乐时时彩开奖号码 18018足彩进球彩开奖记录 七星彩彩版 北京赛车技巧买法 星际娱乐城 湖南幸运赛车开奖直播 篮球nba让分胜负 北京赛车pk拾长龙记录 双色球最新开奖结果 中国体育彩票超级大乐透 北京赛车微信群