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

核心信息速览

项目 详情
项目名称 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.lol 11,000+ 架 ,每 15--30 秒刷新 零密钥可用(OAuth 提升额度)
军事航班 adsb.lol 实时 零密钥
实时船舶 AISStream 最高 12,000 条船舶条目 零密钥(免费注册)
卫星星座 CelesTrak 838 个对象,SGP4 本地轨道传播 零密钥
地震 USGS 滚动 24 小时窗口,实时 零密钥
活跃火点 NASA FIRMS 每日更新 零密钥
公共摄像头 城市 API(奥斯汀/加州/伦敦等 10 个区域) 持续 零密钥
交通流 TomTom + OSM 无密钥时为沿真实道路的近似模拟 TomTom 密钥解锁真实数据
电台 Radio Browser 750+ 地理定位电台 零密钥
共享单车 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,只有六个专精依赖:

json 复制代码
"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 源码结构

text 复制代码
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.js 24.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 最简启动

bash 复制代码
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 环境变量配置

bash 复制代码
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.md 1.86s 冷启动实测
📄 架构状态 docs/CURRENT-STATE.md 源码结构与工程决策
📄 数据源清单 README 数据表 15 个 feed 的授权与刷新频率
🎙️ OpenAI Realtime API platform.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 为准。

相关推荐
IT星宿2 小时前
浏览器标签页全是一个图标:我用名字哈希生成 favicon,让每个项目都有身份标识
前端
全栈项目管理程序猿2 小时前
ArcGIS JS 基础教程(32):体元系列 - VoxelSlice 体元切片
前端·javascript
拖孩4 小时前
AI 帮我写的小程序「厨菜记」上线满月了,挣了两百块!!!
前端·后端·微信小程序
用户360055579004 小时前
Kestrel_VLLM - 13 · 为什么排除 MoE FFN Tiling 与 Tensor Core
前端
Hilaku4 小时前
AI 流式输出都用 SSE,什么时候必须换 WebSocket?
前端·javascript·程序员
奇牙coding5 小时前
Codex CLI 升级后多文件编辑静默失效:config.yaml 枚举变更排查与修复指南
java·前端·javascript·ai
小羊没烦恼!5 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
程序员老赵5 小时前
Docker 部署 Filestash:轻松搭建浏览器文件管理平台
前端·docker·开源
夏天要喝冰可乐5 小时前
给 23 万字修仙小说造个阅读站:浏览器内打包 EPUB 分页阅读 + 三主题实战
前端·产品·全栈