日本电子维修技术 手机的 LBS 应用是如何通过 WIFI 和基站对手机定位



基于无线网络可以通过基站反插位置,这点容易理解其原理,但问题是各个应用怎么才能掌握基站数据信息,或者进行实时调用呢?基于WIFI的定位我百思不得其解,请专家赐教,感谢。

评论
//注:此答案略偏学术
定位理论的核心思想:一个特征如果具有空间上的不变性,那么就可以通过它的特征来反算到该特征的空间位置。


在目前的情况下,具有这种空间位置不变性,且容易被移动设备获取的特征,主要就是两类:
1.  移动通讯网络的基站信息
2.  无线局域网的接入点信息

因此,当移动设备捕获到的基站信息和WLAN AP 信息与之前曾经捕获到的信息一致时,就可以认为用户应该基本上是处于同一个位置。 如果把一个地点能够探测到的基站信息和WLAN AP信息统称为该地的电磁频谱特征,而之前又在数据库中记录了电磁频谱特征和坐标的关联关系,那么,所谓的定位,其实就是根据电磁频谱特征查找空间坐标的过程。

以上是从理论角度分析基站和WIFI定位的基本原理,从实用的角度(程序开发人员视角)来看,我们所需要的就是可以通过服务提供商所提供的定位接口,通过向其发送相关的电磁频谱特征,来获取其数据库中所记录的对应特征的空间位置,而无需关心其背后的算法细节。

关于目前常用的定位服务API,包括:
1. 谷歌的定位服务API, 行业标杆
2. 百度的定位服务API,在国内的定位精度不逊于Google,且目前完全免费
3. 驴博士的定位服务API,不甚了解

利益相关说明:
本人与百度之间存在雇佣关系

评论
内网的一篇文章很好的解答了这个问题 ,作者:张传明


一个功能正常的手机,总是能够受到各种无线信号,这些无线信号的“局部唯一性”,是该设备能定位的关键前提。什么叫局部唯一性?我们再把这些具体的信号来展开解释下你就知道了:


基站信号:一个手机能够接打电话、收发短信,说明该手机能与附近基站发起交互,收发信号。特别地,对于智能手机,还可以通过系统的接口得到基站ID。正常情况下,每个基站ID是全球唯一的,这样如果扫到了某个基站ID,我们又知道该基站的位置,便能粗略估计设备的位置。做出这个推测的前提就是一个基站的信号发射范围是有限的,正常的手机,不可能在相距这个基站很远的时候,还收到这个基站的信号。

在无线通信相关的教科书里,讲到基站定位,总是会谈到三角定位,也就是下图描述的原理。下图是很容易理解的,一个手机能扫描到三个基站的信号,因此其必然在三个基站的共同覆盖范围内,从而推算的范围就大大缩小。但现实是很骨感的,在现在的智能手机上,只有极少数的手机可以获取到多个周围的基站ID,而且也无法反算出和这些基站的距离,所以这个算法除非电信运营商自己可以试试,对于别人是没有实战价值的。在实战中,只能是退而求其次,基于单个基站来定位。


WIFI信号:现在的智能手机都支持wifi上网了,而我们连接的每个wifi路由器(包括手机做移动热点的那种),都有全球唯一的MAC地址。更重要的是,wifi路由器的部署成本低,因而非常普遍,在一个楼层里就会有很多个wifi热点。因而不难想到,一旦我们有了这个全球每个路由器的实际位置,那么我们就可以基于用户手机扫描到的周围wifi热点,确定用户当前的位置。

说到这里,有的朋友会问,如果一个人带着手机,开着移动热点到处行走,还有那种地铁、高铁、公交车上的移动wifi,岂不是就会引起定位的错误?答对了,确实是这样,而且根据统计,这种情形还在愈演愈烈。因此,如何想办法来迅速过滤这种移动热点,是个值得研究的问题。

GPS信号:如果手机在室外或者窗边,那么就可以接收到天上的定位卫星发射出来的信号,基于这种信号,可以推算手机到每颗卫星的距离、卫星位置,进而推算出手机的位置来。需要注意的是,这个解算是在GPS芯片中完成的,在手机操作系统层面上,可以直接通过API接口得到解算的结果和误差半径。

