Как я могу использовать skyfied для преобразования координаты SGP4 TEME в ECEF?

Я хочу нанести спутниковое слежение на карту. Поэтому я использую 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] >

person X.H Cui    schedule 24.10.2016    source источник
comment
Библиотека skyfield пытается загрузить файл deltat.data с веб-сайта (ссылка в последней строке) и не может этого сделать. Попробуйте проверить подключение к Интернету или загрузите deltat.data файл и поместите его в свой рабочий каталог.   -  person Stanislav Ivanov    schedule 24.10.2016


Ответы (1)


Я решил это, добавив код. В строке iokit.py '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))
person X.H Cui    schedule 01.08.2017