mongodb lbs java_MongoDB开发LBS应用
昨天晚上看到《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应用相关推荐
- 结合MongoDB开发LBS应用
http://www.cnblogs.com/jifeng/p/4356052.html 然后列举一下需求: 1.实时性要高,有频繁的更新和读取 2.可按距离排序支持分页 3.支持多条件筛选(一个经纬 ...
- 结合MongoDB开发LBS应用(mongodb geo)
简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在的项目也正从事相关系统的开发,我们使用的是S ...
- 结合MongoDB开发LBS应用(转)
原文链接:结合MongoDB开发LBS应用 简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在 ...
- MongoDB开发LBS应用
随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理. 关于LBS的详细介绍及通用的几个解决方案,可以参考:深 ...
- 12.Laravel5学习笔记:使用mongodb开发LBS应用
做LBS应用有多种方案,这里介绍一下在Laravel5中使用Mongodb来实现,文章参考了: 深入浅出Symfony2 - 结合MongoDB开发LBS应用 环境说明: php集成环境:xampp ...
- PokemonGo:LBS游戏开发
写在前面 去吧!皮卡丘! 小时候拥有一台任天堂是多少熊孩子的梦想,每个夜晚被窝里透出的微弱光线,把小小的童年带入另一个世界,家门口的鸟和狗,森林里的虫和瀑布,山洞里的超音蝠,带着小小的梦,走过一个个城 ...
- android 地球坐标 火星坐标系,Android LBS地图开发:地球地理GPS坐标系经纬度偏移偏差...
Android LBS地图开发基础知识之地球地理GPS坐标系经纬度偏移偏差 通常,我们所说的地球地理经纬度是WGS-84坐标系(World Geodetic System-1984 Coordinat ...
- 一个使用Ruby on Rails开发LBS网站的简单实例
一个使用Ruby on Rails开发LBS网站的简单实例 cheungmine 2011-7 这几天一直在学习使用Ruby on Rails(RoR),想建立一个功能全面一点的LBS(Locatio ...
- Android LBS地图开发:地球地理GPS坐标系经纬度偏移偏差
本文作者:ZhangPhil 欢迎各位转载!但请注明转载出处: http://blog.csdn.net/zhangphil/article/details/48024831 Android LB ...
- MongoDB:mongodb在项目开发时的安全验证、分页查询操作
MongoDB:mongodb在项目开发时的安全验证.分页查询操作. 对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵-- 现在贴出来我在项目中是怎么做的. 原创文章,转载请注明出处: ...
最新文章
- Mac下修改环境变量
- leetcode 98. 验证二叉搜索树 递归遍历左右子树和中序遍历 c语言解法
- rpm包安装mysql5.5
- HttpContext.Current.Cache vs. HttpRuntime.Cache
- Java面向对象编程学习
- blockUI应用到Asp.Net页面时服务器控件(Button等)失效的问题
- 食物链(扩展域并查集)
- 的稳定性 linux_Linux系统KDE桌面,打造最接近Windows的界面环境!不用才后悔
- JavaScript中this指针的绑定规则
- tcp/ip发送接收总体框架
- C/C++经典项目开发:教你破解Windows系统密码,手把手教你做解密项目
- 怎么把PDF文档中的重要信息改成红色字体
- .net core linux 界面,C# dotnet core + AvaloniaUI 开发桌面软件,hello world
- 尹伊:我的学习成长路径
- facade设计模式学习(作者:KiddLee 来源:博客园 酷勤网收集 2007-09-03)
- MFC真的过时了吗?C++是否真的适合做GUI界面?
- Debian11.5和Ubuntu22.04安装fcitx5中文输入法(五笔拼音)
- win32 010 使用masm32
- 保研面试/考研复试:英语口语面试必备话题及常用句型句式整理(三)
- C语言实验——时间间隔(java)
热门文章
- 搅拌站特征码序列号_芝奇的特征码与颗粒的命名规则
- python与图像处理书籍_数字图像处理与Python实现
- PS CS6移动工具中图层与组设置快捷键切换(ps动作录制的妙用)
- Unknown host ‘raw.githubusercontent.com‘. You may need to adjust the proxy settings in Gradle
- Altium Designer PCB常用规则中英文对照
- 不伤眼睛的文字背景色
- 微信域名如何防封?微信域名被封了怎么办?微信域名被封能够恢复吗?_如何微信防封域名拦截检测
- 空手套白狼案例,18个月零成本开了 3 家健身房,分红400多万!
- Trie树(字典树)
- 财报季 | 贝壳找房2021年上半年营收449亿元,月活用户达5000万