对于GPS的原因我们不多解释,但在调用时要注意两点。第一就是GPS的初始定位是很耗时间的,对于老一些的芯片,可能要耗费几分钟才能冷启动定位成功;第二是GPS精度并非是完全可依赖的,在一些地方达到几百米都有可能。

其他以上三种是最常用的定位方式,此外还有蓝牙/IP /地磁场等手段,对于他们的优缺点,我们汇总如下:




开发者如何实现定位能力

千千万万的app难道者都如上述说的,“自行维护基站、WIFI数据库”吗?答案当然是否定的,在实际的工程实践中,主流的做法是两种:

手段之一:调用系统级定位能力无论哪个系统(IOS、安卓、WP)都提供了一套系统级定位能力,这样的定位能力,对应着是一套系统级API,这个API一般来说,总是会有如下几个精度的选项:

高精度:能搜到GPS卫星,则使用GPS定位,否则,则使用WIFI定位,如果WIFI和GPS都无法定位成功,只能根据基站来给出定位结果了。平衡功耗:禁用GPS(因为它非常耗电),优先使用WIFI,如果WIFI不可用,则用基站来进行定位。低功耗(被动定位):根据不同系统的规定,实现方式也不同,但大体上都是共享其他app的定位结果,即其他app以高精度、平衡功耗的方式得到位置,那么这个位置也一并推送给当前使用“低功耗定位”的app,也就是该app不消耗额外的能耗,就完成了定位。

当然,这种系统级定位能力是有着软肋的,软肋在于以下两点:

在基站、WIFI定位能力上,系统定位能力取决于系统自己在这方面投入数据收集推算的能力,这个是参差不齐的。举个简单的例子,百度和高德在中国采集了成百上千个公共场所的室内定位信息,使之能达到米级的室内定位,苹果做了吗?谷歌做了吗?微软做了吗?他们怎么和国内的服务商拼效果?居然还有人说苹果定位和谷歌地图在国内定位准,我真是醉了。在中国,google的服务不可用,考虑到基站、WIFI定位必须连接服务端发请求,因而Android的系统级定位能力的可用性也会有很大的影响,至少那些“水货”手机,在中国基本就没法调用系统定位服务了,而行货手机,相应的厂商会改造这个API接口的实现,使得其重定向为请求国内某些定位服务商,从而使得这个接口重新变得可用(对开发者来说,他并不需要知道这个API是如何实现的)。

但是,我们不得不承认,在IOS和WP系统上,因为OS没有开放出读取基站和WIFI的接口,因此实际上操作系统的定位能力已经形成了垄断,开发者也就无法实现自主的定位能力。这也会导致在苹果和WP手机上,所有的app在同一时刻的定位误差,都是一样的。

手段之二:调用第三方定位SDK对于可以公开读取基站、WIFI信息的Android手机系统,国内的百度、高德等地图厂商自行实现了定位SDK,该定位SDK的作用就是通过系统接口读取到原始定位信息,然后借助于各家自行部署维护的数据库,查询到当前扫描到的基站、WIFI的位置,最终计算出更准确的定位结果,通过SDK的接口,返回给开发者。这么做的好处,在于能够让app的定位能力脱离对手机系统的依赖。

举个例子,一个app他如果只是调用系统定位接口,那么在行货手机,由于手机厂商已经把定位的网络服务器重定向为国内定位服务商,所以肯定可以定位,但是在水货手机上因为系统底层是直接连google服务器的,就会无法定位。但用户就是上帝,出现了这个事情在用户看来,就是不能接受的,为了保证app在所有手机上都可以定位,开发者就会不得不使用第三方的独立定位SDK。


评论
WIFI定位不完全是根据IP信息和地理坐标对应关系来定位的。
更准确点讲是WIFI设备的MAC地址等更加固定的信息,与之相对应的地理坐标信息,来给WIFI下其他设备统一定位的。
这也是为什么家里无线上网的台式机也可以惊奇的发现被定位的原因,至于WIFI设备为什么被定位到了某个精度非常高的地点,这又是一个大问题,我懂的不多,把看到的大致说一下,不对的地方请指正。
首先WIFI设备如果是路由器,那么肯定路由器没有GPS来提供地理坐标(经纬度)信息,但如果你曾经用带有GPS模块的手机连接此路由器,而且刚好还开着GPS的话,那么Google(或其他商家)就可以连同你的经纬度和路由器MAC一起上传云端数据库,那么下次即便你不开GPS,一样可以定位你。
另,如果有其他人开着GPS路过你的无线路由器附近,虽然有密码保护的情况,但依然可以获取MAC信息(此处需要指正,个人猜测),于是,再次被上传。
基于一个相对固定位置的设备的固定MAC值,就有了一个对应关系的数据库,下次你连这个设备,就有了你的坐标?
神奇的背后依然是大数据的支撑。

