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