Astropy中的坐标转换

5

我正在使用Astropy进行坐标转换,但是出现了问题。情况如下,我有一个J2000的星体坐标,想要将其转换为实际时代(或其他特定日期)的坐标。我通过Stellarium提供的坐标验证了代码。

问题在于结果相差约20分钟,这是一个很大的问题,因为我需要准确到几十毫秒。

所使用的代码如下:

from astropy.coordinates import SkyCoord
from astropy.coordinates import FK5

c = SkyCoord(20.398617733743833, 38.466348612533892,
         unit='deg', frame='icrs')

c_fk5 = c.transform_to(FK5(equinox='2018-10-19 00:19:41'))

我想知道我的方法是否错误,以及如何获得更好的结果。请大家自由回答并发表评论和建议。谢谢。

1个回答

6
你混淆了“春分点”(经度零点的传统参考点)和“历元”(观测某物时的时间点)。FK5是旧的天文参考系,已被ICRS取代,两个参考系非常接近,因此在两者之间进行转换没有意义。
Astropy使用ERFA重新实现了SOFA代码,该代码实现了IAU2000/2006决议以计算位置,并使用基于现代CIO的转换。Stellarium使用较旧的基于春分点的方法。您可以在SOFA Tools for Earth Attitude食谱的图2中看到两种方法之间的差异,其中Astropy沿着右侧的CIO分支走,而Stellarium沿着左侧的基于春分点的分支走。
您可以使用astropy计算您所询问的内容,即“我的物体在天空中的位置是什么,在J2000.0时刻2018年10月19日00:19:41 UTC时具有这些ICRS坐标”,这将是使用天球中间参考系统(CIRS),但这与Stellarium报告的地心视位置不可比较。这是因为两种方法中用于确定地球极点位置(岁差-章动模型)、赤经起点和地球旋转模型的模型是不同的。这使得在图2中的本地视位置[h,delta]步骤(对应于Stellarium中的HA / Dec(视觉))之前,比较这两种方法变得更加困难。而且,Astropy并没有真正拥有HA / Dec框架,因为它通常是Alt / Az框架的中间步骤,即对于基于地球的观察者,物体将在地平线上方多远以及向西/东多远。
以下代码应该可以让您计算本地表观HA、Dec,以便与Stellarium进行比较(前提是您在Stellarium中发送的日期和位置相同)。这适用于远处的物体,其中恰当的运动和视差是可以忽略的;否则,在声明SkyCoord时,您需要添加这些内容-有关更多详细信息,请参见使用速度与SkyCoord
import astropy.units as u
from astropy.coordinates import SkyCoord, ITRS, EarthLocation
from astropy.time import Time

c = SkyCoord(20.398617733743833, 38.466348612533892, unit='deg', frame='icrs')
t = Time('2018-10-19 00:19:41', scale='utc')
loc = EarthLocation(lon=30*u.deg, lat=30*u.deg, height=0*u.m)

c_ITRS = c.transform_to(ITRS(obstime=t))
# Calculate local apparent Hour Angle (HA), wrap at 0/24h
local_ha = loc.lon - c_ITRS.spherical.lon
local_ha.wrap_at(24*u.hourangle, inplace=True)
# Calculate local apparent Declination
local_dec = c_ITRS.spherical.lat
print("Local apparent HA, Dec={} {}".format(local_ha.to_string(unit=u.hourangle, sep=':'), local_dec.to_string(unit=u.deg, sep=':', alwayssign=True) ))

由于使用不同的模型,考虑到地球定位参数(UT1-UTC、极移)等因素,可能会有一些差异,但它们应该在亚秒级别进行比较。

嗨,@astrosnapper,只是一个小注释,最后一个打印语句缺少一个括号... - juandesant
1
谢谢,已修复 - astrosnapper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接