God‘s Eye View 深度解析:15 路公开信号 + CesiumJS 的浏览器级 OSINT 控制台,60 帧渲染的“真实间谍卫星模拟器”

0 阅读7分钟

核心信息速览

项目详情
项目名称God's Eye View(原名 WorldView)
开发者Bilawal Sidhu(前 Google AR/3D 地图产品经理,TED 技术策展人)
GitHub 仓库github.com/bilawalsidh…
开源协议MIT License
开源日期2026 年 8 月 24 日
GitHub 热度2026 年 8 月登顶 GitHub Trending 日榜与周榜双第一
技术栈原生 JavaScript + CesiumJS + Vite + Google Photorealistic 3D Tiles
核心依赖cesium ^1.124.0、satellite.js ^6.0.2、egm96-universal(大地水准面)、mgrs、pbf、@mapbox/vector-tile
Node.js 要求24.14.x 或 26.x(package.json engines 强制校验)
数据图层15 个实时/近实时源,其中 10 个零 API 密钥即可用
静态数据集4,351 个数据中心、704 座水坝、712 条海底光缆
冷启动性能中位数 1.86 秒(M5/Chrome 实测,非硬件要求)
渲染目标纯前端 60 帧流畅渲染,无需后端算力

在这里插入图片描述

一、它是什么:不是地图,是“公开信号的总装车间”

God's Eye View 的自我描述很克制:“一个在浏览器里的间谍卫星模拟器——然后你意识到数据源是公开的,数据是真实的。”

它把原本散落在几十个浏览器标签页里的公开遥测信号——飞机的 ADS-B 应答机、船舶的 AIS 信标、卫星的轨道根数、USGS 的地震台网、城市公共摄像头——聚合到同一颗照片级真实的 3D 地球上,让你可以从全球态势无缝下钻到一架具体飞机的驾驶舱视角。

项目的核心贡献不是发明了某个数据源,也不是从零写了渲染引擎,而是集成工程:让 15 个互不兼容的实时 feed 在时间、位置和高度上达成一致,再在上面套一层自然语言语音接口,使得你不需要知道答案藏在哪个图层里。

二、数据矩阵:15 个公开源,10 个零密钥

项目的数据表本身就是一份“世界公开了什么”的清单。以下是最核心的实时图层及其参数:

图层数据源刷新频率 / 规模密钥要求
实时航班OpenSky + adsb.lol11,000+ 架,每 15–30 秒刷新零密钥可用(OAuth 提升额度)
军事航班adsb.lol实时零密钥
实时船舶AISStream最高 12,000 条船舶条目零密钥(免费注册)
卫星星座CelesTrak838 个对象,SGP4 本地轨道传播零密钥
地震USGS滚动 24 小时窗口,实时零密钥
活跃火点NASA FIRMS每日更新零密钥
公共摄像头城市 API(奥斯汀/加州/伦敦等 10 个区域)持续零密钥
交通流TomTom + OSM无密钥时为沿真实道路的近似模拟TomTom 密钥解锁真实数据
电台Radio Browser750+ 地理定位电台零密钥
共享单车GBFS实时可用性零密钥
航天任务Launch Library 2滚动 30 天任务目录零密钥
地图底图Google Photorealistic 3D Tiles / Bing / OSM照片级 3D 瓦片Google Maps Key 必需(每月 1,000 次免费 3D 瓦片会话)

除了实时 feed,项目还内置了三个静态数据集:4,351 个数据中心、704 座水坝、712 条海底光缆。三层同时打开,展示的是现代文明的物理承重结构。

项目对“实时”与“建模”的区分非常诚实:交通层在无密钥时明确标为模拟,摄像头位姿在标定前是估计值,火箭上升回放标为“RECONSTRUCTED ESTIMATE”(重建估算)。每个图层持续显示自己的数据源与新鲜度状态。 在这里插入图片描述

三、技术架构:原生 JavaScript + CesiumJS 的“去框架化”工程

3.1 依赖清单:只有六个专精库

God's Eye View 的 package.json 是一份“反重型框架”的宣言。整个项目没有 React、Angular 或 Vue,只有六个专精依赖:

"dependencies": {
  "@mapbox/vector-tile": "^3.0.0",
  "cesium": "^1.124.0",
  "egm96-universal": "^1.1.1",
  "mgrs": "^2.1.0",
  "pbf": "^5.1.2",
  "satellite.js": "^6.0.2"
}

