我在处理银河系中性氢观测数据时,需要将原始的频率-流强光谱转化为视向速度-流强光谱。经查阅论文与数据后得知,一般银河系中性氢巡天的数据中的视向速度为相对本地静止标准(Local Standard of Rest, LSR)的速度,若要将我们观测得到的数据与巡天观测数据进行对比,需要对我们手上的光谱数据进行参考系转换处理。其流程如下:

原始数据(相对地球参考系的视向速度)→相对太阳重心系(BSR)的视向速度→相对本地静止标准(LSR)的视向速度

这是经与组员分析讨论后得到的流程。我对天体测量学相关知识不甚了解,若在后续学习中发现存在纰漏或错误会立刻更正。也因本次实验以体验与尝试为主,数据精度不高,我们也没有继续深究。

首先对出现的各个参考系做一个简单介绍。

1. 参考系介绍及转换公式

  • 本地静止标准(LSR)

通过观测邻近恒星的自行与视向速度,很自然可推出太阳相对周围恒星具有一个本动速度。为了研究银河系中各个恒星及气体团相对银心的运动,我们需要一个排除掉太阳运动标准的参考系,即LSR。其定义为取邻近恒星的观测速度,它们相对LSR的速度之和应为0。 LSR与太阳质心系(Barycentric Standard of Rest, BSR)的换算公式为: \[ v_{LSR}=v_{BSR}+9\cos (l)\cos (b) +12\sin (l)\cos (b) + 7\sin (b) \]

  • 太阳质心系(BSR)

该参考系的参考点为太阳系质心,因太阳系绝大部分质量来自太阳,可近似视为太阳中心。该参考系与地球参考系的换算与观测地点、观测时间及观测目标在天球上的位置有关。

2. 程序实现

利用astropy包可以用一个函数轻松实现参考系的转换:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from astropy.time import Time
from astropy.coordinates import SkyCoord, EarthLocation

def LSR_velocity(l,b,velocity):
'''
输入参数为银经,银纬,原始视向速度。
local为观测地位置,c为利用输入坐标建立的坐标系对象。
barycorr为程序输出的地球坐标系与BSR间的修正,单位为m/s
修正后再将BSR中的速度转化为LSR中的速度。
'''
local = EarthLocation.from_geodetic(lat=22.349368*u.deg, lon=113.584068*u.deg, height=10*u.m)
c = SkyCoord(l=l*u.degree, b=b*u.degree, frame='galactic')
c_icrs = c.transform_to('icrs')
barycorr = c_icrs.radial_velocity_correction(obstime=Time('2022-1-2'), location=local)
velocity = velocity + barycorr.value/1000
print(barycorr.value/1000)
l = l * np.pi / 180
b = b * np.pi / 180
return velocity + 9 * np.cos(l) * np.cos(b) + 12 * np.sin(l) * np.cos(b) + 7 * np.sin(b)

在第一次运行时速度可能稍慢,因为radial_velocity_correction需从IERS上下载相应数据,若出现下列警告:

1
2
3
4
WARNING: failed to download http://maia.usno.navy.mil/ser7/finals2000A.all, using local IERS-B: <urlopen error [Errno 11002] getaddrinfo failed> [astropy.utils.iers.iers]
WARNING: Tried to get polar motions for times after IERS data is valid. Defaulting to polar motion from the 50-yr mean for those. This may affect precision at the 10s of arcsec level [astropy.coordinates.builtin_frames.utils]
WARNING: (some) times are outside of range covered by IERS table. Assuming UT1-UTC=0 for coordinate transformations. [astropy.coordinates.builtin_frames.utils]
WARNING: failed to download http://maia.usno.navy.mil/ser7/finals2000A.all, using local IERS-B: <urlopen error [Errno 11001] getaddrinfo failed> [astropy.utils.iers.iers]
可重新运行程序或者科学上网解决。

因为我正在上关于射电观测数据处理的课程,若有补充会立即更新(Flag)。

这篇blog是总结我与组员们在处理数据中遇到的一个小问题而成(也前前后后花了快一天时间),感谢与我一同完成银河系中性氢观测实验的组员们~(>▽<)

参考资料