基于JAVA开发的利用TLE数据计算卫星轨道六根数源码

1、TLE数据(Two Line Elements)

tle数据是描述卫星轨道的一种标准格式,由两行数字组成,格式如下

QIXIANG-001          
1 44940U 20001AC  23289.39944927  .00024096  00000+0  16308-2 0  9995
2 44940  53.0532 295.9515 0001371  97.1775 262.9370 15.06404965208194

废话不多说,下面直接上代码

2、使用Orekit计算轨道六根数

1、引入orekitjar包

在orkit官网Download下载对应版本的jar包,我下载的是最新版12.0.1,下载后将orekit-12.0.1.jar引入到项目中

2、引入Hipparchus依赖包,hipparchus可以通过maven依赖引入,一定要引入3.0以上版本,否则会报一个找不到类的错误

happarchus介绍参见官网About | Hipparchus

   <dependency>
            <groupId>org.hipparchus</groupId>
            <artifactId>hipparchus-fitting</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.hipparchus</groupId>
            <artifactId>hipparchus-clustering</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.hipparchus</groupId>
            <artifactId>hipparchus-fft</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.hipparchus</groupId>
            <artifactId>hipparchus-filtering</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.hipparchus</groupId>
            <artifactId>hipparchus-geometry</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.hipparchus</groupId>
            <artifactId>hipparchus-ode</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.hipparchus</groupId>
            <artifactId>hipparchus-optim</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.hipparchus</groupId>
            <artifactId>hipparchus-stat</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.hipparchus</groupId>
            <artifactId>hipparchus-migration</artifactId>
            <version>3.0</version>
        </dependency>

3、计算轨道六根数

  public void calculateOrbitElement(String tle){
        File orekitData = new File("D:\\orekit-data");

        DataProvidersManager manager = DataContext.getDefault().getDataProvidersManager();
        manager.addProvider(new DirectoryCrawler(orekitData)); // 存放orekitdata路径
        String[] params = tle.split("\n");
        String line1= params[1];
        String line2= params[2];
        TLE tleObj = new TLE(line1,line2);
        TLEPropagator  tlePropagator= TLEPropagator.selectExtrapolator(tleObj);
        Orbit cartesianOrbit = tlePropagator.getInitialState().getOrbit(); // 笛卡尔轨道
        KeplerianOrbit keplerianOrbit = new KeplerianOrbit(cartesianOrbit);  // 转换为开普勒轨道
        System.out.println("半长轴:"+keplerianOrbit.getA());
        System.out.println("离心率:"+keplerianOrbit.getE());
        System.out.println("轨道倾角:"+keplerianOrbit.getI());
        System.out.println("升交点赤经:"+Math.toDegrees(keplerianOrbit.getRightAscensionOfAscendingNode())); // 弧度转化为度
        System.out.println("近地点幅角:"+Math.toDegrees(keplerianOrbit.getPerigeeArgument()));
        System.out.println("真近点角"+keplerianOrbit.getTrueAnomaly());
    }

orikit-data文件下载地址:https://gitlab.orekit.org/orekit/orekit-data/-/archive/master/orekit-data-master.zip

运行结果:

半长轴:6931700.6419055825
离心率:0.0012640703558907736
轨道倾角:0.9262838362266536
升交点赤经:-64.04849998651345
近地点幅角:52.248882667192056
真近点角-0.9119147488086196

真近点角范围是(0,2Π),这里计算出来为负是因为这里计算的范围是(-Π,Π),可以通过数学转换来实现

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值