天体摄影中的坐标变换

2024-09-30 00:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个坐标变换。但这是不正确的。我想把它转换成另一个具体的坐标。我正在用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'))

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


Tags: 代码fromimport精度transformunitframecoordinates
1条回答
网友
1楼 · 发布于 2024-09-30 00:29:59

你正在混淆春分点(赤经的经典零点)和纪元(观测到的东西)。另外,FK5是旧的天体参考系,它已经被ICRS取代,两个坐标系非常接近,因此在两者之间进行转换是没有意义的。在

Astropy使用ERFA,它是SOFA代码的重新实现,它实现IAU2000/2006分辨率来计算位置,并使用基于CIO的现代转换。恒星宫使用的是古老的基于春分点的方法。您可以在SOFA Tools for Earth Attitude烹饪书的图2中看到这两种方法之间的区别,Astropy沿着CIO右侧分支,Stellarium沿着基于春分点的左侧分支。在

你可以计算出你要问的东西,即“我的物体在天空中的什么位置,在我2018-10-19 00:19:41 UTC时,这些ICRS坐标为J2000.0”,这将是使用astropy的天体中间参考系(CIRS),但这与Stellarium报告的地心视在位置不可比。这是因为这两种方法对地极位置的模型(岁差章动模型)、赤经起源和地球自转模型是不同的。这使得在图2中的local apparent [h, delta]步骤(对应于Stellarium中的HA/Dec (apparent))再次相遇之前,比较事物变得更加困难。阿童木实际上没有HA/Dec帧,因为它通常是Alt/Az的中间步骤,也就是说,对于一个基于地球的观测者来说,一个物体的西/东距离地平线有多远。在

下面的代码应该可以让您计算一个本地表观HA,Dec,以便与Stellarium进行比较(假设您发送的日期和地点在starlarium中是相同的)。这对于一个自身运动和视差可以忽略不计的遥远的物体是有效的;否则当你声明SkyCoord时,你需要加入这些元素,更多细节见Using velocities with 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,极移)等,会有一些差异,但应在次秒级进行比较。在

相关问题 更多 >

    热门问题