java版通过轨道6根数实现计算出经纬度坐标

近期公司有个项目,实现卫星六根数实现计算出经纬度坐标,因为在网上找不到java资源。翻阅了大量的文章。然后自己着手去根据matlab代码实现了java语言的转换。

卫星轨道6根数主要有半长轴a、离心率e、轨道倾角i、近心点辐角ω、升交点经度Ω和真近点角φ

注图中 红框中98.790,60.00,30.00并不是轨道倾角i、近心点辐角ω、升交点经度,还需要具体运算。得出具体的数值

输入参数:
miu = 3.9860047e14;  %地球引力常数(m^3/s^2)
a_o = 6862.8; %轨道半长轴 (km)
e_o = 0.001884; %偏心率 
i_o = 98.79*pi/180 ;   %轨道倾角 (度)
w_o = 60*pi/180 ;  %近地点幅角(度)
Omiga_o = 30*pi/180; %升交点赤经(度)
t0=[2022 5 1 0 0 0];%过近地点时刻
t=[2022 5 1 17 10 0];%当前时刻

最后用java代码计算的经纬度以及高度值分别为-92.25672304173123, 31.882691687797774, 479170.1556135472。经过验证和真实数值差别不是很大。真实数值为:-92.256756315892990,31.882400836824583,4.791700736332247e+05

具体java代码实现截图如下:

 以上只截了部分的java代码

所有的加减乘除都利用bigdecimal实现,防止用double运算 出现精度丢失,计算有误差。

实现的原理为:通过轨道6根数计算出j2000坐标系,然后把j2000坐标系转换成地心地固坐标系(ECFF)。然后再把ECFF转成具体的经纬度。

j2000坐标系转ECFF其实还是有点复杂的。这个在网上也很难找到资源。我通过翻阅国外博客,看到了相关的处理,引用过来的。如果需求可以私我!!!这里不做解析和讲解。如果有不懂的地方也可以联系我!代码我放到这个文章java 实现EME2000(国家大地坐标系)转ECEF坐标系(地心地固坐标系)_王威振的csdn的博客-CSDN博客_java 大地2000

其他卫星文章,请参考如下链接:

java 卫星轨道6根数实现轨道预测_java 六根数计算-CSDN博客

java根据六根数文件生成星下点数据,实现轨道预测-CSDN博客 

stk 根据六根数文件生成卫星轨迹(一)_stk复现轨道-CSDN博客

STK 根据六根数文件导出星下点(二)_六根数对应的星下点经纬度示例-CSDN博客

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王威振的csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值