CesiumJS 负责 3D 地球与 Google Photorealistic 3D Tiles 的渲染,satellite.js 处理 SGP4 轨道传播,egm96-universal 处理大地水准面校正,mgrs 和 pbf/vector-tile 处理坐标与矢量瓦片解析。构建工具是 Vite,没有引入任何 UI 框架的运行时开销。

3.2 四个关键工程决策

  • 第一,世界稳定的图标朝向。飞机和船舶在任意相机角度下都沿其真实世界航向指向,靠的是逐帧的屏幕空间航向投影(iconOrientation.js)。无论正俯视还是看地平线,图标都不会乱转或锁死视口。
  • 第二,用“跳变数据”做出顺滑运动。公开实时数据通常每 15–30 秒才到一批。项目故意让地球渲染比实时慢一个轮询间隔,并在已知定位点之间做插值,用航位推算填补空隙,从而实现视觉上的连续运动。
  • 第三,诚实的卫星轨道。采用 SGP4 轨道传播,轨道环通过 GMST 重新对齐锁定卫星,避免长期运行后的漂移和逐秒闪烁。
  • 第四,站在真实地面上。实体高度经过真实垂直基准面(大地水准面感知,对渲染出的地形网格采样),让飞机停在新停机坪、摄像头立在街角,而不是悬空。

3.3 源码结构

src/
├── main.js                  # 启动:Google 3D Tiles、图层注册
├── ui.js                    # 运行时 UI — 面板、HUD、样式、控制门面
├── hud.js                   # 情报 HUD + AI 场景摘要
├── mapStackController.js    # Google 3D / Bing / OSM 切换
├── iconOrientation.js       # 屏幕投影的世界空间朝向 + 地平线剔除
├── voice/                   # OpenAI Realtime 会话 + 28 个语音工具
├── data/                    # 每个图层一个模块 + 管理 + 上下文存储
└── scenes/                  # 电影级场景导演

在这里插入图片描述

四、语音 Agent 与驾驶舱模式

语音层基于 OpenAI Realtime API,28 个工具被划分为四类角色:

角色能力
无人机驾驶员导航到位置、环绕、缩放、重置
白板绘制边界、测量距离、标注基础设施、放置持久图钉
分析师计数实体、按属性过滤、对屏幕内容做时间预测
控制台切换图层、切换传感器风格、调整检测密度

工具设计遵循“窄动词、可组合”的原则:模型不被要求理解 Cesium 的相机数学,只需从 28 个定义良好的动作中选择匹配请求的那一个。语音会话按分钟计费,内置 $5 单次会话硬上限,防止失控调用。

驾驶舱模式是项目的标志性交互:镜头跟随一架被追踪的航班,一路贴着真实地形俯冲,同时维护一个以目标为中心 250 km 半径的实时“联系人”名单,可一键切换任意飞机的驾驶舱。传感器滤镜(CRT、夜视 NVG、FLIR 热成像、黑白、雪景)不是纯装饰,而是不同的场景阅读方式。

五、部署与配置:本地优先,密钥不出机器

5.1 环境要求

项目要求
Node.js24.14.x 或 26.x(package.json engines 强制:`>=24.14.0 <25>=26 <27`)
浏览器支持 WebGL 2 的现代浏览器
唯一必需密钥Google Maps API Key(照片级地球底图)
可选密钥OpenSky OAuth、AISStream、TomTom、NASA FIRMS、OpenAI(语音)

5.2 最简启动

git clone https://github.com/bilawalsidhu/gods-eye-view.git
cd gods-eye-view
npm ci
npm run doctor   # 环境检查
npm run dev      # 启动开发服务器,默认 localhost:4173

然后打开 http://localhost:4173。

5.3 环境变量配置

cp .env.example .env
# 在 .env 中填入 GOOGLE_MAPS_API_KEY(必需)
# 其余密钥可选,不填则对应图层以零密钥模式运行

5.4 零密钥启动

不填任何密钥也可以启动。10 个图层直接可用;Google 3D 底图需要密钥,但项目提供了 Bing aerial 和 OSM 作为替代底图选项。

5.5 Docker 部署

