观察如何变成基站位置?拆解Mozilla Ichnaea的四因子加权算法(精度/时效/速度/信号)
2026/9/22 0:05:33 网站建设 项目流程

观察如何变成基站位置?拆解Mozilla Ichnaea的四因子加权算法(精度/时效/速度/信号)

【免费下载链接】ichnaeaMozilla Ichnaea项目地址: https://gitcode.com/gh_mirrors/ic/ichnaea

Mozilla Ichnaea 是 Mozilla 开发的基站定位引擎,它靠收集海量手机"观察数据",用**四因子加权算法(精度、时效、速度、信号)**把每一次观察换算成一个权重,再累加成一个持续更新的基站/WiFi/蓝牙位置模型。本文用图表带你完整拆解这套算法:为什么弱信号数据会被直接丢弃?为什么"平均观察"的权重恰好是 1.0?看完你也能看懂官方算法文档 docs/algo/observations.rst 里的每一张曲线图。

📍 先搞懂"观察点":Ichnaea 定位的不是发射器,而是"被看见的地方"

很多人以为基站定位系统要算出基站铁塔的坐标,Ichnaea 的设计思路恰恰相反:

每个基站被建模成一个圆:圆心是所有观察点的加权平均位置,半径大到能包住全部历史观察。

这很巧妙——WiFi 路由器通常在楼内,但行人走在楼外马路上时 GPS 信号最好、观察最可信,所以 Ichnaea 的模型中心会偏向"被看见最多的地方",而不是路由器物理位置。官方算法说明在docs/algo/observations.rst,位置更新任务实现在ichnaea/data/station.py

新观察点到达后,系统会给每个点打分,权重为 0 的直接丢弃;存活下来的观察点按权重影响基站中心,中心同时向新数据"缓慢漂移"——老基站权重累积得越高,单次新观察的影响越小。

⚖️ 核心公式:四个权重相乘,一票否决

每条观察的最终权重只有一个公式:

总权重 = 精度权重 × 时效权重 × 速度权重 × 信号权重

前三个因子共用同一种"三段式"算法(0.0 ~ 1.0),任何一个因子为 0,整条观察直接作废。

1️⃣ 精度权重(Accuracy):GPS 误差半径越小越可信

取的是"上报位置与真实位置之间的预期距离"(米):

精度半径权重
≤ 10 m1.0(满分)
40 m0.5
90 m≈ 0.33
≥ 200 m(WiFi)/ 100 m(蓝牙)/ 1000 m(蜂窝)0.0(丢弃)

阈值定义在ichnaea/models/constants.py(如WIFI_MAX_OBSERVATION_ACCURACY = 200.0)。

2️⃣ 时效权重(Age):看到信号和记录位置的时间差

时间差权重
≤ 2 s1.0
8 s0.5
18 s≈ 0.33
≥ 20 s0.0(丢弃)

时间差越大,说明你看到信号时和 GPS 定位时距离已经拉开了,数据越不可信。

3️⃣ 速度权重(Speed):开车飞驰时看到基站不可靠

速度权重
≤ 5 m/s(步行)1.0
20 m/s0.5
45 m/s≈ 0.33
≥ 50 m/s0.0(丢弃)

三个因子都未知时,该因子按 1.0 计——未知不扣分,离谱才丢弃,这是该算法对数据不完整场景的宽容之处。

4️⃣ 信号权重(Signal):唯一能"超过 1.0"的因子

WiFi 和蜂窝信号强度以 dBm 衡量,权重随信号增强指数上升、随减弱指数下降,但永远不会到 0:

无线电类型权重 0.5权重 1.0(平均值)权重 2.0权重 4.0
WiFi-98.9 dBm-80 dBm-64.1 dBm-50.7 dBm
GSM-113.9 dBm-95 dBm-79.1 dBm-65.7 dBm
WCDMA-118.9 dBm-100 dBm-84.1 dBm-70.7 dBm
LTE-123.9 dBm-105 dBm-89.1 dBm-75.7 dBm

信号强度未知时按平均值处理;蓝牙信号权重恒为 1.0,因为蓝牙信号强度波动太大、参考价值低。

💡 设计意图一目了然:精度/时效/速度是"生死线",信号强度只是"加分项"——弱信号不会让你的数据作废,只会让它影响力变小。

🔁 加权之后:观察点如何改写基站数据库

每个分片队列攒够一批观察后,ichnaea/data/station.py会把同属一个基站的观察分组处理(如果有 GPS 级观察,就只用 GPS 级的,丢弃定位查询级的)。系统用 7 个"是/否"事实(基站是否存在?位置是否一致?位置是否已一年未确认?是否基于 GNSS?……)推导出 7 种更新状态:

  • New— 新增基站
  • Change— 按加权平均微调现有基站位置
  • Confirm— 确认基站今天仍活跃
  • Replace— 用 GPS 级观察直接替换旧位置(查询级升级为 GNSS 级的"越级"路径)
  • Block— 位置被移除,基站从定位查询中屏蔽
  • New Block— 新增即被屏蔽
  • No Change— 不做任何修改

还有一个防"移动基站"的巧思:被屏蔽的基站 48 小时后自动复查;如果一年内被屏蔽 12 次以上,会被判定为移动基站(比如车载 WiFi 热点)长期屏蔽。

🔬 想读源码?只看这两个文件就够了

  • 权重公式本体:ichnaea/models/observation.pyBlueObservationCellObservationWifiObservation各自的weight属性)
  • 全部阈值常量:ichnaea/models/constants.py
  • 官方算法图解(本文所有图片出处):docs/algo/observations.rst

📝 一句话总结

Mozilla Ichnaea 的四因子加权算法本质是一套数据信用评分系统:精度、时效、速度三关定生死(任一归零即丢弃),信号强度定贡献度(越强权重越高,蓝牙免检);活下来的观察点按权重持续拉扯基站模型的中心和半径,让全球基站位置数据库在无人工标注的情况下越用越准。

【免费下载链接】ichnaeaMozilla Ichnaea项目地址: https://gitcode.com/gh_mirrors/ic/ichnaea

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询