评论
前面的各位大牛门都说的那么复杂。小弟我才疏学浅,最近天天在网上找免费的基站定位接口,可惜没找到。百度倒是说自己是免费的,但是只提供安卓和ios的api。是为了布局自己的移动端竞争力。如果真是免费的,为什么不开放一个http的查询服务接口呢?
好了,下面来说说我对楼主问题的解答。基站定位最重要的是,当你手机的通讯模块拨上号以后。通过模块的at命令就能获取到lac cellid码,这两个码有什么用呢。这两个码就是你目前连上的那个基站的唯一标识号,移动联通这些服务商在建设这些基站的时候应该会记录下来这些基站的gps位置信息。所以只要你手机拨上号了获得到lac cellid 就能在数据库里查询到对应的gps位置信息。就是你附近那个基站的位置。
再来说wifi定位,我本人呢有个ipod touch5 ,是不带gps定位的。但是有一天我发现我的百度离线地图竟然可以定位,我就觉得很神奇。这几天我查看那些wifi定位接口的时候,发现需要发送的数据里面都有wifi设备的mac地址,于是一切都豁然开朗了。举个例子,苹果的手机在打开定位的情况下检测到附近的wifi设备,mac地址都是可以被获取到的,然后直接把这些mac地址对应当时的gps位置信息记录下来保存在数据库里,就形成了wifi‘定位。
再说算法优化,当那些通信巨头,移动,联通,电信,百度,谷歌,苹果之类的,他们之间很可能存在一些数据上的共享,这样就形成了一个巨大的数据库。这样当你进行基站定位的时候如果同时也打开了wifi,就可以查询到很多你附近的gps位置信息,再通过一定的算法,把这些gps信息处理下,就可以精确的定位你的位置了。当然我国好像是规定不允许精确定位手机位置的。
这就是我对基站定位和wif定位技术的看法,很多技术看起来很牛叉其实本质并没有什么特别难以理解的地方。

评论
看到蔡神的形式化描述,这里结合工程实践完善一下这个问题。
主要以WiFi为例,基站虽存在可解释性编码,但施用原理相似。

问题定义:
输入-手机WiFi芯片所能搜索到的WiFi列表(MAC地址及信号强度)
输出-经纬度坐标

原理:
Theoretically,只要手机所处环境WiFi足够密集,在任意一个不同的地点,它所能搜索到的上述WiFi列表都是完全不一样的,这样我们实际上可以建立一种“WiFi列表~位置”的一一对应关系。
WiFi list 1 - latitude,longitude 1
WiFi list 2 - latitude,longitude 2
...
WiFi list n - latitude,longitude n
这样,只要我们采集并存储了所有位置的WiFi列表,当一个未知位置的WiFi列表来请求定位服务时,
WiFi list x - ?, ?
我们直接去查询这个WiFi列表所对应的位置就可以了。

工程化:
实际工程化的时候当然不会那么理想,可能面临

信号强度扰动大;
手机芯片不稳定;
存储代价;
稀疏区域;
WiFi动态变化及更新;
等问题

工程上一般也并不会直接存储上文中提到的WiFi列表,往往会对上述对应关系做处理。
传统上较流行的方法是三角定位,即先确定每个WiFi热点位置,再通过相对关系定位。(这种方法目前仍用于室内定位)
之后兴起的是指纹定位,即将空间预先划分为网格,在每个网格中建立WiFi指纹(表征WiFi列表联合分布的数据结构),将query映射到相应网格中。

篇幅所限,下面两点改进不展开
算法改进:

相似性测度
平滑
CV
boosting

工程改进:

传感器辅助判断
分场景降级定位

数据来源:
各家在提供定位服务的同时,也会不停的采集WiFi列表,如果手机的GPS也处于打开状态,便同时采集GPS返回的坐标,这样便有了原理中提到的对应关系数据。

