前言:
  非常幸运, 接触过一个与定位服务有些关联的项目. 虽不清楚定位服务内部的实现机制, 但对定位的几种方式也有较清晰的了解.
  定位不在局限于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定位也是种创新的定位方式, 可以说:"取之于民, 用之于民". 其背后的架构和实现, 相比之下也很简单. 最重要的估计还是基础地图服务了. 但无论如何, 其也算是一个大数据处理的案例. 大数据时代即将来临.

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

  

移动互联网实战--wifi定位和架构的更多相关文章

  1. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  2. 在Android里完美实现基站和WIFI定位

    来自:http://www.cnblogs.com/coffeegg/archive/2011/10/01/2197129.html 众所周知的,在OPhone和大部分国产的Android定制机里不支 ...

  3. 百度定位SDK:弥补Android基站WIFI定位缺失

    http://tech.qq.com/a/20120524/000347.htm 如今,基于位置信息的移动应用越来越多,从餐饮.购物等本地生活服务,到定向广告的匹配.移动社交网络的构建,LBS类应用的 ...

  4. wifi定位原理

    wifi定位和手机基站定位类别似,两者都需要收集wifi位置信息接入点. 其实WIFI奇妙,它靠的是侦測附近周围全部的无线网路基地台 (WiFi Access Point) 的 MAC Address ...

  5. Gps定位和wifi定位和基站定位的比较

    现在手机定位的方式是:Gps定位,wifi定位,基站定位 Gps定位的前提,手机开启Gps定位模块,在室外,定位的精度一般是几米的范围 wifi定位的前提,手机要开启wifi,连不连上wifi热点都可 ...

  6. Atitit.互联网 软件编程 数据库方面 架构 大牛 牛人 attilax总结

    Atitit.互联网 软件编程 数据库方面 架构 大牛 牛人 attilax总结 Coolshell 称号.理论与c++ 阮一峰:: 理论高手与js高手 王银:理论高手 赵劼,网名老赵,c#高手 与理 ...

  7. Node.js 实战 & 最佳 Express 项目架构

    Node.js 实战 & 最佳 Express 项目架构 Express Koa refs https://github.com/xgqfrms/learn-node.js-by-practi ...

  8. 移动互联网实战--Web Restful API设计和基础架构

    前言: 在移动互联网的大潮中, Web Restful API逐渐成为Web Server重要的一个分支. 移动端和服务端的交互, 主流的方式还是通过Http协议的形式来进行. 请求以Get/Post ...

  9. 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构

    本篇承接上篇内容,如果你不小心点击进来,建议重新从第一篇开始完整阅读. 构建NetCore应用框架之实战篇索引 一.BitAdminCore框架简介 从前篇论述我们知道,我们接下来将要去做一个管理系统 ...

随机推荐

  1. javascript 分页组件

    自己写的一个简单的分页组件,主要功能还有实现都在JS中,html页面中只用增加一个放置生成分页的DIV,并给定容器的id. html结构如下: <ul class="paginatio ...

  2. 《BI项目笔记》历年的初烟水分均值变化分析Cube的建立

    主要维度: 班组班次检测项质检日期(时间维度)加工客户加工类型收购类型生产线产地烟叶级别 主要指标:慢速测定_平均值快速测定_平均值红外测定_平均值ETL设计 需要抽取的维度表: 序号 表名 说明 备 ...

  3. POM.xml 标签详解

    pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...

  4. 线程池ExecutorService和完成服务CompletionService的使用获取线程的返回结果

    package com.suning.ecif.admin.app.impl.temp; import java.util.ArrayList;import java.util.Collection; ...

  5. MTF(Move-to-front transform)数据转换

    1.什么是MTF MTF(move-to-front)是一种数据编码方式,用于提高数据压缩技术效果. 在数据压缩算法中,MTF可以作为一个额外的步骤.也就是说 ,可以先进行MTF编码,在进行数据压缩. ...

  6. 0060 Linux SELinux 管理命令

    1. SELinux 的起源 SELinux 是一个面向政府和行业的产品,由 NSA.Network Associates.Tresys 以及其他组织设计和开发.尽管 NSA 将其作为一个补丁集引入, ...

  7. sans-serif

    sans-serif无衬线字体,是一类字体,它在操作系统或者浏览器里是可以设置的,你可以把它设置成宋体,也可以设置成微软雅黑,而设置的这种字体肯定是当前系统里存在的字体,所以使用这个字体就一肯能显示出 ...

  8. IE11里边form拦截失效,永远被弹回登录页

    现象描述: 1.在某些服务器上发布了程序以后,用IE11去浏览程序(试了多台电脑都一样),发现总是登录不进去,因为登录之后总是被立即反弹回登录页面,就像是登录后写入的票据瞬间丢失一样. 2.但是同一套 ...

  9. css小知识点

    1.div如何让背景是透明的 如:<div class="ha"></div> <style> .ha{ background:transpar ...

  10. java_easyui体系之DataGrid(4)[转]

    一:简介 在前面DataGrid(3)的基础上添加后台的实现.本来是想只搭建前台页面的.后台不写.现在觉得还是都实现好点.从真实情况出发.后台用的ssh. 1. 新增冻结列功能. 2. 实现界面的添加 ...