我正在使用 sgp4 python 包(由 Brandon Rhodes 开发);我正在输入 ISS(Zarya)的 TLE 信息。我在 ECI 坐标系中获得了某个日期的卫星位置。但是,我想将其转换为 ECEF 坐标系。
至少有两个为 RTKLIB 项目实现的 matlab 函数实例(ecitoecef、eci2ecef)和一个 C 函数(eci2ecef)。(我不能发布链接,因为每个问题我有两个链接的限制,因为这个是我的第一个问题,我有声誉 1)
我找不到实现的 python 函数。 但是,在上一个问题中, Python satellite tracking with spg4, pyephem- positions not matching 用户说“我至少找到了问题的一部分。spg84.propagate() 返回 ECI 中的位置,而不是 ECEF。快速运行 eci2ecef,它与预测响应完美对齐。”
那个 eci2ecef 指的是 python 实现吗?这可以在线获得吗?如果我自己实现的话,网上有文档准确说明需要完成的步骤吗?在本题How do I convert ECI coordinates to longitude latitude and altitude to display on a Map? 他们在评论中说“它们因地球的自转速率而异,因此转换只是二维 cos sin;-sin cos 类型转换。”。变换的角度是多少?是格林威治边际时间吗?我们用sgp4的时候,是不是也是我们指定的GST,还是其他时候?
非常感谢您的帮助!
最佳答案
首先,我研究了 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
我不确定我的转换是否正确,但会根据我能找到的尽可能多的官方头寸来源检查结果,以确定我是否犯了任何系统性错误。
关于Python坐标转换ECI到ECEF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24691654/