Найти (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