FITS (Flexible Image Transport System) 是国际天文学会(IAU)1982 年确定的世界各天文台之间用于数据传输、交换的统一标准格式。它描述了数据的定义和数据编码的一般方法。它是与机器无关的,用磁带作为标准传输介质的独立方法。它提供了图象的单值转换,精度包括符号在内可以达到 32 位。对一维、二维、三维、甚至多维的数据类型都提供了合适的转换。它不仅适用于天文数据, 对其他学科的数据也是可用的。
下图是FITS的基本格式:
下面的实例程序是要求用户输入待分析的fits文件,然后将fits文件分成2880byte的块,然后写入filenam.out的文件,这样就可以全局分析这个fits的文件了。
#!/usr/bin/python
#author yxy
import os
from os.path import getsize
filename= raw_input('Please input you fits file name: ')
filesize = int(getsize(filename))
blockNum = filesize/2880
try:
fin = open(filename, 'r')
fout = open(filename + '.out', 'w')
except IOError, e:
print 'could not open file:', e
for i in range(blockNum):
line = fin.read(2880)
fout.write('\n' * 5)
fout.write(str(i) * 10)
fout.write('\n' * 5)
j=0
for i in range(36):
fout.write(line[j:j+80])
fout.write('\n')
j +=80
fout.close()
基本fits的文件格式大体上如上图所示,但是还有一个关键点是文件头中36行标题的格式。文件头中必须存在的五个关键词是:
SIMPLE,BITPIX,NAXIS,NAXISn 和 END。它们的含义是:
SIMPLE 逻辑变量,指明文件是否符合基本 FITS 标准。
BITPIX 整数变量,指明用于表示每一个象元值的位数。
NAXIS 整数变量,指明图象里坐标轴数。
NAXIS1 整数变量,指明在数组内沿最快变化轴的象元数。
NAXIS2 整数变量,指明在数组内沿次快变化轴的象元数。
下面是一个例子:
SIMPLE = T
BITPIX = 16
NAXIS = 2
NAXIS1 = 320
NAXIS2 = 512
END
SIMPLE=T 其中逻辑值 T(True)表明该磁带文件是简单的 FITS 数据文件。BITPIX=16 表明每一象元值为16 位带符号的补码形式,每一象元值占用两个字节, 每一记录可记 1440 个象元值(23040÷16= 1440)。NAXIS=2 表明图象为两维阵列NAXIS1=320 表明第一轴 (列变化方向)的长度为 320 个象元。NAXIS2=512 表明第二轴(行变化方向)的长度为 512行。END表明标题结束。记录后面的所有零字节都用 ASCII 码空格填满。 这五个关键次的顺序必须如上所示。不能颠倒。
除了这五个必须的关键次还有一些其他的关键词:
——BSCALE(浮点数)和 BZERO(浮点数):用于将磁带上的象元值转换为真实值的参数:真实值= ( 磁带值×BSCALE)+BZERO
——BUNIT(字符):单位
——BLANK (整数), 如果某象元未定义值, 则磁带上该象元对应位置上所写入的就是由 BLANK 定义的数值。
——OBJECT (字符): 图象名
——DATE (字符): 写 FITS 文件的日期(‘日/月/年’)。
——DATE_OBS (字符): 数据的观测日期(‘日/月/年’)。
——ORIGIN (字符): 写磁带的研究单位。
——INSTRUME (字符): 数据的探测仪器。
——TELESCOP (字符): 所使用的望远镜。
——OBSERVER (字符):观测者姓名。
——CRVALn (浮点数), CRPIXn(浮点数), CDELTn(浮点数), CTYPEn(字符)和 CROTAn(浮点数):这些关键词是用于定义第 n个轴的象元坐标与真实的物理坐标之间的关系。
——DATAMAX(浮点数)和 DATAMIN(浮点数): 给出文件中数据的最大值和最小值。
——EPOCH(浮点数): 坐标系统的历元(以年为单位)。
——空白(无)、COMMENT(无)和 HISTORY(无): 用于说明其它一些信息表明第 9-80 列是注释用的 ASCII 文本。
注意, 图象阵中象元的二进制数据是高位在前, 低位在后。
参考文献:
http://www.cnblogs.com/tyjsjl/p/3952823.html