SpaceDt卫星轨道可视化与空间态势感知平台

基于 Cesium + Vue 3 + KeepTrack API v4 的卫星轨道实时可视化与空间态势感知平台

项目概述

SpaceDt 是一个功能完整的卫星轨道可视化与空间态势感知平台,集成了 TLE 数据解析、开普勒轨道传播、三维地球渲染、传感器覆盖分析、星地链路仿真、全坐标系转换、卫星编目监控、交会预警、发射预告、空间指标驾驶舱、文本数据导出等 8 大核心模块,适用于卫星轨道设计、任务规划与态势展示场景。

TLE 数据解析

TLE.png

卫星运行仿真

runTrue.png

通信链路视窗

link.png

坐标转换

zbzh.png

空间态势感知

kjts.png

发射预告

fsyg.png

空间指标

kjzb.png

文本数据

wbsj.png

技术栈

分类技术
前端框架Vue 3 (Composition API)
三维引擎Cesium 1.126+
UI 组件库Element Plus
路由vue-router 4
语言TypeScript 5.7
构建工具Vite 6
轨道计算satellite.js / ootk v6 / 自研开普勒解算器
数据源KeepTrack Space API v4 (2000次/小时免费配额)
3D 模型glTF 2.0 (weixing.gltf / dish.gltf)

快速开始

bash
复制代码
# 安装依赖 npm install # 启动开发服务器 npm run dev # 生产构建 npm run build

启动后访问 http://localhost:5173,通过顶部导航栏切换八个功能模块:TLE 数据平台、卫星运行仿真、通信链路视窗、坐标转换、空间态势感知、发射预告、空间指标、文本数据。


功能模块

一、TLE 数据平台 (/tle)

负责卫星 TLE 数据的管理、解析与轨道可视化。

1. TLE 数据源

数据来源说明
Celestrak按卫星分组(空间站、气象、科学等)一键拉取实时 TLE
Space-Track.org支持账号登录,按 NORAD ID 或分类查询历史 TLE
文件上传支持.tle / .txt 格式本地文件上传
手动粘贴粘贴标准三行 TLE 格式(名称 / Line1 / Line2)
内置示例预置 ISS、NOAA-19 等常用卫星 TLE 数据

2. 轨道可视化

  • 基于 SGP4 传播算法,实时计算卫星在轨位置
  • Cesium 三维地球上渲染轨道弧线
  • 卫星列表支持选中高亮与视角跟踪
  • 轨道参数面板展示 TLE 7 参数(倾角、升交点赤经、偏心率等)

3. 碰撞检测

  • 支持两两卫星间的最小距离计算
  • 碰撞概率评估与预警显示

二、卫星运行仿真 (/simulation)

完整的多卫星轨道动力学仿真与传感器覆盖分析演示。

1. 卫星轨道与运动仿真

系统预置四颗卫星,每颗具有独立轨道与可视化配置:

卫星半长轴 (km)倾角偏心率轨道颜色特殊功能
卫星1号9678.14520°0.1黄色近地点/远地点标记
卫星2号9678.14560°0.0蓝色多层金字塔传感器(8层叠加)
卫星3号10878.14540°0.2红色星下点轨迹 + 卫星垂线
卫星4号10078.14580°0.05绿色单层金字塔传感器
  • 所有卫星使用 weixing.gltf 3D 模型可视化
  • 基于开普勒轨道六要素的二体问题实时解算
  • 统一 ECI(地心惯性)坐标系,卫星与轨道线精确对齐

2. 传感器与载荷仿真

类型搭载卫星参数效果
锥形传感器1号、3号半角 15°,高度 4000km青色线框 + 半透明锥形填充(CylinderGraphics)
金字塔传感器2号x/y 角 15°,高度 4000km8层叠加线框,渐进透明度动画
金字塔传感器4号x/y 角 15°,高度 3000km单层线框 + 锥形填充

传感器覆盖区域使用红色半透明填充,直观展示瞬时对地覆盖范围。

3. 星地链路与通信仿真

  • 地面站:郑州站 (113.65°E, 34.76°N),使用 dish.gltf 3D 雷达天线模型
  • 星地链路:地面站到每颗卫星的动态联通线,带流动箭头动画效果
  • 距离触发机制:每 50ms 计算星地距离,距离 < 2000km 时链路连通,传感器同时变为可见
  • 监测区域:红色半透明椭圆(半径 2000km),标识地面站监测覆盖范围
  • 雷达扫描:黄色旋转扇形波束动画,模拟雷达扫描效果