社区有 NAS/Docker 部署方案:构建镜像后运行 npm run preview -- --host 0.0.0.0 --port 4173,将端口映射出去即可。

5.6 密钥与配额治理

项目的密钥处理设计相当克制:OpenAI、AISStream、OpenSky OAuth、TomTom、FIRMS 等带密钥的提供商全部走服务端代理,代理目标固定或加白名单,高风险路径额外加了有界请求、超时、响应上限和错误净化。唯一故意暴露给浏览器的只有 Google Maps 和 Cesium ion 的凭据。付费 feed 跑在带缓存、受预算治理的代理之后——OpenSky 信用限速器、TomTom 每日瓦片预算、磁盘缓存的 TLE——避免一个下午的探索烧光 API 额度。

六、性能实测与边界

指标数据
冷启动中位数 1.86 秒(M5/Chrome 点测,非硬件保证)
渲染帧率纯前端目标 60 帧,无需专业设备或后端算力
航班规模11,000+ 架实时飞机
船舶规模最高 12,000 条 AIS 条目
卫星目录838 个对象(SGP4 本地传播)

明确的边界:项目 README 开头就声明这是“公开与第三方数据的探索性可视化,不得用于导航、应急、医疗或投资决策”。它不包含人脸识别或人员搜索功能。交通层在无密钥时是沿真实道路的模拟,不是实时车流。它是一个优秀的 CesiumJS 参考实现和 OSINT 探索客户端,而不是 hardened 的生产级服务。

七、小结

God's Eye View 的价值可以用一句话概括:它证明了“集成”本身就是一种深度的工程能力。

每个数据源都是公开的,CesiumJS 已经存在了十年,OpenAI Realtime API 对任何人开放。真正的难点在于:让 15 个互不兼容的实时 feed 在时间、位置和高度上达成一致,用跳变数据插值做出顺滑运动,用大地水准面校正让实体站在真实地面上,用预算治理和密钥代理让一个下午的探索不至于烧光额度,最后再套一层 28 工具的窄动词语音接口,让自然语言成为唯一需要学习的前端。

对于技术从业者,它的借鉴意义集中在三个层面:去框架化的原生 JavaScript + CesiumJS 架构(六个依赖、无 React/Vue 运行时开销)、对“实时”与“建模”的诚实区分(每个图层持续显示数据源与新鲜度状态)、以及密钥与配额的代理治理模式(服务端代理 + 预算上限 + 白名单固定目标)。这些设计可以平移到任何需要聚合多源实时地理数据的 Web 应用。

需要客观指出的是,项目的完整照片级 3D 地球体验依赖 Google Maps API 密钥(每月 1,000 次免费 3D 瓦片会话),语音 Agent 按分钟计费($5 硬上限),TomTom 交通数据在免费额度外按量计费。零密钥模式可运行,但底图和交通层会降级为替代方案或模拟数据。Node.js 版本被 engines 强制锁定在 24.14.x/26.x,使用其他版本会在 npm ci 阶段被拦截。此外,项目定位为探索与学习客户端,其自身文档明确不建议用于任何 operational 场景——这不影响它作为一个高质量 CesiumJS 工程样本的价值,但意味着在生产环境中使用前需要额外的加固与合规评估。

附录:资源列表

类型资源说明
✅ 下载地址点击下载MIT License
🌐 在线体验maptheworld.ai/官方入口
📦 Pinokio 一键安装pinokio.co/apps/github…零命令行启动
📄 性能基线docs/PERFORMANCE.md1.86s 冷启动实测
📄 架构状态docs/CURRENT-STATE.md源码结构与工程决策
📄 数据源清单README 数据表15 个 feed 的授权与刷新频率
🎙️ OpenAI Realtime APIplatform.openai.com/docs/guides…语音 Agent 依赖

本文为原创内容,转载请注明来源与作者。

CSDN 首发 | 版权所有 © 2026

📢 温馨提示:God's Eye View 为 MIT 协议开源项目,使用前请阅读仓库 LICENSE 文件。项目明确声明为探索性可视化工具,不得用于导航、应急、医疗或投资决策。Google Maps API 及部分数据源涉及付费或配额限制,部署前请确认计费规则。Node.js 版本被强制锁定在 24.14.x/26.x。功能与数据源信息更新较快,建议以 GitHub 仓库最新 README 为准。