移动互联网实战--wifi定位和架构

 

前言:
  非常幸运, 接触过一个与定位服务有些关联的项目. 虽不清楚定位服务内部的实现机制, 但对定位的几种方式也有较清晰的了解.
  定位不在局限于GPS, 基站这种需要硬件支持的, 基于wifi的方式更流行, 而且定位精度很高.
  但问题来了, wifi并非公共基础设施, 为何定位服务能基于wifi提供定位服务呢? 本文来简单的谈一谈其背后的故事和技术.

原理:
  定位的本质很简单: 寻找固定的参考物. 这是我个人所理解和认识的.
  当设备没GPS组件/关闭GPS功能, 往往会采用电信移动运营商的基站来定位, 如下图所示:
  
  基站的覆盖范围, 标识了用户潜在可能的位置. 基站越多, 其相交面积大大缩小了潜在位置可能性. 然而一方面单个基站的覆盖范围较大, 另一方面信号强度很难去标识有效的距离. 因此某种程度上, 定位精度与基站覆盖范围正相关. 当然基站密度和距离算法也决定定位精度, 在城市里, 精度还是很高的.
  从基站定位中, 我们可以发现一个规律: 参照物越密集, 且参照物的覆盖范围越小, 那么定位越准确.
  是否存在类似的参考物呢? 其实它就在我们身边, 那就是无线AP(wifi).
  它具有何种特点呢? 我们一一来枚举下:
  1). 无线AP位置相对固定
  2). 无线AP其有一个全球唯一的MAC地址
  3). 其信号覆盖范围半径小, 远远小于基站
  4). 无线AP的普及率高
  如果定位服务器拥有这些wifi和其位置信息, 那么上述的特点决定基于WIFI的定位更精确.
  这些wifi和位置信息是如何被定位服务商采集和利用的呢?
  一般有两种方式:
  1). 主动采集
  定位服务商, 利用街景车主动去采集街道上wifi列表和其定位的位置信息.
  2). 用户提交
  借助各类终端, 先由GPS进行精确定位, 然后收集到的附近Wifi列表, "偷偷"提交GPS的位置信息和WIFI列表. 并让之相关联. 用户越多, 数据越多, 最后简单通过提交的wifi即可确定其位置信息了.

架构:
  对于基于wifi的定位服务器, 让我们来猜测下其背后的架构.
  整理的架构大致可以分为两部分: 在线查询服务和离线数据处理服务.
  1). 在线查询服务
  其提供实时, 高可靠/高性能的定位查询服务.
  该服务可由以下几个子服务构成:
  • wifi存储服务
  其保存了wifi的 MAC/SSID 到 经纬度的映射关系, 由于MAC地址的全球唯一性. 这边可以借助key/value服务来实现, 比如HBase也是一个很适合的选择.
  • 基础地图服务
  提供了基于经纬度, 检索区县/街道, 附近商家的服务. 往往采用R-tree, M-tree等等高端的地理空间索引存储结构.
  • 位置计算服务
  依据多个参考点及相对距离, 计算一个精确经纬度位置的服务.
  其基础架构图可如下所示:
  
  注: 位置计算服务可以和服务的逻辑接入层合并.
  2). 离线数据处理服务
  该服务收集用户提交上的数据, 进行清洗(去除噪音)后, 导入wifi存储服务中.
  我不太清楚定位服务提供商, 采用的是增量更新的方式, 还是全量替换的方式. 两者都是可接受的.

总结:
  wifi定位也是种创新的定位方式, 可以说:"取之于民, 用之于民". 其背后的架构和实现, 相比之下也很简单. 最重要的估计还是基础地图服务了. 但无论如何, 其也算是一个大数据处理的案例. 大数据时代即将来临.

写在最后:
  
如果你觉得这篇文章对你有帮助, 请小小打赏下. 其实我想试试, 看看写博客能否给自己带来一点小小的收益. 无论多少, 都是对楼主一种由衷的肯定.

   

 

posted on 2015-05-21 13:03  mumuxinfei  阅读(1227)  评论(0编辑  收藏  举报

导航