4. 轨道特殊标记

  • 近地点/远地点:品红色/黄色圆点标记,带文字标签(卫星1号)
  • 星下点轨迹:卫星在地表的投影轨迹线(卫星3号)
  • 卫星垂线:从卫星到地表的虚线连接(卫星3号)
  • 地球经纬网格:每 30° 间隔的经线和纬线,白色半透明

5. 仿真时间控制

  • Cesium 内置时间轴 + 动画控制器
  • 默认 60 倍速播放,支持暂停/快进/回退
  • 回到当前时刻:一键重置仿真时间至真实当前时刻
  • 3 天循环时长,支持长时间轨道推演

6. 相机信息实时显示

画面底部状态栏实时输出观测视角参数:

参数说明
视点高度相机离地距离(KM)
偏航角水平旋转方位(°)
俯仰角上下俯仰角度(°)
翻滚角画面倾斜角度(°)
海拔高度相机海拔(M)
经度/纬度相机焦点地表坐标(度分秒格式)

三、通信链路视窗 (/link)

专用于卫星与地面站之间通信链路的实时监控与链路预算分析,为星地通信系统设计提供可视化的链路质量评估。

1. 实时链路监控

系统同时监控四颗卫星与郑州地面站的通信链路状态,每张卫星卡片实时展示:

指标说明
星地斜距卫星到地面站的直线距离,支持 km / 千km 自动单位切换
传播延迟电磁波信号从卫星到地面站的单向传播时间(ms)
天线指向角地面站天线方位角(0-360°)与仰角,低仰角时黄色警告
多普勒频移卫星相对运动引起的频率偏移(kHz),靠近蓝色、远离红色
通信窗口当前连通剩余时长倒计时 / 下次进入窗口预估等待时间

2. 链路预算分析

基于标准链路预算模型,实时计算并展示星地通信链路的电性能参数:

参数说明
自由空间损耗FSPL = 20log(d) + 20log(f) + 92.45(dB)
接收功率Pr = Pt + Gt + Gr - FSPL - Lother(dBm)
信噪比 SNRSNR = Pr - 10log(kTB) + 30(dB),带柱状图可视化

链路参数(载波频率、发射功率、噪声温度、带宽)支持面板内实时调整,所有计算即时响应。

3. 3D 可视化

  • 右侧 Cesium 视图聚焦郑州地面站,展示四颗卫星的轨道线与实时位置
  • 通信链路连接线动态变色:绿色 = 连通,灰色 = 断开
  • 黄色 2000km 监测圈标识地面站覆盖范围
  • 协议栈图例(连通 / 断开 / 地面站)

四、坐标转换 (/coordinate)

基于 ootk v6 航天动力学库的全坐标系转换工具,覆盖 13 种坐标类型的任意双向互转。

坐标系分类

类别坐标系
核心帧TEME、J2000 (ECI)、ITRF (ECEF)
轨道根数经典开普勒六根数、春分点根数(无奇点)
相对坐标Hill (CW 方程)、RIC(径向/沿迹/法向)
观测坐标Geodetic (LLA)、RAE(斜距/方位/仰角)、地心 & 站心 RA/Dec
姿态表示欧拉角 (Roll/Pitch/Yaw)、四元数

核心特性

  • J2000 万能中间帧:所有坐标系先转到 J2000 再转到目标,避免 156 个转换函数
  • 智能输入适配:根据源坐标系自动切换输入字段(笛卡尔 / 六根数 / 球坐标等)
  • 欧拉角 ↔ 四元数互转:基于方向余弦矩阵(DCM)的 trace 分支算法,处理万向节锁退化
  • 历元时间选择器,支持验证不同时刻的转换结果

五、空间态势感知 (/ssa)

对接 KeepTrack Space API v4,将真实卫星编目数据注入 Cesium 三维地球的全景式 SSA 平台。

核心特性

  • 卫星编目:11 种数据源(全部活动卫星 / LEO / GEO / 碎片 / CelesTrak / SatNOGS 等),500+ 卫星实时 SGP4 传播渲染
  • 轨道分类着色:LEO 蓝 / GEO 绿 / 碎片灰 / 其他橙,数据源限定类型时统一着色
  • SOCRATES 交会预警:碰撞概率四级分级(严重 ≥1e-3 / 高 / 中 / 低),5 分钟自动刷新
  • 地面站过境预测:6 个预设测控站点,金色标记与过境弧线可视化
  • 三面板可折叠:编目 / 过境 / 交会面板独立折叠,最大化 Cesium 视图
  • API 限流保护:冷却计时 + 5 分钟缓存 + 401/403 自动提示重输 Key