路测结果:
滴滴定位项目启动半年时在真实环境中测试各地图产品定位服务效果,利用GPS&人工标注作为真值,测试定位误差中位数(20-30m)及80%(30-60m),90%分位数(45-70m)。
在不同场景区域,结果有较大差别,但总体而言表现从好到差为
百度>高德>滴滴>腾讯
极端场景下,百度定位中位数误差已经接近理论极限10m,非常厉害
苹果系统自带定位服务没有同时进行评估,但从badcase反馈情况来看,大约介于滴滴和腾讯之间

利益相关说明
本人负责滴滴定位项目

附一张采集覆盖示意图

42ad4d9025c2586c19cd0cfdc5589543_hd.jpg (75.07 KB, 下载次数: 9)

下载附件  保存到相册

2017-12-23 10:32 上传



评论
1、基站数据是采集来的,或者在黑市上买来的;Wi-Fi 大都是采集来的;
2、Wi-Fi 有 MAC 地址和 SSID,原理和 Cell-ID 一样;
3、有些公司只提供 SDK 让第三方开发者不用关心其定位算法,有些公司连 Servers API 也开放。

评论
总的来说就两条路:
一、三角定位
二、指纹

评论
如果是用于开发的话,现在有专门的数据接口公司,可以用这些数据,很方便。我们用过好服务的数据,总体比较划算。

评论
室外的定位分为GPS定位和无星定位。无星定位目前来说主要依赖于Wifi和基站。由于WiFi的高密度和远小于基站的信号半径,使得目前WiFi定位是无线定位的主要手段。
各家通过采集或是买卖来获取有GPS点的WiFi位置,然后通过迭代来得到AP的对应经纬度和周边的一些概率。
所谓迭代,就是不断通过大数据来保证wifi和基站的位置准确。
迭代思路:每台手机在某个位置时都会对应一个GPS点-1or多基站信息-多个Wi-Fi信息,如此这般,地图供应商通过大量的采集用户的这类信息,就生成了map。key是wifi或基站的mac地址,value是对应的全部gps点,然后通过对gps点的筛选,聚类,计算,就可以最大程度无限精确的推算出该wifi或基站的准确位置。(我们快递员到处送货顺便到处给他们采集着这类信息~)
定位的时候,通过匹配AP的BSSID来获得对应的经纬度,和周边信息。这样通过一组AP和基站,以及周围的辅助,利用概率和距离法来计算出当前的定位结果,再利用辅助信息or上下文来对结果进行置信度评测,最终反馈用户一个最好的定位结果。
定位算法还有一种是指纹法,通过欧氏距离的变种算法来确定位置。目前一些室内定位技术采用这种确定行算法和辅助地磁,PDR来得到室内位置。

评论
基站信息,最准确最新的数据肯定是在运营商手里,不过应该有一些流传在外或者公开的数据库,那么多作LBS的不是都有运营商后台支撑
手机设备会记录你目前的基站信息,应用读取这个信息给服务器,服务器跟自己数据库的数据比对一下就可以给你一个大概的地址了

WIFI这个目前只知道google maps是有用wifi辅助定位的,应该是收集了大量的数据,个人感觉原理跟基站类似,可能是根据ip以及接入网络路由器设备的mac地址来确认位置的

GPS不用说了……最准的就是这个了 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收 电路 电子 维修 求创维42c08RD电路图 评论 电视的图纸很少见 评论 电视的图纸很少见 评论 创维的图纸你要说 版号,不然无能为力 评论 板号5800-p42ALM-0050 168P-P42CLM-01
 ·日本留学生活 求个大阪合租
·日本留学生活 自家房招租求
·日本留学生活 东京地区出9成新lv钱包
·日本育儿教育 孩子从国内过来如何学习日语
·日本育儿教育 明年四月横滨招月嫂
·日本育儿教育 请问咋让娃突破识字关?感谢分享中文共读和学习经验的妈妈
 ·中文新闻 东区明星迈克尔·格列柯,53 岁,将在第一次出生两年后第二次
·中文新闻 《爱情岛》明星卡米拉·瑟洛和杰米·朱维特在透露即将迎来第三

维修经验

CPUcpu-z 1.77版低调发布

日本维修技术更新: New benchmark “submit and compare” feature New clocks dialog reporting all system’s clock speeds in real-time Preliminary support for Intel Kaby Lake AMD Bristol Ridge processors 主要是增加了支持I、A两个新架构的 ...

