Я использую астропию для некоторых симуляций.У меня есть набор EarthLocations, которые я хочу преобразовать в систему координат XYZ, указывающую на некоторую небесную координату.Это очень простое вращение координат.
У меня есть код, который близок к работе (см. Ниже).xyz - это геоцентрические координаты, полученные из EarthLocation.geocentric.ha is ra - местное звездное время, а dec - склонение источника.ra и dec происходят из SkyCoord.Я бы предпочел сделать это с EarthLocations и SkyCoords.Выходные координаты должны касаться земли и иметь одну ось, указывающую на SkyCoord.
def xyz_to_uvw(xyz, ha, dec):
"""
Rotate :math:`(x,y,z)` positions in earth coordinates to
:math:`(u,v,w)` coordinates relative to astronomical source
position :math:`(ha, dec)`. Can be used for both antenna positions
as well as for baselines.
Hour angle and declination can be given as single values or arrays
of the same length. Angles can be given as radians or astropy
quantities with a valid conversion.
:param xyz: :math:`(x,y,z)` co-ordinates of antennas in array
:param ha: hour angle of phase tracking centre (:math:`ha = ra - lst`)
:param dec: declination of phase tracking centre.
"""
x, y, z = numpy.hsplit(xyz, 3)
# Two rotations:
# 1. by 'ha' along the z axis
# 2. by '90-dec' along the u axis
u = x * numpy.cos(ha) - y * numpy.sin(ha)
v0 = x * numpy.sin(ha) + y * numpy.cos(ha)
w = z * numpy.sin(dec) - v0 * numpy.cos(dec)
v = z * numpy.cos(dec) + v0 * numpy.sin(dec)
return numpy.hstack([v0, v, w])
Я думаю, что на выходе должен быть набор EarthLocations, относящихся к конкретному кадру.
Я изучил документацию, но не могу понять, как это сделать.