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ます。READCOLFITS ファイルではなく、ASCII ファイルを読み取るように設計されています。FITS_OPENFITS_READ、 などのFITS ルーチンを使用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」は、スキップする変数があることを示します。

ただし、ファイルがfitsファイルの場合、おそらくフォーマットが異なるため、@mgalloyが上記で提案したようにFITSルーチンを調べる必要があります。

于 2015-06-25T15:42:05.787 に答える