六、发射预告 (/launches)

全球火箭发射计划的卡片式浏览与详情追踪,覆盖"发射前"信息维度。

核心特性

  • 卡片网格列表:自适应 auto-fill, minmax(340px, 1fr) 布局,展示发射名称、时间、火箭、发射场
  • 状态标记:Go/Confirmed 绿色、Delayed/TBD 黄色、其余蓝色
  • 发射详情页 (/launches/:id):发射任务图片、倒计时、任务信息、火箭参数、发射工位列表
  • 火箭参数查询:通过 /v4/launch-vehicle/{name} 获取火箭描述与关联工位

七、空间指标 (/metrics)

空间目标数据驾驶舱,9 个 API 端点并行请求,展示宏观统计全景。

核心特性

  • API 健康状态:D1/R2 数据库状态、活跃/在轨/再入/总卫星数、平均 TLE 龄期
  • 四大指标计数:活跃载荷 / 非活跃载荷 / 总载荷 / 碎片数量,大号数字 + 彩色边框
  • TLE 龄期统计:摘要(总数/均值/中位/最值)+ CSS 直方图 + 未来 TLE 警告
  • 最近发射卫星:近 30 天发射清单,NORAD ID / 名称 / 国际编号 / 国家
  • 热门卫星排行:近 7 天查询次数 TOP,反映社区关注焦点
  • API 用量统计:总请求 / 独立 IP / 按端点 TOP / 按国家 TOP
  • 独立容错Promise.allSettled 确保任一接口失败不影响其他面板

八、文本数据 (/text-data)

卫星编目数据的管道分隔 CSV 查询、浏览与一键导出。

核心特性

  • 三维筛选器:对象类型(PAYLOAD/ROCKET_BODY/DEBRIS/UNKNOWN)× 国家代码 × 卫星名称
  • 国家代码映射:API 优先获取 + 本地 38 国兜底列表
  • 管道分隔 CSV 解析:按 | 分列、按 \n 分行,自动补齐尾部空列
  • 等宽字体表格:Consolas/Monaco 渲染,show-overflow-tooltip 超长截断
  • 一键下载 CSV:时间戳文件名,Blob 方式触发浏览器下载
  • 性能保护displayLimit = 500 限制渲染行数

项目结构

text
复制代码
tlePlus/ ├── public/ │ ├── gltf/ # 3D 模型资源 │ │ ├── weixing.gltf # 卫星模型 │ │ └── dish.gltf # 地面站雷达天线模型 │ └── textures/ # 地球纹理贴图 ├── src/ │ ├── components/ │ │ ├── ssa/ # 空间态势感知子组件 │ │ │ ├── ConjunctionPanel.vue # 交会预警面板 │ │ │ ├── GroundStationPanel.vue # 地面站与过境面板 │ │ │ ├── LaunchesPanel.vue # 发射面板(预留) │ │ │ ├── SatelliteCatalogPanel.vue # 卫星编目列表 │ │ │ └── SsaGlobe.vue # SSA Cesium 三维地球 │ │ ├── SatelliteTLEViewer.vue # TLE 数据平台(/tle) │ │ ├── SatelliteSimulation.vue # 卫星运行仿真(/simulation) │ │ ├── CommunicationLinkViewer.vue # 通信链路视窗(/link) │ │ └── CoordinateConverter.vue # 坐标转换工具(/coordinate) │ ├── views/ │ │ ├── SpaceSsa.vue # 空间态势感知主页面(/ssa) │ │ ├── LaunchMonitor.vue # 发射预告列表(/launches) │ │ ├── LaunchDetail.vue # 发射详情页(/launches/:id) │ │ ├── MetricsDashboard.vue # 空间指标面板(/metrics) │ │ └── TextDataViewer.vue # 文本数据查询(/text-data) │ ├── router/ │ │ └── index.ts # 路由配置(8 模块路由) │ ├── utils/ │ │ ├── keplerOrbit.ts # 开普勒轨道计算引擎 │ │ ├── tleCalculator.ts # TLE/SGP4 轨道传播 │ │ ├── tleParser.ts # TLE 数据解析器 │ │ ├── orbitPropagator.ts # 轨道传播与轨迹生成 │ │ ├── collisionCalculator.ts # 碰撞概率计算 │ │ ├── conjunctionAnalyzer.ts # 交会事件风险分级 │ │ ├── sensorGeometry.ts # 传感器几何计算 │ │ ├── linkBudget.ts # 链路预算计算工具 │ │ ├── coordinateConverter.ts # 全坐标系转换引擎(13种) │ │ └── keepTrackApi.ts # KeepTrack API v4 客户端 │ ├── types/ │ │ ├── tle.ts # TLE 数据类型定义 │ │ ├── collision.ts # 碰撞检测类型定义 │ │ └── ssa.ts # SSA 空间态势感知类型定义 │ ├── data/ │ │ └── sampleTle.ts # 内置 TLE 示例数据 │ ├── App.vue # 根组件(8 模块全局导航 + 路由视图) │ └── main.ts # 应用入口 ├── package.json ├── vite.config.ts └── tsconfig.json

