wrobinson127/deadreckoning

GitHub: wrobinson127/deadreckoning

基于开源ADS-B数据的GPS/GNSS干扰纵向归档与可视化平台,填补了实时干扰监测工具缺乏历史记忆的空白。

Stars: 0 | Forks: 0

# 航位推算:GPS 干扰归档 一款用于监测 **GPS/GNSS 干扰** 的纵向工具,完全基于开源的 ADS-B 数据构建。飞机在广播每个位置时会同时附带一个导航完整性类别 (**NIC**)。当某一区域的多架飞机同时报告完整性下降时, 便表明该空域存在 GNSS 干扰。 现有的实时工具仅展示*当前*状况(GPSJam、Flightradar24 的干扰 地图、SkAI 的欺骗追踪器)。**但它们都没有记忆功能。** 本项目就是这份记忆: 一个可拖动检索的归档(以滚动更新的近期时间窗口为种子,并旨在逐步扩展至多年数据),包含每个六边形网格的基线、异常评分、带有分析师背景资料的命名监控区域,以及精选的事件标注。(目前的归档深度取决于已回填的数据;请参阅 `data/manifest.json`。) **这是一个观测工具,而非指控。** 它展示的是*导航完整性下降的位置*, 并坦诚地呈现不确定性。它不断言“被 X 干扰”:对原因的归咎仅存在于带有来源的区域背景资料中。 ## 展示内容 - 一张世界地图,由 H3 六边形网格根据**异常评分**(偏离每个网格自身滚动基线的程度)着色,并支持切换至原始的受干扰飞机比例。 - 一个带有播放功能的**日期滑动条**,可跨越整个可用归档。 - **将坦诚的不确定性作为一项特性**:每个网格都包含样本计数和置信度等级。样本量低的网格在视觉上有明显区分:你始终能分辨出“无干扰”与“无覆盖”。 - **命名区域**(波罗的海、黑海、东地中海、波斯湾等), 附带分析师背景资料和 90 天趋势。 - 一个包含来源事件(打击、演习、事故)的**时间线**,以图钉标记。 ## 方法,用一段话概括 对于每个 UTC 日,我们流式传输当天的 adsb.lol 转储文件,保留带有 NIC 值的空中位置,并按 H3 六边形网格进行聚合:如果一架飞机在该网格中的大部分 NIC 报告为 `nic ≤ 6`(包容半径),则该飞机在该网格中处于“受干扰”状态。 ## 架构 ``` adsb.lol dump ──► pipeline/ ──► data/ ──► site/ (static, MapLibre) (ODbL, raw, stream-parse committed reads data/ + content/ deleted after) aggregate aggregates as static fetches baselines only content/ (regions.yaml, events.yaml, geojson) ─┘ ``` - `pipeline/`: Python。`config.py` 包含**所有**可调参数。`run_daily.py` 处理一个 UTC 日 → `data/daily/YYYY-MM-DD.json`;`backfill.py` 处理一个日期范围; `baselines.py` 重新计算 `data/baselines.json` + 各区域序列。 - `data/`: 仅提交**聚合数据**。绝不包含原始轨迹(见 `.gitignore`)。 - `content/`: 命名区域 + 精选事件(带来源的分析师数据层)。 - `site/`: 无构建步骤的静态前端(MapLibre GL JS、h3-js、D3)。 - `.github/workflows/`: `ci.yml`(测试)和 `nightly.yml`(获取→处理→ 部署;**在仓库公开且启用 Pages 之前处于休眠状态**)。 ## 运行 ``` pip install -r requirements.txt python -m pipeline.run_daily 2026-07-13 # process one UTC day python -m pipeline.backfill 2026-06-30 2026-07-13 # process a date range python -m pipeline.baselines # recompute baselines + regions python -m pytest pipeline/tests -q # run tests python -m http.server -d site 8000 # serve the site locally ``` 请参阅 `CLAUDE.md` 获取完整的命令参考和约定。 ## 数据、许可与归属 - **数据源:** [adsb.lol](https://www.adsb.lol) 每日转储 ([globe_history_2026](https://github.com/adsblol/globe_history_2026)),**ODbL 1.0**。 - **代码:** MIT (`LICENSE`)。`data/` 下的**已发布数据**:**ODbL 1.0** (`DATA_LICENSE.md`):属于 adsb.lol 的衍生数据库。 - **底图:** [OpenFreeMap](https://openfreemap.org) / © OpenStreetMap 贡献者,ODbL。 - **零成本运行:** 静态站点 + GitHub Actions + 扁平文件。无需付费 API,无 服务器,无数据库。v1 版本进行零次 LLM 调用。 ## 作者 由 **Walker Robinson** 构建。[walker-robinson.com](https://walker-robinson.com) · [github.com/wrobinson127](https://github.com/wrobinson127) *区域背景资料和事件标注属于分析师的解读: 带有来源,并以此标注,而非测量数据。*
标签:GNSS/GPS, 代码示例, 地理空间数据, 数据分析, 数据归档, 时序数据, 航空数据, 逆向工具