使用最新的2010版SGP4跟踪地球卫星TLE轨道
sgp4的Python项目详细描述
这个python包计算 地球轨道卫星 来自Celestrak这样的来源。它实现了 最新版本的sgp4,并定期与sgp4运行 测试套件以确保其卫星位置预测一致 对于标准C++实现的预测,在0.1μmm以内 算法的。这个误差远小于1–3 km/天 卫星本身偏离了TLE中描述的理想轨道 文件夹。
保留了C++函数名,因为用户可能已经 熟悉这个图书馆的其他语言。下面是如何计算 29日12时50分19秒先锋1号的X、Y、Z位置和速度 2000年6月:
>>> from sgp4.earth_gravity import wgs72 >>> from sgp4.io import twoline2rv >>> >>> line1 = ('1 00005U 58002B 00179.78495062 ' ... '.00000023 00000-0 28098-4 0 4753') >>> line2 = ('2 00005 34.2682 348.7242 1859667 ' ... '331.7664 19.3264 10.82419157413667') >>> >>> satellite = twoline2rv(line1, line2, wgs72) >>> position, velocity = satellite.propagate( ... 2000, 6, 29, 12, 50, 19) >>> >>> print(satellite.error) # nonzero on error 0 >>> print(satellite.error_message) None >>> print(position) (5576.056952..., -3999.371134..., -1521.957159...) >>> print(velocity) (4.772627..., 5.119817..., 4.275553...)
位置矢量测量km内的卫星位置 从地球的中心。速度就是 三个参数正在变化,以km/s表示。
有三个可用的重力模型可以从 earth_gravity模块:
- wgs72
- wgs72old
- wgs84
wgs72模型似乎是卫星中最常用的 跟踪社区,可能是大多数TLE元素背后的模型 可以下载的。
twoline2rv()函数返回一个Satellite对象 属性携带从TLE条目加载的数据:
TLE文件中给出的唯一卫星号。
>>> satellite.satnum 5
元素集的纪元,表示三种方式: 为整数年加上一年中的浮点数; 作为浮点julian日期;作为pythondatetime对象。
>>> satellite.epochyr 2000 >>> satellite.epochdays 179.78495062 >>> satellite.jdsatepoch 2451723.28495062 >>> satellite.epoch datetime.datetime(2000, 6, 27, 18, 50, 19, 733567)
这个实现在2010年8月通过了所有的自动化测试 Vallado等人发布SGP4的参考实施 最初于2006年出版了SGP4版本:
Vallado, David A., Paul Crawford, Richard Hujsak, and T.S. Kelso, “Revisiting Spacetrack Report #3,” presented at the AIAA/AAS Astrodynamics Specialist Conference, Keystone, CO, 2006 August 21–24.
如果你想复习这篇论文,它是available online。你可以 始终下载其代码的最新版本以便与 这个python模块(或其他实现)位于AIAA-2006-6753.zip。
此模块自Vallado修订后的C++代码改编而来。 是他们的zip文件中最近更新的sgp4实现:
- Fortran,2008年8月
- 帕斯卡,2008年8月
- Matlab,2008年5月
- 爪哇,2005年7月
更改日志
2015-01-15-1.4-当TLE输入与格式不匹配时显示详细帮助。
2014-06-26-1.3-返回(NaN,NaN,NaN)错误向量并设置.error_message
2013-11-29-1.2-生成epochyr4位数;添加datetimefor .epoch
2012-11-22-1.1-python 3兼容性;更多文档
2012-08-27-1.0-初始版本