PyEphem — пакет для выполнения астрономических расчетов на Python. Основывается на библиотеках XEphem.
В частности, выполняет:
- вычисление эфемерид Солнца и Луны;
- вычисление гринвичского истинного звездного времени (GAST);
- перевод эклиптических координат в экваториальные и обратно.
Установка из pip
# раскомментировать следующую строку, если pip не установлен
# sudo apt-get install python-dev python-pip
sudo pip install pyephem
Работа
Запускаем python
, импортируем ephem
>>> import ephem
Вычисление видимых и астрометрических эфемерид Солнца на заданную дату
ra
и dec
— прямое восхождение (right ascension) и склонение (declination) соответственно. Префикс a_
обозначает видимые значения, без префикса — астрометрические.
>>> sun = ephem.Sun()
>>> sun.compute('1989/1/1')
>>> print('%s %s' % (sun.ra, sun.dec))
18:45:53.92 -23:01:25.2
>>> print('%s %s' % (sun.a_ra, sun.a_dec))
18:46:34.82 -23:00:32.1
Вычисление гринвичского истинного звездного времени
или GAST — Greenwich Apparent Sidereal Time:
>>> g = ephem.Observer()
>>> g.lat = 0.
>>> g.lon = 0.
>>> g.date = "1999/12/7 2:45"
>>> print g.sidereal_time()
7:46:44.58
Желательно получить более точные доли секунд.
Перевод из часовой меры угла в радианы:
>>> float(g.sidereal_time())
2.0365503843390784
Перевод из радиан в часовую меру:
>>> ephem.hours(2.0365503843390784)
7:46:44.58
Из краткого руководства по PyEphem не нашел, как заставить hours()
выдавать доли секунд с точностью выше сотых. Поэтому пришлось написать простенькую функцию перевода из радиан в часовую меру:
>>> r = float(g.sidereal_time())
>>> def rad2hour(rad):
... secGrad = rad*648000.0/ephem.pi
... secHour = secGrad/15.0
... h = int(secHour/3600.0)
... min = secHour - h*3600.0
... m = int(min/60.0)
... s = min - m*60.0
... return (h,m,s)
...
>>> rad2hour(r)
(7, 46, 44.5780292099771)
Комментарии
comments powered by Disqus