3

我想在地图上绘制卫星跟踪。所以我将 SGP4 1.4 与 python 一起使用。输入 TLE 数据,但输出数据不是我想要的。所以我想将输出数据转换为ECEF数据并得到经度和纬度。

我知道 skyfied 可以将 TEME 转换为 ECEF,但我不知道如何使用它。

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

而我使用skyfield遇到了错误:

from skyfield.api import load
ts=load.timescale()

错误是:

File "D:\Anaconda2\lib\site-packages\skyfield\iokit.py", line 213, in timescale
    data = self('deltat.data')

File "D:\Anaconda2\lib\site-packages\skyfield\iokit.py", line 166, in __call__
    download(url, path, self.verbose)

File "D:\Anaconda2\lib\site-packages\skyfield\iokit.py", line 329, in download
    raise IOError('cannot get {0} because {1}'.format(url, e))

IOError: cannot get http://maia.usno.navy.mil/ser7/deltat.data because <urlopen error [Errno 10060] >
4

2 回答 2

1

我已经通过添加一些代码来解决它。在 iokit.py 'function download() 335 行

 try:
    print (url)  #original

    try:
        connection = urlopen(url)
    except:
       import urllib2
       user_agent ='"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36"' #cxh
       headers = { 'User-Agent' : user_agent }
       proxy = urllib2.ProxyHandler({}) 
       opener = urllib2.build_opener(proxy) 
       urllib2.install_opener(opener) 
       req ,= urllib2.Request(url, headers = headers) 
       response = urllib2.urlopen(url) 
       connection= response
       print ('get data successfully')

except Exception as e:
    raise IOError('cannot get {0} because {1}'.format(url, e))
于 2017-08-01T06:17:19.233 回答
0

简化扰动模型是一组五个数学模型(SGP、SGP4、SDP4、SGP8 和 SDP8),用于计算卫星和空间碎片相对于地心惯性坐标系的轨道状态向量。这组模型通常被统称为 SGP4,因为该模型的使用频率很高,尤其是 NORAD 和 NASA 生产的两线元素组。这些模型预测了由地球形状、阻力、辐射和来自太阳和月球等其他天体的引力效应引起的扰动效应。简化的一般扰动 (SGP) 模型适用于轨道周期小于 225 分钟的近地物体。简化的深空扰动 (SDP) 模型适用于轨道周期大于 225 分钟的物体,对应于 5,877.5 公里的高度,假设一个圆形轨道。SGP4 模型是由 Ken Cranford 于 1970 年开发的。该模型是通过简化 Lane 和 Cranford 的更广泛的分析理论获得的,该理论将 Brouwer 的解用于其引力模型,并将功率密度函数用于其大气模型。在以下链接中,您可以使用 SGP4 Python 版本,该版本返回卫星在三个坐标系中的状态向量,即 TEME、ITRS 和 GCRS。 https://www.researchgate.net/publication/358351066_SGP4_Python_code

于 2022-03-05T08:51:29.523 回答