Пример Pyephem iss наблюдаем.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
Я думаю, что эти ошибки связаны с датой / углом / акциями - но я все равно ожидал бы их появления. Я уже проверил конвертацию в rads / степень в различных типах данных, но не вижу, где ошибка. Будем очень благодарны за любые предположения о том, что я делаю не так, когда все планетарные тела работают нормально.
Лучший, Крис
Обновление 1 - следующее изменение в obs не работает:
obs.lat = float(math.radians(50.045995))
obs.lon = float(math.radians(-5.177628))
1 ответ
Элементы спутников Земли точны только в течение нескольких дней до и после даты, на которую они выпущены. Элементы в документации взяты из 2003 года, и поэтому PyEphem не может использовать их, чтобы предсказать, где спутник будет в 2015 году.
Вам нужно будет загрузить или вырезать и вставить свежие элементы из NORAD: