以前说过IDL读FITS文件非常简单,就是用mrdfits一句话的事。说这句话的时候刚开始接触IDL和FITS文件,而那时的fits文件都是从合作者那里得来的非常标准的FITS文件,只需要用mrdfits的默认参数就可以读出来了。但其实FITS文件是有多种形式的,而且有些早期的FITS格式并不符合现在通用的FITS标准。
FITS的全称是Flexible Image Transport System,它是一种天文学中常用的数字存储格式。由于用作科学,FITS文件不仅包含图像、光谱或者星表等数据,在头文件里还存储了和观测、定标有关的一些信息。这个头文件是直接可读的ASCII格式,每行80个字符。
对于标准FITS而言,通常存储的格式有两种——图像和表。图像有可能是二维的图像,或者是若干张不同颜色的二维图像(也就是三维图像)。表通常就是二进制表。对于存储图像的FITS文件,通常简单使用mrdfits就可以将数据读出
a=mrdfits('name.FITS')
而对于二进制表,数据可能不存储在默认位置(通常在扩展的位置),一般可以用一个不同的参数读出,例如
b=mrdfits('name.FITS',1)
这时得到的b和从图像中读出的a不太一样,a是一个数组,而这里的b是一个结构体,或者结构体数组,可以通过
help,b,/str
查看b的情况。如果b是一个结构体,那么可以通过类似
c=b.para
的操作得到b中名为para的变量的值。
如果b是一个结构体数组,就需要用类似
c=b[0].para
的操作得到b中第一个元素中名为para的变量的值。
以上叙述对标准FITS文件成立。天文里有一些其它的FITS格式,主要是一些偏远地区的天文机构在早期定义的。比如ATNF的RPFITS格式(
http://www.atnf.csiro.au/computing/software/rpfits.html),对于这些非标准的FITS格式,为了能用IDL读取,最好的办法就是用这些天文机构提供的软件将这些格式的文件转换为标准FITS(对于RPFITS,可以用livedata包里的rp2fits进行转换),然后再用mrdfits进行读取。
后记:到目前为止(2011年8月25日)我只碰到了RPFITS这种非标准的FITS格式。
https://blog.sciencenet.cn/blog-117333-479347.html
上一篇:
关于儿童性教育的一点看法下一篇:
用DEXTER从图中读数据