ds9支持把点源的region写成一个reg格式的脚本然后直接打开应用的fits文件上。
那我们可以考虑把reg文件写成我们一般的坐标形式,以及把一般的坐标形式写成reg文件给ds9读取。
from regions import Regions
from astropy.coordinates import SkyCoord
from astropy import units as u
file_hdr = ['# Region file format: DS9 version 4.1\n'+'global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1\n'+'fk5']
#这个是前面的几行文件说明,其实没有应该也没啥问题。因为后面的才决定参数
with open("/home/kin/FAST/M31_py/analysis/ds9_RM_table_source.reg", "w") as file:
#选择你需要需要保存reg文件的地址
file.write("") #每次开始制作reg文件时候先清空
for line in range(37): #这个说明有37行内容
if line ==0:
file.write(file_hdr[0] + "\n")
else:
c = SkyCoord(ra=RM_table_array_catalog[line-1][0]*u.deg, dec=RM_table_array_catalog[line-1][1]*u.deg).to_string('hmsdms')
#RM_table_array_catalog这个是一个数组,第一列是ra,第二列是dec,每一行是一个坐标,当然你可以以度数作为单位。
ra_dec = c.replace('0h',':').replace('m',':').replace('s',',').replace('d',':').replace('m',':').replace(' +','+')
print(ra_dec)
text = 'circle(%s250") # color=red' %ra_dec
#在这里设置你的region的大小,你也可以设置成其他形状。这里是圆形
print(text)
#text = circle(0:38:24.1420,+41:36:17.473,244.273") # color=red
#最终的格式应该参考这个text这样,然后逐行写入即可
file.write(text + "\n")
from astropy.coordinates import Angle
reg = Regions.read('/home/kin/FAST/M31_py/analysis/ds9_FAST_RM_source.reg', format='ds9')
#reg点源文件地址
#for i in range(len(reg)):
for i in range(len(reg)):
angle_str = reg[i].center.ra
angle = Angle(angle_str, unit="deg")
ra = round(angle.degree, 3)
angle_str = reg[i].center.dec
angle = Angle(angle_str, unit="deg")
dec = round(angle.degree, 3)