Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 869|回复: 0

书籍:基于LBS的兴趣点查询

[复制链接]

该用户从未签到

发表于 2011-10-24 11:37:29 | 显示全部楼层 |阅读模式
问题:

服务端保存有海量的兴趣点(POI,Point of Interest),根据用户的位置,如何判断用户当前出在哪个POI呢?
分析:

兴趣点是海量的,用户也是电信级的。如果每次查询用户所处的兴趣点,都要将全部兴趣点取出来计算一遍距离,从中选取最小的,这样会给服务端带来极大的压力(计算量级别约为:兴趣点数*用户数)。
我们知道赤道约为4万公里,1度大约为111公里,1分大约为2公里,1秒大约为33米(经纬度的单位分别为度、分、秒,1度=60分=60*60秒)。
我们可以根据用户所在位置的经纬度,先从海量数据中选取用户周围一定范围内的兴趣点,然后计算用户与兴趣点之间的距离,从而选出用户所处的兴趣点。
但是,位置信息都是有一定的精度范围的,一般GPS定位精度在10米左右,基站定位精度在1000M左右,另外有的POI本来就是在一起的,比如一个是在一楼,另一个是在两楼。因此如果单单通过计算距离的最小值来选出用户所处的兴趣点也不可能完全正确。我们可以将一定范围以内的兴趣点提供给用户,让用户自己来确定在所处的兴趣点。
详细方案:

假设用户所在的位置信息为(px,py,pm),px表示精度,py表示纬度,pm表示精度。我们从海量兴趣点数据库中,选取满足一下条件的兴趣点:
1.经度范围在px-0.1~px+0.1(单位度)
2.纬度范围在py-0.1~py+0.1(单位度)
备注:0.1度=6分 约等于12公里
这样就可以选出用户周围24公里*24公里这样一个范围的兴趣点。
针对以上兴趣点,我们逐个计算用户与兴趣点之间的距离,选取距离在 1000+pm (单位米)范围内的兴趣点,提供给用户进行选择确认。
计算模型中的参数可根据实际数据进行微调
服务端压力:

以上方案,通过第一次筛选,极大减少了第二次筛选的计算量。主要压力为从海量数据库中查询出满足条件的兴趣点记录。不过这问题不大,完全可以通过优化数据库进行解决,如根据经纬度对表进行分区,或者基于经纬度进行函数索引等等。
获取用户准确位置信息为什么那么难

首先,是因为用户的位置信息有不同的来源:GPS/WIFI/基站;其次,用户是在移动的;最后,每次获得的位置信息的准确度是在变化的。所以这些原因造成想要获得用户的准确位置信息是一件很复杂的事情。
如何获取用户的位置信息

获取用户的位置信息是异步的,android通过调用一个listener回调函数,告诉应用用户的具体位置。但是,这种方式需要用户等一段时间才行,如果希望短时间内获取用户的位置信息,可以采用locationManager.getLastKnownLocation获取用户最近一次的位置信息,然后等待listener来更新更加准确的用户位置信息。
如何获取准确的用户位置信息

前面已经知道,多种原因造成我们获得的用户位置信息不是那么准确,如果我们希望能够得到较为精确的位置信息怎么办?
如果用户是在不断移动的:那么不断通过listener获取用户位置信息,并从中找到最准确的位置信息;
如果用户是相对静止的:那么通过listener获取用户位置信息,并从中找到最准确的位置信息,如果连续n次,都没有找到比之前的位置信息更加准确,那么认为已经找到最准确信息,删除listener;
如果只需要获取用户粗略位置信息:那么通过listerer获取用户位置信息,从前面n个位置信息中,找到最准确的,删除listener;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 22:58 , Processed in 0.305555 second(s), 38 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表