Orekit 学习笔记(二)——星下点轨迹

1,854 阅读2分钟

写在前面

这是 Orekit 学习系列的第二篇,第一篇 Orekit 学习笔记(一)——Attitude 主要学习了卫星的姿态和初次接触了 Orekit 的昼夜探测事件,可以根据卫星的 TLE 数据(两行轨道根数),计算卫星飞行经过的昼夜变化,从而调整卫星的相机,白天进行工作,晚上进入休息姿态。

这一章主要学习依然是根据卫星 TLE 数据(两行轨道根数),利用 Orekit 计算卫星的星下点和星下轨迹。

概念介绍

如下图所示,就是卫星的星下点轨迹,那什么是星下点轨迹?首先需要了解一下星下点的概念。

image-20221114212642524.png

星下点_百度百科 (baidu.com)

简单来说星下点是地球中心与卫星的连线在地球表面上的交点,用地理经、纬度表示。卫星正下方的地面点称为星下点。星下点的集合称为星下点轨迹。可以通过网站 (scienceasdf.github.io)在线绘制星下点。

星下点轨迹计算

Step 1: 创建 TLE Propagator(轨道动力模型)

//采用 STARLINK-1016 卫星定义轨道
final String line1 = "1 44722U 19074K   22306.13064920  .00001350  00000+0  10954-3 0  9998";
final String line2 = "2 44722  53.0549 279.3841 0001884  44.5577 315.5564 15.06391807164509";
TLE tle = new TLE(line1, line2);
TLEPropagator tlePropagator = TLEPropagator.selectExtrapolator(tle);

Step 2: 计算目标日期,卫星在轨道坐标系的位置

//计算 UTC 时间2022-11-14T14:00:00 卫星位置
final AbsoluteDate target = new AbsoluteDate(2022, 11, 14, 14, 0, 00.000,TimeScalesFactory.getUTC());
SpacecraftState spacecraftState = tlePropagator.propagate(target);
//计算卫星在轨道坐标系下的位置
Vector3D position = spacecraftState.getPVCoordinates().getPosition();

Step 3: 计算星下点

我们根据 Step 2 计算出卫星在轨道坐标系下的位置,计算卫星的星下点,实际上就是将轨道坐标系下的点转化到 GPS 坐标系(WGS-84坐标系)下。

//定义地球,J2000坐标系下
final OneAxisEllipsoid earth = new OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS,Constants.WGS84_EARTH_FLATTENING, FramesFactory.getITRF(IERSConventions.IERS_2010, true));
//卫星位置转换到地球坐标系下得到星下点
GeodeticPoint satGroundPoint = earth.transform(position, frame, target);