Для данного наблюдателя (lon, lat, time) на Земле и заданной галактической координаты (GLON, GLAT), как я могу вычислить соответствующую (alt, az) точку в небе с PyEphem?Как вычислить (alt, az) для данной галактической координаты (GLON, GLAT) с PyEphem?
ответ
Учитывая, что PyEphem в настоящее время работает, есть два шага, чтобы ответить на ваш вопрос. Во-первых, вы должны преобразовать пару координат галактики в экваториальную пару RA/dec.
import ephem
# Convert a Galactic coordinate to RA and dec
galactic_center = ephem.Galactic(0, 0)
eq = ephem.Equatorial(galactic_center)
print 'RA:', eq.ra, 'dec:', eq.dec
→ RA: 17:45:37.20 dec: -28:56:10.2
Эти координаты довольно близки к тем, которые Википедия дает для галактического центра.
Теперь, когда у нас есть нормальная координата RA/dec, нам просто нужно выяснить, где она находится в небе прямо сейчас. Поскольку PyEphem построен поверх библиотеки, которая знает только о небесных «телах», таких как звезды и планеты, нам просто нужно создать поддельную «звезду» в этом месте и спросить ее азимут и высоту.
# So where is that RA and dec above Boston?
# Pretend that a star or other fixed body is there.
body = ephem.FixedBody()
body._ra = eq.ra
body._dec = eq.dec
body._epoch = eq.epoch
obs = ephem.city('Boston')
obs.date = '2012/6/24 02:00' # 10pm EDT
body.compute(obs)
print 'Az:', body.az, 'Alt:', body.alt
→ Az: 149:07:25.6 Alt: 11:48:43.0
И мы можем проверить, что этот ответ является разумным, глядя на график неба в Бостоне поздно вечером: Стрелец - расположение центра Галактики - только поднимается над юго-восточной краю неба, что делает совершенный смысл юго-восточного азимута, как 149 °, и для еще небольшой высоты, как 11 °.
Координата (RA, DEC) от PyEphem соответствует именно той, которую я нахожу с помощью [Координатора координат HEASARC] (http://heasarc.gsfc.nasa.gov/cgi-bin/Tools/convcoord/convcoord.pl) , возможно, позиция [Wikipedia/Galactic_Center] (http://en.wikipedia.org/wiki/Galactic_Center) предназначена для черной дыры, а не для (GLON, GLAT) = (0,0). – Christoph
Вы можете изменить 'eq = ephem.Equatorial (galactic_center)' на 'equatorial = ephem.Equatorial (galactic_center)', тогда код будет запускаться непосредственно при вставке в оболочку python. – Christoph
Это решение очень красивое и просто. Единственное, что странно, это то, что вы назначаете частные атрибуты тела вместо того, чтобы устанавливать значения в конструкторе. – Christoph