0

我正在尝试编写一个脚本,该脚本不仅可以读取 FITS 文件,而且可以打印并将数据保存到表中。到目前为止,我的代码读取文件似乎没有问题;打印它们似乎是问题所在。到目前为止,这是我的代码(当我运行此代码时,我收到错误消息“找不到此格式的有效行”:

;Planck File read (used to read in and print individual fits files)
pro planck_file_read

readcol,'COM_PCCS_857_R1.20.fits',name,glon,glat,ra,dec,detflux,detflux_err,aperflux,aperflux_err,psfflux,psfflux_err,gauflux,gauflux_err,gau_semi1,gau_semi1_err,gau_semi2,gau_semi2_err,gau_theta,gau_theta_err,gau_fwhm_eff,extended,cirrus_n,ext_val,ercsc

openw,lun,'fits_857.tbl',/get_lun,width=400
printf,lun,'; ;    name                    GLON            GLAT             RA              DEC         DETFLUX    DETFLUXERR    APERFLUX   APERFLUXERR     PSFFLUX    PSFFLUXERR     GAUFLUX    GAUFLUXERR    GAUSEMI1   GAUSEMI1ERR    GAUSEMI2   GAUSEMI2ERR    GAUTHETA   GAUTHETAERR  GAUFWHMEFF  EXTENDED  CIRRUSN  EXTVAL  ERCSC
printf,lun,'; ;                            DEG             DEG              DEG             DEG           MJY          MJY          MJY          MJY          MJY          MJY          MJY          MJY        ARCMIN       ARCMIN       ARCMIN       ARCMIN         DEG         DEG        ARCMIN      NONE      NONE    NONE    NONE
for i=0,n_elements(fits_name)-1 do printf,lun,name[i],glon[i],glat[i],ra[i],dec[i],detflux[i],detflux_err[i],aperflux[i],aperflux_err[i],psfflux[i],psfflux_err[i],gauflux[i],gauflux_err[i],gau_semi1[i],gau_semi1_err[i],gau_semi2[i],gau_semi2_err[i],gau_theta[i],gau_theta_err[i],gau_fwhm_eff[i],extended[i],cirrus_n[i],ext_val[i],ercsc[i]
free_lun,lun

end
4

2 回答 2

1

该错误消息来自READCOL. READCOL旨在读取 ASCII 文件,而不是 FITS 文件。使用 、 和 等 FITS 例程FITS_OPENFITS_READ读取FITS_CLOSE数据。

于 2015-06-23T22:57:49.843 回答
0

READCOL 旨在将带有数据列的自由格式 ASCII 文件读入向量。您必须向它提供数据文件中的确切列数才能正确读取文件。例如,如果我写

READCOL, 'file.txt', name, date, ID, num_cookies 

并且该文件实际上还有另一列蛋糕数量,它不会读取任何内容,因为它会查找只有 4 个变量的行。如果在对 READCOL 的调用中包含 FORMAT 字符串,则可以跳过不需要的变量,例如

READCOL, 'file.txt', name, date, ID, num_cookies, FORMAT = '(A,F,F,I,X)' 

其中“X”表示您正在跳过一个变量。

但是,如果您的文件是 fit 文件,则它的格式可能不同,您应该按照上面的@mgalloy 建议查看 FITS 例程。

于 2015-06-25T15:42:05.787 回答