昨天晚上看到《APP后台运维与实践》中介绍MongoDB,其中有一个应用案例,讲的就是LBS应用,看到对于附近的人,及距离计算都非常方便

封装了大量的地理位置操作,全球流行的LBS服务Foursquare,快的曾经都是用MongoDB的地理位置查询功能

MongoDB原生支持地理位置索引,可以直接用于位置距离计算和查询。

db.runCommand( { geoNear: "places", near: [117.034449,36.673595], num:1000 })

查询结果默认将会由近到远排序,而且查询结果也包含目标点对象、距离目标点的距离等信息

MongoDB地理位置索引

(1)2d 平面坐标索引,适用于基于平面的坐标计算

(2)2dsphere 几何球体索引,适用于球面几何运算

建立索引:

> db.location.ensureIndex({'coordinate':'2d'})> db.location.ensureIndex({'coordinate':'2dsphere'})

查询坐标参数

(1)坐标对(经纬度)根据查询命令的不同,$maxDistance距离单位可能是 弧度 和 平面单位(经纬度的“度”)

db..find( { :

{ $nearSphere: [ , ] ,

$maxDistance:} } )

(2)GeoJson $maxDistance距离单位默认为米:

db..find( { :

{ $nearSphere :

{ $geometry :

{type :"Point",

coordinates : [ , ]} ,

$maxDistance :} } } )

eg:1.附近的人

A.和坐标[117.034449,36.673595]的间距在1000米内的坐标

db.location.find({"coordinate":{

"$nearSphere:[117.034449,36.673595],

"spherical":true,

"$maxDistance":1000/6378137,

"distanceMuitiplier":637813

}})

说明:

使用$nearSphere,查找有哪些坐标和用户当前坐标直线距离为某个固定值以内

spherical为true表示计算距离

distanceMuitiplier指定地球半径来得到实际的千米或米的距离,1000/6378137把距离转化为弧度

B.查找500米内的

db.location.find({"coordinate":{

"$nearSphere:[117.034449,36.673595],

"spherical":true,

"$maxDistance":500/6378137,

"distanceMuitiplier":637813

}})

C.查找500米内的坐标,同时显示和目标坐标的距离

db.runCommand({

"geoNear":location",

"near":[117.034449,36.673595],

"spherical":true,

"$maxDistance":500/6378137,

"distanceMuitiplier":637813

})

说明:

geoNear是基于db的command,返回结果包含距离信息

2.查找某个范围内的坐标

db.location.find({

"coordinate":{

"$geoWithin":{

$box:[[117.034233,36.667574],[117.056223,36.679211]]

}

}

})

说明:

$geoWith操作符搜索某个范围内的坐标,支持$box矩形,$center圆,$polygon多边形

还可以使用 PostgreSQL+PostGIS

mongodb lbs java_MongoDB开发LBS应用相关推荐

  1. 结合MongoDB开发LBS应用

    http://www.cnblogs.com/jifeng/p/4356052.html 然后列举一下需求: 1.实时性要高,有频繁的更新和读取 2.可按距离排序支持分页 3.支持多条件筛选(一个经纬 ...

  2. 结合MongoDB开发LBS应用(mongodb geo)

    简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在的项目也正从事相关系统的开发,我们使用的是S ...

  3. 结合MongoDB开发LBS应用(转)

    原文链接:结合MongoDB开发LBS应用 简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在 ...

  4. MongoDB开发LBS应用

    随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理. 关于LBS的详细介绍及通用的几个解决方案,可以参考:深 ...

  5. 12.Laravel5学习笔记:使用mongodb开发LBS应用

    做LBS应用有多种方案,这里介绍一下在Laravel5中使用Mongodb来实现,文章参考了: 深入浅出Symfony2 - 结合MongoDB开发LBS应用 环境说明: php集成环境:xampp ...

  6. PokemonGo:LBS游戏开发

    写在前面 去吧!皮卡丘! 小时候拥有一台任天堂是多少熊孩子的梦想,每个夜晚被窝里透出的微弱光线,把小小的童年带入另一个世界,家门口的鸟和狗,森林里的虫和瀑布,山洞里的超音蝠,带着小小的梦,走过一个个城 ...

  7. android 地球坐标 火星坐标系,Android LBS地图开发:地球地理GPS坐标系经纬度偏移偏差...

    Android LBS地图开发基础知识之地球地理GPS坐标系经纬度偏移偏差 通常,我们所说的地球地理经纬度是WGS-84坐标系(World Geodetic System-1984 Coordinat ...

  8. 一个使用Ruby on Rails开发LBS网站的简单实例

    一个使用Ruby on Rails开发LBS网站的简单实例 cheungmine 2011-7 这几天一直在学习使用Ruby on Rails(RoR),想建立一个功能全面一点的LBS(Locatio ...

  9. Android LBS地图开发:地球地理GPS坐标系经纬度偏移偏差

    本文作者:ZhangPhil 欢迎各位转载!但请注明转载出处: http://blog.csdn.net/zhangphil/article/details/48024831 Android LB ...

  10. MongoDB:mongodb在项目开发时的安全验证、分页查询操作

    MongoDB:mongodb在项目开发时的安全验证.分页查询操作. 对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵-- 现在贴出来我在项目中是怎么做的. 原创文章,转载请注明出处: ...

最新文章

  1. Mac下修改环境变量
  2. leetcode 98. 验证二叉搜索树 递归遍历左右子树和中序遍历 c语言解法
  3. rpm包安装mysql5.5
  4. HttpContext.Current.Cache vs. HttpRuntime.Cache
  5. Java面向对象编程学习
  6. blockUI应用到Asp.Net页面时服务器控件(Button等)失效的问题
  7. 食物链(扩展域并查集)
  8. 的稳定性 linux_Linux系统KDE桌面,打造最接近Windows的界面环境!不用才后悔
  9. JavaScript中this指针的绑定规则
  10. tcp/ip发送接收总体框架
  11. C/C++经典项目开发:教你破解Windows系统密码,手把手教你做解密项目
  12. 怎么把PDF文档中的重要信息改成红色字体
  13. .net core linux 界面,C# dotnet core + AvaloniaUI 开发桌面软件,hello world
  14. 尹伊:我的学习成长路径
  15. facade设计模式学习(作者:KiddLee 来源:博客园  酷勤网收集 2007-09-03)
  16. MFC真的过时了吗?C++是否真的适合做GUI界面?
  17. Debian11.5和Ubuntu22.04安装fcitx5中文输入法(五笔拼音)
  18. win32 010 使用masm32
  19. 保研面试/考研复试:英语口语面试必备话题及常用句型句式整理(三)
  20. C语言实验——时间间隔(java)

热门文章

  1. 搅拌站特征码序列号_芝奇的特征码与颗粒的命名规则
  2. python与图像处理书籍_数字图像处理与Python实现
  3. PS CS6移动工具中图层与组设置快捷键切换(ps动作录制的妙用)
  4. Unknown host ‘raw.githubusercontent.com‘. You may need to adjust the proxy settings in Gradle
  5. Altium Designer PCB常用规则中英文对照
  6. 不伤眼睛的文字背景色
  7. 微信域名如何防封?微信域名被封了怎么办?微信域名被封能够恢复吗?_如何微信防封域名拦截检测
  8. 空手套白狼案例,18个月零成本开了 3 家健身房,分红400多万!
  9. Trie树(字典树)
  10. 财报季 | 贝壳找房2021年上半年营收449亿元,月活用户达5000万