维修经验

CPU这几天经常开机黑屏,热重启后又正常

日本维修技术这几天经常开机黑屏,热重启后又正常,今天热重启也不管用了。折腾半天总算点亮,显示超频失败,以前出这个画面我是不理它的,直接重启就能正常进系统了,今天不敢托大,因为 ...

维修经验

CPU超频求助!关于华擎H170和6700K

日本维修技术问题见楼主的show贴 https://www.chiphell.com/thread-1634895-1-1.html 这次华擎的H170 Hyper最大的特色应该是自带时钟发生器可以自由超外频 可是楼主好久没有折腾超频了。。。 两图中除了CPU外频 以 ...

维修经验

CPU液态金属会侵蚀cpu核心吗?

日本维修技术前阵子看到有人说,液态金属时间长了会侵蚀cpu铜盖,那么问题来了,这货会不会侵蚀核心呢? 评论 这玩意儿好像只对铝起反应 评论 不是说,cpu的盖子是铜的吗。。。 评论 不会,核 ...

维修经验

CPUm6i究竟支不支持e3 1231v3

日本维修技术官网上看支持列表没写有e3 1231v3,装机帖又有人晒,百度也没个明确答案,那究竟能不能点亮?有在用的chher说一下么 评论 升级最新bios肯定可以支持 评论 我的p67evo官网上也没说支持12 ...

维修经验

CPU华擎 HYPER 妖板 正确玩法

日本维修技术600元的 B150,10相供电,释放洪荒之力 注意必须官网 Beta 区的 BIOS 有 AVX 的 CPU 可能会掉缓存 启动时按 X 键激活 SKY OC,重启后进入 BIOS 160924164727.jpg (95.63 KB, 下载次数: 1) 2016-9-24 17:47 上传 ...

维修经验

CPUE5 2686 V3和i7 6800K如何选择

日本维修技术默认用,不超频,两者功耗是一模一样的 E5 2686 V3:2.0主频,3.5睿频, 18核心36线程 ,45M L3 咸鱼大约2500~3000元 i7 6800K : 3.5主频,3.8睿频 ,6核心12线程 ,盒装3000元 评论 性能应该是26 ...

维修经验

CPUHD530硬解4K能力还是有点弱呀!

日本维修技术播放器用PotPlay 64bit,各种优化后,跑4K @120Hz视频只能到70帧左右的速度,勉强能用! 显示器用的4K的优派VP2780 未标题-1.jpg (211.97 KB, 下载次数: 0) 2016-9-26 21:29 上传 评论 这个估计你没优化 ...

维修经验

CPU6900k 1.25V到4.2体质怎么样

日本维修技术如图,体质怎么样,ring是35,没敢试了,都说ring高了毁硬件 评论 不错的U,但不算雕,上4.4就大雕了,这电压上4.5的目前没见有人发图 评论 谢谢前辈告知 评论 我这个用1.2V超的4.2,R ...

维修经验

CPUI3 6100 华擎B150M pro4超4.5g测试。

日本维修技术看看论坛没多少i3 6100的帖子,就转下自己发的show贴里面的数据,给大家参考下。家里还有当年的神U i3 540 oc 4.5G在给老妈用。 不知道数据上正常吗?有6100的朋友可以告诉下,另外是不有 ...

维修经验

CPU7系u会兼容100系主板吗?

日本维修技术RT,听说要推200系板,100系还能用吗以后。。 评论 兼容的 评论 感谢!以后换u就行了,目前消息200系板会有新的特性吗? 评论 24条PCI-E 3.0通道、支持Intel Optane混合存储技术、十个USB 3 ...

维修经验

CPU有心入5820k了,求教下温度问题

日本维修技术一直徘徊在6700k和5820k之间,6700k现在这德行直接把我推向了5820k啊,从2600k升级上来,三大件都要换,现在唯一疑惑的是IB-E ex这种顶级风冷能不能压住4.5g的5820呢?毕竟刚刚买一个多月。 ...

维修经验

CPU6600&6600K才100的差价

日本维修技术太少了吧。。。 6600.JPG (106.91 KB, 下载次数: 0) 2016-10-1 10:30 上传 评论 毕竟只是i5而已…… 评论 上z170 6600也能超,等于没区别,差价能有100已经不错了 评论 然后又见不超频人士推荐超频 ...