【ds9 region脚本】

ds9支持把点源的region写成一个reg格式的脚本然后直接打开应用的fits文件上。
那我们可以考虑把reg文件写成我们一般的坐标形式,以及把一般的坐标形式写成reg文件给ds9读取。

【把一堆坐标写成.reg文件】

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")

【把.reg文件写成一个坐标数组】

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)

你可能感兴趣的:(python)