Pyephem iss пример ошибкиObserver.compute() или ошибка типа данных?

Установил pyephem на macbook air через pip:

pip show pyephem
---
Name: pyephem
Version: 3.7.5.3
Location: /usr/local/lib/python2.7/site-packages
Requires: 

Основная проблема, с которой я столкнулся, заключается в том, что пример iss найден на http://rhodesmill.org/pyephem/tutorial. показывает:

iss = ephem.readtle("ISS (ZARYA)",
...  "1 25544U 98067A   03097.78853147  .00021906  00000-0  28403-3 0  8652",
...  "2 25544  51.6361  13.7980 0004256  35.6671  59.2566 15.58778559250029")
gatech.date = '2003/3/23'
iss.compute(gatech)
print("%s %s %s" % (iss.rise_time, iss.transit_time, iss.set_time))
2003/3/23 00:00:50 2003/3/23 00:03:26 2003/3/23 00:06:01

Но для моего кода +1 минута в цикле для получения Az/El я получаю «нет» или явно неправильные результаты:

obs = ephem.Observer()
obs.lat = '50.045995'
obs.lon = '-5.177628'
obs.pressure = 0
obs.temp = 0
obs.date = '2015/6/8 19:43:24'

line1 = "ISS (ZARYA)"
line2 = "1 25544U 98067A   03097.78853147  .00021906  00000-0  28403-3 0  8652"
line3 = "2 25544  51.6361  13.7980 0004256  35.6671  59.2566 15.58778559250029"
iss = ephem.readtle(line1, line2, line3)
print("%f %f %f %f" % (iss._epoch,iss._n,iss._inc,iss._raan) ) # Check tle is read

while True:
    #mars.compute(obs)
    #print("Date/time: %s Mars    Az/El %.6f %.6f" % (obs.date, float(mars.az), float(mars.alt)))

    iss.compute(obs)

    print("Date/time: %s ISS     Az/El %.6f %.6f %.6f" % (obs.date, ephem.degree * iss.az, ephem.degree * float(iss.alt), iss.range))
    print("%s %s %s" % (iss.rise_time, iss.transit_time, iss.set_time))

    obs.date += ephem.minute * 1

    time.sleep(1)

Результат:

Date/time: 2015/6/8 19:50:24 ISS     Az/El 0.054831 -0.027391 6377154.500000
None None None
Date/time: 2015/6/8 19:51:24 ISS     Az/El 0.054831 -0.027391 6377154.500000
None None None
Date/time: 2015/6/8 19:52:24 ISS     Az/El 0.054831 -0.027391 6377154.500000
None None None
Date/time: 2015/6/8 19:53:24 ISS     Az/El 0.054831 -0.027391 6377154.500000
None None None

Я думаю, что эти ошибки связаны с датой/углом/наблюдениями, но я все равно ожидаю, что они будут двигаться. Я уже проверил преобразование в рад/градус в различных типах данных, но не вижу, где ошибка. Любые предложения о том, что я делаю неправильно здесь, когда все планетарные тела, кажется, работают нормально, будут очень оценены!

Лучший, Крис

Обновление 1. Следующее изменение в obs не работает:

obs.lat = float(math.radians(50.045995))
obs.lon = float(math.radians(-5.177628))

person chris    schedule 08.06.2015    source источник
comment
Основные тесты: если вы просто измените дату (но сохраните исходный наблюдатель) из примера, это сработает? А если сменить наблюдателя, но сохранить дату?   -  person Eric Levieil    schedule 08.06.2015
comment
Пробовал использовать встроенный ephem.now() - не сработало. Я также попробовал ephem.cities('London') - это тоже не сработало. Планетарные тела до сих пор работают нормально.   -  person chris    schedule 08.06.2015
comment
А если использовать ту же дату, что и пример?   -  person Eric Levieil    schedule 08.06.2015
comment
Хм! Итак: obs.date = '2003/3/23' работает. НО obs.date = '2015/3/23' - нет! Мы приближаемся!   -  person chris    schedule 09.06.2015
comment
Возможно, @BrandonRhodes узнает об этом. Одни даты работают, другие нет.   -  person chris    schedule 09.06.2015
comment
Вы видели github.com/brandon-rhodes/pyephem/issues/56? ?   -  person Eric Levieil    schedule 09.06.2015
comment
РЕШЕНО: ошибка, по-видимому, специфична для Mac / OS X — я повторил попытку на другом стандартном компьютере с Ubuntu, и он работает нормально. Лучший, Крис   -  person chris    schedule 09.06.2015


Ответы (1)


Элементы спутников Земли точны только за несколько дней до и после даты, на которую они выпущены. Элементы в документации относятся к 2003 году, поэтому PyEphem не может использовать их, чтобы предсказать, где будет находиться спутник в 2015 году.

Вам нужно будет загрузить или вырезать и вставить свежие элементы из NORAD:

https://celestrak.com/NORAD/elements/

person Brandon Rhodes    schedule 21.06.2015