iOS 设备定位数据优化漫谈

作者: ZeroJian

iOS 定位分为 WIFI 定位 基站定位 GPS 定位 三种类型

  • WIFI 定位

精确度: 高

通过设备扫描周围的 WIFI(AP) 信号获取到广播出的 MAC 地址, 设备将这些能够标识 AP 的数据发送到位置服务器, 服务器检索出每一个 AP 的地理位置, 并结合每个信号的强弱程度, 计算出设备的地理位置

  • 基站定位(蜂窝站点)

精确度: 低

通过设备周围的站点计算出地理位置,在蜂窝站点密集的地方使用这种技术可以达到一个相对准确的值

  • GPS定位

精确度: 高

利用设备的 GPS 芯片获取 GPS 卫星,计算出地理位置, 精确度高, 并可准确计算设备的海拔速度等参数


iPhone 会根据用户所处位置以尽量省电的方式获取最精确的定位坐标, 在 CoreLocation 框架中, 并没有提供主动切换定位类型的方法, 也无法获取到当前的定位类型, 但是通过 CLLocation 对象可获取到定位相关的一些参数

  • altitude (m)

海拔高度, 正值代表海拔以上高度, 负值代表海拔以下高度

  • horizontalAccuracy (m) 通过该属性可以确定定位精度

位置的不确定半径

位置的纬度和经度标识圆的中心,这个值表示圆的半径。负值表示位置的经度和纬度无效

  • verticalAccuracy (m)

海拔值的准确性

海拔属性中的值可以加上或减去这个属性所表示的值。负值表示海拔值无效。

确定垂直精度需要一个具有GPS功能的设备

  • course: (度)

设备行进的方向 负值代表无效

航向值是从正北方向开始测量,并沿罗盘方向顺时针方向旋转。因此,北是0度,东是90度,南是180度,等等。有些设备可能不可用。负值表示方向无效

  • speed (m)

设备的瞬时移动 负值代表无效

这个值反映了设备在其当前航向方向上的瞬时速度。负值表示无效的速度。由于实际速度可以在后续位置事件之间传递很多次,所以您应该仅将此属性用于信息目的


由于用户所处环境的复杂性, 用户的位置有很强的不确定性,虽然苹果的 CoreLocation 框架已经做了很好的优化, 定位的漂移也很难避免,我在某次上班时采集了整个路程的所有定位数据, 接合地图来直观看看定位的漂移问题, 这里我截取了一段通过隧道的定位数据, 其中白色圆点显示的是设备获取的真实位置, 而黑色小车显示的是经过简单优化展示给用户的平滑移动效果

我们主要关注一下 horizontalAccuracy 位置不确定半径 和 speed 速度两个参数的变化

LocationReplay

这张回放 GIF 图经过了 3 个状态的改变

  • 在设备进入隧道后, GPS 信号逐渐变弱, 位置半径逐渐变大, 最后真实位置漂移到湖上

  • 由于无法获取到 GPS 信号, 使用基站定位获取到一个偏差很大的位置, 设备被定位回隧道入口附近, 速度变为负数

  • 设备出隧道后获取到了精确位置, 位置半径精确到 5m, 此时设备位置从隧道入口漂移到隧道出口, 恢复正确定位

通过收集的定位数据, 我们可以简单的做个定位筛选, 比如 speed 为负数, 此定位可抛弃, horizontalAccuracy(精确度半径)超过 200m, 此定位可抛弃, 返回多个相对精确的定位点, 比如 horizontalAccuracy 小于 20, 在此精确范围内的所有定位坐标只保留一个最精确的点, 当然 altitude verticalAccuracy 两个针对海拔的数值在类似楼房和高架等场景也可以做一些优化工作

LocationFilter

在对定位数据精确度要求比较高的应用, 比如地图导航, 打车应用, 设备一般在一个运动状态, 我们提取定位数据的上下文, 通过一组数据的速度和方向等参数可筛选出一些相对可靠的定位数据, 再结合地图服务器商提供的道路数据, 应该可以获取到一组相对平滑和准确的定位数据

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容