You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CesiumJs添加卫星并显示其绕地球的轨道路径?

CesiumJS实现卫星绕地运行并显示轨道

下面是直接可用的代码示例,适配你的需求,包含红色卫星圆点、轨道显示和自动绕地运行逻辑:

// 初始化Cesium Viewer
const viewer = new Cesium.Viewer('cesiumContainer', {
  animation: true, // 显示时间动画控件
  timeline: true, // 显示时间线
  shouldAnimate: true // 默认开启动画
});

// 定义卫星轨道参数
const orbitalHeight = 400000; // 轨道高度,单位米
const orbitalPeriod = 90 * 60; // 轨道周期,90分钟转一圈,单位秒
const inclination = Cesium.Math.toRadians(45); // 轨道倾角45度

// 创建卫星实体
const satellite = viewer.entities.add({
  name: '我的卫星',
  // 红色圆点卫星模型
  point: {
    pixelSize: 8,
    color: Cesium.Color.RED,
    outlineColor: Cesium.Color.WHITE,
    outlineWidth: 2
  },
  // 轨道路径设置
  path: {
    resolution: 1,
    material: new Cesium.PolylineGlowMaterialProperty({
      glowPower: 0.1,
      color: Cesium.Color.CYAN
    }),
    width: 3,
    show: true
  }
});

// 计算卫星随时间变化的位置
const startDate = viewer.clock.startTime;
const stopDate = viewer.clock.stopTime;
const timeStepInSeconds = 60; // 每60秒记录一个位置点

// 生成轨道位置采样数据
const positionProperty = new Cesium.SampledPositionProperty();
let time = startDate;
while (time < stopDate) {
  // 计算当前时间对应的轨道角度
  const angle = Cesium.Math.TWO_PI * ((time.getTime() - startDate.getTime()) / 1000) / orbitalPeriod;
  
  // 计算卫星的经纬度和高度
  const longitude = angle;
  const latitude = inclination * Math.sin(angle); // 模拟倾斜轨道的纬度变化
  const height = orbitalHeight;
  
  // 将经纬度高度转换为Cartesian3坐标
  const position = Cesium.Cartesian3.fromRadians(longitude, latitude, height);
  
  // 添加位置采样点
  positionProperty.addSample(time, position);
  
  // 推进时间
  time = Cesium.JulianDate.addSeconds(time, timeStepInSeconds, new Cesium.JulianDate());
}

// 将采样位置绑定到卫星实体
satellite.position = positionProperty;

// 自动定位到卫星
viewer.trackedEntity = satellite;

代码解释:

  • Viewer初始化:开启动画和时间线控件,默认自动播放动画,直接查看卫星运行效果。
  • 轨道参数:可调整orbitalHeight(轨道高度)、orbitalPeriod(运行周期)、inclination(轨道倾角)修改卫星轨迹。
  • 卫星实体:保留你原本的红色圆点,新增path属性实现发光青色轨道显示。
  • 位置采样:通过SampledPositionProperty存储卫星不同时间点的位置,Cesium自动插值让运行更平滑。
  • 轨道计算:用三角函数模拟倾斜轨道运行;若需真实轨道,可替换为TLE(两行轨道数据)解析逻辑:
// 示例TLE数据(可替换为目标卫星的TLE)
const tleLines = [
  '1 25544U 98067A   24180.50000000  .00016717  00000+0  30271-3 0  9001',
  '2 25544  51.6416 123.4567 0001234  98.7654 261.2345 15.49876543  9002'
];
const tle = Cesium.Tle.fromStrings(tleLines[0], tleLines[1]);
const satellitePosition = Cesium.SampledPositionProperty.fromTle(tle);
satellite.position = satellitePosition;

常见问题解决:

之前示例无法运行大概率是Cesium版本差异或缺少必要控件(如未开启动画),上述代码基于最新稳定版编写,直接复制即可运行。

内容的提问来源于stack exchange,提问作者Amber_R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:26:07