FITS简介
本文删节翻译自:A Primer on the FITS Data Format。
FITS (Flexible Image Transport System, 普适图像传输系统)1 是天文学上使用的一种用于存储、传输、分析的数据格式,它主要设计用来存储多维数组和表格数据。比如天文望远镜观测的数据,一般是以图像格式存储,图像就是一类多维数组。表格数据则是存储星表类数据。
FITS 文件组成
FITS文件由一个或者多个被称为HDU(Header/Data Units, 头、数据单元)的单元组成,其中第一个被称作Primary HDU(主HDU),主HDU可以包含1-999维的一个数组,数组数据的类型由头信息进行定义。典型的数据包括:2-D图像、1-D的光谱以及3-D的数据立方体。
主HDU之后还可以包含多个扩展HDU(FITS extensions),典型的扩展类型有:
- 图像扩展,可以存储0-999维的像元数据,定义与主HDU类似,它的头定义是
XTENSION = 'IMAGE'
。 - ASCII 表格扩展,主要用来存储2维的表格数据,存储的格式是以ASCII的文本格式存储。它的头定义是
XTENSION = 'TABLE'
。 - 二进制表格扩展,与ASCII表格扩展类似,主要用来存储2维表格数据,但是其存储格式是二进制。它的头定义是
XTENSION = 'BINTABLE'
。
除了上述类型外,还有一种HDU被称作Random Groups
,它主要用作射电干涉数据领域。
每个HDU都由Header Unit
和Data Unit
组成,不管是头单元还是数据单元都是由2880
的整数倍个字节组成,如果不足的话,一般会以ASCII空白或者NULL进行填充。
头单元 Header Unit
每个头单元由一系列80个字符字节固定宽度的记录组成,2880个字节恰好可以包含36条记录。每个记录的格式如下:
KEYNAME = value / comment string
KEYNAME
关键字最长为8个字符,合法字符是大写的A-Z
、0-9
、-
和_
。关键字后面一般会跟着一个等号=
(在第9列或者第10列),再之后就是关键字的值信息,值类型有:
- 数值型:整数、浮点数、复数(一对数字);
- 字符串:单引号包含;
- 布尔值:
T
或者F
。
有时候一条记录仅是注释(COMMENT
)或者历史(HISTORY
)类型信息,则不需要使用等号。
值后面一般有注释信息,注释信息以/
开始,最多到第80个字符字节处。
FITS标准里定义了53个常用的关键字,详细信息可以参见2。
每个头单元的最后一个记录的关键字都是END
,它无值和注释字段。
特别注意,在头单元里,合法的只有从0x20
-0x7E
之间的字符,非打印字符,比如TAB
和换行符等是不允许在头单元里出现的。
数据单元 Data Unit
紧跟这头信息的最后一个2880
数据块之后的就是数据单元,数据单元并不是必须的,很多情况下,一个HDU只包含头单元,而不包含数据单元。
图像数据
一般图像像元(pixel
)的数据格式有:
- 8-bit (无符号)整数(1字节长);
- 16-bit (有符号)整数(2字节长);
- 32-bit (有符号)整数(4字节长);
- 32-bit 单精度浮点数(4字节长);
- 64-bit 双精度浮点数(8字节)。
表格数据
表格数据一般在头信息里定义字段的值类型,可以参见FITS 星表的数据类型。ASCII 表格的一个字段只允许包含一个标量值。而对于 BINTABLE则是可以包含复杂的值,甚至可以定义固定长度和变长,以及显示的格式等。