我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 置当前索引 >

mangoBD地理位置索引JAVA实战

归档日期:06-28       文本归类:置当前索引      文章编辑:爱尚语录

  在现在的移动互联网应用中,LBS功能几乎是每个APP的标配。LBS功能的实现方式也有很多种,Mysql有相应的计算函数,但是Mysql实现此功能需要经过较多的计算,如果数量很大,对于查询性能是个极大的考验。不过对于一开始就使用Mysql的项目来说,需要增加LBS功能就能平和地过渡。

  mongoDB有个重要的特性就是支持二维空间索引,利用mongoDB我们极其容易实现LBS功能。例如,我们有个需求,需要查找在我当前位置附近的学校,学校按距离从近到远的顺序排序,并能准确地获取当前位置到学校的距离。这样的需求,使用mongoDB的空间索引结合特殊的查询方法很容易实现。

  建立MongDB二位空间索引就要在文档中有相应的存储坐标信息的字段。建立空间索引的key可以使用array或内嵌文档存储,但是前两个elements必须存储固定的一对空间位置数值。如

  简单说明一下思路,上述代码主要的思路是在MongoDB中新建文档数据,而且文档中一个名为loc的字段专门存储位置信息即地理位置坐标;然后给集合中的loc字段建立2d地理空间索引。

  因为后续我们需要使用mongoDB的GeoNear命令来做地理空间查询的功能,所以一个文档中只能有一个位置信息存储的字段,多于一个则会报错。

  上面的测试代码显示,我们在mongDB中存储一些学校的信息,并记录了每个学校的坐标信息。

  这个结果是根据距离排序而且有距离的记录,但是距离是经纬度的差值,MongoDB 1.8以后提供了Spherical Model,用distanceMultiplier指定地球半径来得到实际的公里或者米的距离,记得加上spherical:true,命令变为:

  这个num参数是取得记录的条数,适合做列表翻页用,但是地图上我们很难说只取多少个点,而是取多大范围,那么maxDistance参数正好适合,也就是多少范围的;我上面采用的地球半径是米(地球的半径是6378137米),那么这里查询我统一采用米来计算,命令变为:

  整条命令的含义:我要搜索在坐标(113.366498,23.127249)附近2500米范围内最近的学校,最多只能查出10所学校,而且学校所在的城市是在广州。

  测试结果显示,学校按与当前位置的距离由近及远的排序,而且能计算出到学校的距离,完美地实现了我们的需求。

  由此可见,使用mongoDB的二位空间索引的功能,是很容易实现最常规又最实用的LBS需求的,搜索效率也是非常高。

  Mongodb地理位置索引GeospatialIndexing   MongoDB支持二维空间索引,这是设计时考虑到基于位置的查询。例如“找到离目标位置最近的N条记录”。可以有效地作为附加条件过滤。 ...博文来自:pi9nc的专栏

  关于LBS相关项目,一般存储每个地点的经纬度的坐标,如果要查询附近的场所,则需要建立索引来提升查询效率。Mongodb专门针对这种查询建立了地理空间索引。2d和2dsphere索引,分别是针对平面和球...博文来自:Zhangxi

  掌握MongoDB的体系结构以及存储的引擎。学习并掌握MongoDB的安全、复制集、分片和索引。

  背景我们平常打开一些App的时候,经常有一个“查询周边景点”的功能,如我在高德里面就查询到了附近的景点。这种计算如果通过普通的关系型数据库,那对服务器和数据库的性能要求就太高了。我们可以通过Mongo...博文来自:路漫漫其修远兮,吾将上下而求索。

  MySQL的坐标系类型MySQL具有保存地理位置信息的功能,该功能符合OpenGIS的规范数据类型.该规范下有下面的数据类型.坐标POINT线LineStri/Mulit多边形POLYGON几何类型G...博文来自:lzcaqde的专栏

  前景提要:我们公司在aliyun购买一台mongodb服务,最近在项目中需要使用到地理位置排序功能。1、登入阿里云DMS,进入查询窗口,执行地理索引创建指令db.home_store.ensureIn...博文来自:zhouzhiwengang的专栏

  公司需要做LBS方面的应用,经过多放考察,决定使用mongodb。网上很多mongodb的资料,但是很少有java方面的资料,而且mongodb单位的讲解也特别混乱。因此有了这篇博客,欢迎大拿拍砖,请...博文来自:自有贵人相助

  随着LBS应用的遍地开花,在数据库中实现基于地理位置的搜索显得尤为重要.今天研究了下,顺便做个小结.首先设计好一个简单的数据表,用来存放经纬度信息:CREATETABLE`index`(`id`int...博文来自:wang_quan_li的专栏

  转载自:地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare选择MongoDB的原...博文来自:蜗牛爱上星星

  java操作mysql数据库的代码我们已经了如指掌了,增删改查,java对mongodb数据库也是类似的操作,先是数据库连接,再是进行操作。首先我们进入进入admin数据库,然后建立自己的数据库tes...博文来自:Xinghf

  mongoDB支持二维空间索引,使用空间索引,mongoDB支持一种特殊查询,如某地图网站上可以查找离你最近的咖啡厅,银行等信息。这个使用mongoDB的空间索引结合特殊的查询方法很容易实现。前提条件...博文来自:[赣]无言

  关于LBS相关项目,一般存储每个地点的经纬度的坐标,如果要查询附近的场所,则需要建立索引来提升查询效率。Mongodb专门针对这种查询建立了地理空间索引。2d和2dsphere索引,分别是针对平面和球...博文来自:任何技能都是从模仿开始,逐步升华。

  在Redis最新的3.2版本中加入了地理空间(geospatial)以及索引半径查询的功能,这在需要地理位置的应用上或许可以一展身手,先来看下官网对geospatial的介绍Addsthespecif...博文来自:zhang197093的博客

  MongoDB创建地图索引及根据位置坐标查询地点小例子1:MongoDB的安装参照博客:可视化...博文来自:clearss的博客

  地理位置我们拿着纸质地图漫步城市的日子一去不返了。得益于智能手机,我们现在总是可以知道 自己所处的准确位置,也预料到网站会使用这些信息。我想知道从当前位置步行5分钟内可到的那些餐馆,对伦敦更大范围内的...博文来自:gmHappy

  mongodb11天之屠龙宝刀(五)lbs地理位置检索:存储经纬度以及查询原文连接:直通车基本原理LBS,存储每个地点的经纬度坐标,搜寻附近的地点,建立地理位置索引可提高查询效率。mongodb地理位...博文来自:IT届的小学生

  目前基于LBS地理位置的搜索已经应用非常广了,的确是个很方便的东西。我们做程序的就是要考虑如何通过这些功能,来做出更符合用户的内容来。1,如何获取位置例如微信,可以通过发送地理位置来获取到当前用户的经...博文来自:z69183787的专栏

  本文将介绍如何基于mongodb实现地理位置搜寻。LBS,存储每个地点的经纬度坐标,搜寻附近的地点,建立地理位置索引可提高查询效率。mongodb地理位置索引,2d和2dsphere,对应平面和球面。...博文来自:傲雪星枫

  Redis的键值可以支持数据类型:字符串,列表,散表,集合,有序集合、HyperLogLog,通过选用不同的数据结构,用户可以使用Redis解决各式各样的问题。Redis的GEO特性将在Redis3....博文来自:yuan_xw的专栏

  我们可能会遇到根据当前所在的位置,找到自己身边的符合条件的一些商店,酒店之类的。它主要支持两种类型的地理查询:一种是地理点(geo_point),即经纬度查询,另一种是地理形状查询(geo_shape...博文来自:LMC技术人生专栏

  R树作为一种可以存储高维数据的数据结构,在时空数据挖掘和空间信息存储方面得到了广泛的应用,在这里我将介绍如何利用R树建立路网的空间索引,并进行测试。首先我们必须准备数据,才能开始实验,这里选取的是北京...博文来自:weixin_34212189的博客

  (来源)   地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare选择Mongo...博文来自:wzhjdls的专栏

  地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare选择MongoDB的原因之一。我们知道,通常的数据库索引结构是B+Tree,如何将地理位置转化为可建立B+T...博文来自:eros的linux平台技术资料库

  MongoDB支持二维空间索引,使用空间索引,mongoDB支持一种特殊查询,如某地图网站上可以查找离你最近的咖啡厅,银行等信息。这个使用mongoDB的空间索引结合特殊的查询方法很容易实现。现在常见...博文来自:weixin_34342992的博客

  相信学习编程的同学,或多或少都接触到算法的时间复杂度和空间复杂度了,那我来讲讲怎么计算。        常用的算法的时间复杂度和空间复杂度 一,求解算法的时间复杂度,其具体步骤是: ⑴ 找出算法...博文来自:杨威的博客

  本帖只谈技术实现,首先我们自己来编译一个比特币客户端吧, 技术讨论,欢迎大家入伙(注明:csdn)。...博文来自:开心乐源的专栏

  帐号相关流程注册范围 企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...博文来自:小雨同学的技术博客

  最近在做一个每天定点从FTP自动下载节目.xml并更新到数据库的功能。首先想到用 FileSystemWatcher来监控下载到某个目录中的文件是否发生改变,如果改变就执行相应的操作,然后用timer...博文来自:kongwei521的专栏

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  mybatis简单小巧易于上手,方便浏览修改sql语句博文来自:努力+坚持,而且还很年轻

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。   在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 (...博文来自:朱小厮的博客

  我们在做项目的时候有时候需要给图片添加水印,水寒今天就遇到了这样的问题,所以搞了一个工具类,贴出来大家直接调用就行。/** * 图片工具类 * @author 水寒 * 欢迎访问水寒的个人博客:...博文来自:水寒

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  1. 规则引擎面临的问题:业务规则的实现大部分是由开发人员来实现的 业务规则需要业务分析人员能够阅读和理解 业务规则的可读性和用户的友好性都不太好2. DSL领域特殊语言DSL == Domain...博文来自:哎幽的成长

  nginx 是个轻量级的Web服务器,比Apache不差博文来自:老徐2014

  若是研究区在中国,则在地理空间数据云有中国区合成好的数据,直接下载用即可。数据格式为TIF。坐标为WGS84,不用再转换投影。下载网址为:博文来自:hengcall的博客

本文链接:http://hotel-lermoos.com/zhidangqiansuoyin/258.html