基于位置服务(Location Based Services,LBS)是指围绕地理位置数据而展开的服务,其由移动终端使用无线通信网络(或卫星定位系统),基于空间数据库,获取用户的地理位置坐标信息并与其他信息集成以向用户提供所需的与位置相关的增值服务。
服务提供商获得移动对象的位置以后,用户可以进行与该位置相关的查询。LBS是将移动通信技术和定位技术相结合而提供与位置有关的一种增值服务,用户通过使用移动设备的定位技术来获得自身的地理位置,LBS并根据用户的位置信息和查询信息以及通过网络为用户提供与位置相关的各种服务。
目前比较常见的应用实现:
-
微信:附近的人
-
共享单车:查看附近可用的车、虚拟停车位
-
百度地图/高德地图:探索附近
-
打车软件:平台向用户分配距离最近的司机
经度+纬度形成的坐标系可以近似精确的描述人或者物在地球上的位置。GeoHash是位置坐标生成的hash值。
GeoHash不是一个精确的地标,而是一个区域,hash值越长代表的区域越小,描述的位置越精确。
将地球平面图分为4个象限,每个象限再平分为4个象限,无限细分,这样地图将被分为若干个区域,每个区域根据算法生成一个Hash值。Hash值越相似就代表两个区域的位置越近。
以数字出版基地坐标 [108.840014,34.217209]为例
- 将维度范围(-90,90)平分成两个区间(-90,0)、(0,90)
- 目标维度在前一个范围内时编码为0,后一个范围内编码为1,34.217209属于(0,90),因此编码为1
- 将(0,90) 分成(0,45)、(45,90)两个区间,34.217209位于(0,45),编码为0
- 依次类推,直到精度符合要求,可得当前纬度编码为 [1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1]
左 | 中 | 右 | 当前纬度编码 |
---|---|---|---|
-90.0 | 0.0 | 90.0 | 1 |
0.0 | 45.0 | 90.0 | 0 |
0.0 | 22.5 | 45.0 | 1 |
22.5 | 33.75 | 45.0 | 1 |
33.75 | 39.375 | 45.0 | 0 |
33.75 | 36.5625 | 39.375 | 0 |
33.75 | 35.15625 | 36.5625 | 0 |
33.75 | 34.453125 | 35.15625 | 0 |
33.75 | 34.1015625 | 34.453125 | 1 |
... | ... | ... | ... |
经度计算方式与纬度相同,可获取到当前经度编码为 [1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]
左 | 中 | 右 | 当前经度编码 |
---|---|---|---|
-180.0 | 0.0 | 180.0 | 1 |
0.0 | 90.0 | 180.0 | 1 |
90.0 | 135.0 | 180.0 | 0 |
90.0 | 112.5 | 135.0 | 0 |
90.0 | 101.25 | 112.5 | 1 |
101.25 | 106.875 | 112.5 | 1 |
106.875 | 109.6875 | 112.5 | 0 |
106.875 | 108.28125 | 109.6875 | 1 |
108.28125 | 108.984375 | 109.6875 | 0 |
... | ... | ... | ... |
将经度和纬度的编码合并,奇数位是纬度,偶数位是经度。
经度:108.840014 = [1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]
维度:34.217209 = [1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1]
合并后结果:
[1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1]
-
定义一个32进制的基准
0 1 2 3 4 5 6 7 8 9 b c d e f g 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 h j k m n p q r s t u v w x y z 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 -
将获取到的二进制数转换为32进制
[1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1]
=》
wqj6stnc