Для данного наблюдателя (долгота, широта, время) на Земле и данной галактической координаты (GLON, GLAT), как я могу вычислить соответствующую (высоту, азимут) точку на небе с помощью PyEphem?
Как вычислить (alt, az) для заданной галактической координаты (GLON, GLAT) с помощью PyEphem?
Ответы (1)
Учитывая то, как в настоящее время работает 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°.
eq = ephem.Equatorial(galactic_center)
на equatorial = ephem.Equatorial(galactic_center)
, тогда код будет запускаться непосредственно при вставке в оболочку Python.
- person Christoph; 11.07.2012
body = ephem.FixedBody(ra=123.123, dec=45.45)
, но почему-то у меня не работает ни body = ephem.FixedBody(ra=eq.ra, dec=eq.dec)
, ни body = ephem.FixedBody(ra=eq.ra.real, dec=eq.dec.real)
, в обоих случаях я получаю body._ra == 0
. Это почему?
- person Christoph; 11.07.2012