Найти (ra,dec) по (азимуту, высоте) в поле неба

У меня есть направленная антенна на Земле, и я хотел бы знать, куда она указывает в координатах ra, dec. Я бы хотел использовать для этого новую библиотеку Skyfield, так как pyephem больше не разрабатывается.

Легко вычислить мою позицию топоса на Земле:

planets = load('de421.bsp')
earth = planets['earth']
paris = earth + Topos('48.839059 N', '2.310147 E')

Но тогда я не могу понять, как обозначить аз, альт пару с этой точки. Я видел from_altaz метод, но я не могу заставить его работать.

Если я попробую это из топоса:

antenna = paris.from_altaz(alt_degrees=41.1,az_degrees=180)

Traceback (most recent call last):
  File "./compute.py", line 13, in <module>
    antenna = paris.from_altaz(alt_degrees=41.1,az_degrees=180)
AttributeError: 'VectorSum' object has no attribute 'from_altaz'

Все мои разные испытания приводили к ошибкам...

Как мне это сделать?

Спасибо!

1 ответ

from_altaz функция, которую вы пытаетесь использовать, из position_lib, Поскольку это касается как неподвижных, так и движущихся объектов (которые отличаются во времени), это функция во времени. Так что вам нужно указать время до observer с .at функция. из Skyfield импорта API

ts = api.load.timescale()
planets = api.load('de421.bsp')
earth = planets['earth']

antenna = earth + api.Topos('48.839059 N', '2.310147 E')

t = ts.now()
direction = antenna.at(t).from_altaz(alt_degrees=41.1, az_degrees=180)

ra, dec, distance = direction.radec()
print(ra)
print(dec)

Это приводит к:

04 ч. 43 м. 26,56 с.
-00deg 05' 39,5

Другие вопросы по тегам