轨道计算引擎

  • 基于开普勒轨道六要素(半长轴、偏心率、倾角、升交点赤经、近地点幅角、平近点角)
  • 牛顿迭代法求解开普勒方程 M = E - e·sin(E)
  • 支持高偏心率轨道(e > 0.8 使用改进初始猜测)
  • 3-1-3 旋转矩阵(Rz(Ω) · Rx(i) · Rz(ω))将轨道面坐标转换到 ECI
  • SGP4/SDP4 轨道传播(satellite.js),兼容 TLE 数据格式

坐标转换系统

  • 基于 ootk v6 航天动力学库,覆盖 TEME/J2000/ITRF 等 13 种坐标系
  • J2000 万能中间帧架构,避免 (13 \times 12 = 156) 个转换函数
  • 欧拉角 ↔ 四元数 DCM 互转,trace 分支算法处理万向节锁退化
  • 完整处理岁差、章动、GMST 旋转、极移等地球定向参数

坐标系统

  • 统一使用 ECI(地心惯性坐标系) 渲染卫星、轨道、传感器
  • 地面站使用 ECF(地球固定坐标系)的经纬度定位
  • 链路连线跨坐标系自动桥接

3D 渲染

  • 卫星/地面站使用 glTF 2.0 模型渲染
  • 传感器线框使用 CallbackProperty 实现每帧实时更新
  • 锥形填充使用 CylinderGraphics(topRadius=0)创建锥体
  • 链路动画使用 PolylineArrowMaterialProperty 方向箭头
  • 雷达扫描使用 PolygonGraphics + CallbackProperty 旋转多边形
  • 动态 polyline 颜色使用 ColorMaterialProperty 包裹 CallbackProperty
  • 大规模实时渲染优化:500+ 卫星 SGP4 传播 + 轨道线邻点距离过滤

通信链路预算

  • 实现标准星地链路预算模型,包含自由空间损耗、接收功率、信噪比等参数
  • ECI → ECF → ENU 坐标转换实现天线方位角/仰角精确计算
  • 多普勒频移基于相对速度在视线方向的分量实时计算
  • 通信窗口预计算法:根据轨道高度和地球半径计算可视时间占比

API 集成

  • KeepTrack Space API v4 客户端封装,支持 20+ 端点
  • API Key 管理与滚动再生,401/403 自动提示
  • 5 分钟请求缓存 + 限流冷却保护(429 → 2 分钟冷却)
  • 编目数据 NORAD ID 自动从 TLE 行提取补全
  • Promise.allSettled 并行请求 + 独立容错设计

文本数据处理

  • 管道分隔 CSV 解析(| 分列 + \n 分行 + 尾部空列补齐)
  • 动态 RESTful URL 路径构建(type/country/name 逐级追加)
  • 国家代码双层容错(API 优先 + 本地 38 国兜底)
  • Blob + URL.createObjectURL 实现客户端 CSV 一键下载

结语

SpaceDt 是一个将航天领域专业知识与前端工程实践相结合的项目。从 TLE 解析到轨道预报,从 Cesium 场景搭建到性能优化,从 ootk 坐标转换到 KeepTrack API 集成,8 大功能模块覆盖了卫星轨道可视化与空间态势感知的核心场景。

如果你对卫星轨道力学、3D 可视化、空间态势感知或 Cesium 开发感兴趣,欢迎从这个项目入手,它既是一个实用的工具,也是一个不错的学习起点。

技术交流:欢迎提出 Issue 或 PR 🚀

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP