Python坐标转换:ECI到ECEF

12

我正在使用Brandon Rhodes开发的sgp4 python包;我正在输入ISS(Zarya)的TLE信息。我得到了卫星在某个日期在ECI坐标系中的位置。但是,我想将其转换为ECEF坐标系。

至少有两个Matlab函数实现了(ecitoecef、eci2ecef),以及一个为RTKLIB项目实现的C函数(eci2ecef)。 (由于这是我的第一个问题,我有1个声望,因此每个问题限制为两个链接,所以我无法发布链接)

我找不到已经实现的Python函数。然而,在这个之前的问题中, Python satellite tracking with spg4, pyephem- positions not matching 用户说:“我至少找到了部分问题所在。spg84.propagate()返回的是ECI中的位置,而不是ECEF。快速运行eci2ecef,它与预测响应完全一致。”

这里的 eci2ecef 是指 Python 实现吗?这个实现在网上可以找到吗?是否有在线文档详细解释了我要自己实现时需要做哪些步骤?在这个问题 如何将 ECI 坐标转换为经度纬度和高度以在地图上显示? 中,评论中说“它们因地球旋转速率而不同,因此变换只是一个二维 cos sin;-sin cos 类型的变换。”。这个变换的角度是多少?是格林威治恒星时间吗?当我们使用 sgp4 时,我们指定的也是 GST 吗,还是其他时间?

非常感谢您的帮助!

3个回答

10

首先,我研究了在线CelesTrak上的AIAA 2006-6753论文,这篇论文是 sgp4 库首次在Python中公开发布的基础:

https://celestrak.org/publications/AIAA/2006-6753/

基于该论文的建议,特别是附录中的信息,我正在尝试将地球卫星集成到我的新天文学库Skyfield中。新版本将很快发布,但与此同时,您可以在以下网址上查看我使用的变换(基于上述论文):

https://github.com/brandon-rhodes/python-skyfield/blob/master/skyfield/sgp4lib.py

我不确定我的转换是否正确,但将会根据我能找到的所有官方位置来源检查结果,以确定是否存在任何系统性错误。


2
ECI到ECEF的转换也在satellite-js中实现,该库源自PyEphem。
您可能需要检查其正确性。

1

简化摄动模型是一组五个数学模型(SGP、SGP4、SDP4、SGP8和SDP8),用于计算卫星和太空碎片相对于以地心为基准的惯性坐标系的轨道状态向量。由于NORAD和NASA制作的两行元素集经常使用该模型,因此这组模型通常被统称为SGP4。这些模型预测了由地球形状、阻力、辐射以及其他天体(如太阳和月亮)引起的扰动效应。简化广义摄动(SGP)模型适用于轨道周期小于225分钟的近地天体。简化深空摄动(SDP)模型适用于轨道周期大于225分钟的物体,这相当于一个高度为5,877.5公里的圆形轨道。SGP4模型由Ken Cranford于1970年开发。该模型通过简化Lane和Cranford的更广泛的分析理论获得,其重力模型使用Brouwer的解决方案,其大气模型使用功率密度函数。SGP4 MATLAB版本返回卫星在四个坐标系即TEME、ITRS、GCRS和TOD中的状态向量。SGP4 Python版本返回卫星在三个坐标系即TEME、ITRS和GCRS中的状态向量。您可以使用以下链接获取我的SGP4 Python版本:https://www.researchgate.net/publication/358351066_SGP4_Python_code 或者您可以使用以下链接获取我的SGP4 MATLAB版本:https://www.researchgate.net/publication/346217793_SGP4_MATLAB_code

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接