人生的意义就是思考其意义分享 http://blog.sciencenet.cn/u/qianlivan 天体物理工作者,家乡云南昆明。

博文

FITS文件的投影问题

已有 6778 次阅读 2012-8-22 13:54 |个人分类:知识|系统分类:科研笔记| 投影, FITS

     之前提到过FITS文件的投影问题(http://blog.sciencenet.cn/blog-117333-360909.html),FITS头文件里会有关键词描述投影的方式。需要投影的原因在于天文观测面对的是分布在天球上的天体,而实际使用数据的时候,将数据展在平面上比较方便,这和地图是一个原理。投影的方式很多,关于地图投影,专门有书。具体到FITS文件的投影问题,也有专门的文章描述(Calabretta & Greisen, 2002, A&A, 395, 1077)。
      原本投影的问题不需要专门写下来,看书和看文章都可以,但是其实我经常遇到的只有几种,每次看文章都得重新回忆一遍,费时费力。所以在这里记一下,主要为我自己。
      FITS头文件中CTYPE1和CTYPE2的值就表示了投影的方式。最常遇到的有GLS、SIN、CAR、TAN和NCP。现在分别来说一下。以下直接给出(赤经RA,赤纬DEC)到投影坐标(x, y)转换公式。
      按照前面提到文章的说法,GLS已经被重命名为SFL了,也就是Sanson-Flamsteed投影。按照文章中的公式直接计算会有问题,实际的转换应该为
begin{equation}
y=DEC
end{equation}
begin{equation}
x=(RA-RA0)cos(DEC*pi/180)+RA0
end{equation}
其中因为参考点的赤纬为0,所以上面没有写出来。
       SIN表示的是Slant orthographic投影。上述文章我看不明白,借鉴Wolfram Mathworld中正交投影的表达式(http://mathworld.wolfram.com/OrthographicProjection.html)可以得到
begin{equation}
x=cos(DEC*pi/180)sin[(RA-RA0)*pi/180]/pi*180+RA0
end{equation}
begin{equation}
y=cos(DEC0*pi/180)sin(DEC*pi/180)/pi*180-sin(DEC0*pi/180)cos(DEC*pi/180)cos[(RA-RA0)*pi/180]/pi*180+DEC0
end{equation}
       CAR表示的是Plate carrée投影,其实就是根本不作处理,$x=RA$,$y=DEC$。
       TAN表示的是Gnomonic投影。上述文章我也看不明白,在Wolfram Mathworld(http://140.177.205.23/GnomonicProjection.html )可以找到相应的表达式。
begin{equation}
x=frac{cos(DEC*pi/180)sin[(RA-RA0)*pi/180]}{cos c}/pi*180+RA0
end{equation}
begin{equation}
y=frac{cos(DEC0*pi/180)sin(DEC*pi/180)-sin(DEC0*pi/180)cos(DEC*pi/180)cos[(RA-RA0)*pi/180]}{cos c}/pi*180+DEC0
end{equation}
其中
begin{equation}
cos c=sin(DEC0*pi/180)sin(DEC*pi/180)+cos(DEC0*pi/180)cos(DEC*pi/180)cos[(RA-RA0)*pi/180]
end{equation}
        至于NCP,其实就是SIN。
   

2013年8月5日补记:修改了TAN投影的公式,感谢许铎指出错误。


2014年3月18日补记:几个示例程序,我总感觉ad2xy那个函数不太对。
PRO projection
fitsname='t13_new.fits';default file name
head=headfits(fitsname)
extast,head,astr,noparams
print, astr,noparams
convert=!pi/180.0
convert=1.0
ra=65.0*convert
dec=23.0*convert
xr=65.0*convert
yd=23.0*convert
fxaddpar,head,'CTYPE1','RA---SFL'
fxaddpar,head,'CTYPE2','DEC--SFL'
;fxaddpar,head,'CTYPE1','RA---TAN'
;fxaddpar,head,'CTYPE2','DEC--TAN'
extast,head,astr,noparams
print, astr,noparams
xy2ad,xr,yd,astr,ra,dec
print,ra,dec
ad2xy,ra,dec,astr,xr,yd
print,xr,yd
xy2ad,xr,yd,astr,ra,dec
print,ra,dec
ad2xy,73.989677,21.798082,astr,xr,yd
print,xr,yd
END


用wcsxy2ad.pro相对人性化一点。

PRO projection2


fitsname='t13_new.fits';default file name

head=headfits(fitsname)

fxaddpar,head,'CTYPE1','RA---SFL'

fxaddpar,head,'CTYPE2','DEC--SFL'

;fxaddpar,head,'CTYPE1','RA---TAN'

;fxaddpar,head,'CTYPE2','DEC--TAN'


ctype1  =   fxpar(head,'CTYPE1');

ctype2  =   fxpar(head,'CTYPE2');


extast,head,astr,noparams

print, astr,noparams


convert=!pi/180.0

convert=1.0


ra=65.0*convert

dec=23.0*convert

xr=65.0*convert

yd=23.0*convert


extast,head,astr,noparams

print, astr,noparams


;adxy,head,ra,dec,xr,yd

;print,xr,yd

;xyad,head,xr,yd,ra,dec

;print,ra,dec

;ad2xy,ra,dec,astr,xr,yd

;print,xr,yd

;xy2ad,xr,yd,astr,ra,dec

;print,ra,dec

;ad2xy,ra,dec,astr,xr,yd

;print,xr,yd

;xy2ad,xr,yd,astr,ra,dec

;print,ra,dec


wcsxy2sph,xr,yd,ra,dec,CTYPE=[ctype1,ctype2]

print,ra,dec



END




https://blog.sciencenet.cn/blog-117333-604768.html

上一篇:旅行杂记(三)游滇西北
下一篇:IAU大会参会总结(三)恒星形成率
收藏 IP: 159.226.171.*| 热度|

1 李宇斌

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-14 01:47

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部