使用最新的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实现:

    C++,2010年8月
  • 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-初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java组织。openqa。硒。遥远的UnreachableBrowserException如何定义EXE路径?   java Camel AdviceWith不使用指定文件替换端点   基于字符串的java图像加载   Java中的启发式算法,计算8个谜题状态的线性冲突   java为什么不支持文件。probeContentType返回null   JPA@EntityListeners、@PrePersist和Spring@RepositoryEventHandler、@HandleBeforeSave之间的java差异   可能前缀的Java字符串到字符串[]   安装rJava | Makefile时发生java错误。全部:38:target’libjri的配方。所以他失败了   Java公共静态void main()   java如何覆盖txt文件中的某些单词   java如何获得循环中生成的字符值之和?   java Log4j创建另一个具有相同属性的appender   java如何在从Axis2 Web服务客户端通过代理服务器调用Web服务时设置代理设置?   在Windows上安装Elasticsearch时发生java错误   java如何向EditText组件添加TextChangedListener?