将 astropy 中的 header 从一个 FITS 文件复制到新创建的 FITS 文件
Copying header in astropy from one FITS file to a newly created FITS file
我有一个程序可以处理现有的 FITS 文件 (xbulge-w1.fits
),并将处理后的图像保存到新的 FITS (w1_resampled.fits
)。我想将 header 从原来的复制到新的,以便它们处于相同的坐标(即银河系)。
我正在尝试使用以下代码来做到这一点:
# Open the FITS files as input image and mask
# Process the images
# Rescale image to galactic coordinates and display
# Plot and save median filtered images as png, rescaled to galactic coordinates
# Save as FITS files and close
# Edit FITS headers to recenter images at galactic center
header = fits.getdata('xbulge-w1.fits', header=True)
header['COMMENT'] = 'Resampled with median filtered pixels'
header['IMAGEW'] = 877
header['IMAGEH'] = 901
header['WCSAXES'] = (2, 'Number of coordinate axes')
header['CRPIX1'] = 438.5
header['CRPIX2'] = 450.5
header['PC1_1'] = (-0.0333333333333, 'Coordinate transformation matrix element')
header['PC2_2'] = (0.0333333333333, 'Coordinate transformation matrix element')
header['CDELT1'] = (1., '[deg] Coordinate increment at reference point')
header['CDELT2'] = (1., '[deg] Coordinate increment at reference point')
header['CUNIT1'] = ('deg ', 'Units of coordinate increment and value')
header['CUNIT2'] = ('deg ', 'Units of coordinate increment and value')
header['CTYPE1'] = 'GLON-AIT'
header['CTYPE2'] = 'GLAT-AIT'
header['CRVAL1'] = (0., '[deg] Coordinate value at reference point')
header['CRVAL2'] = (0., '[deg] Coordinate value at reference point')
header['LONPOLE'] = (0., '[deg] Native longitude of celestial pole')
header['LATPOLE'] = (90., '[deg] Native latitude of celestial pole')
header['RADESYS'] = ('ICRS ', 'Equatorial coordinate system')
fits.writeto('w1_resampled.fits', header, overwrite=True)
fits.writeto('w2_resampled.fits', header, overwrite=True)
hdulist.close()
hdulist2.close()
hdulist3.close()
前 5 条评论列出了程序中的工作功能,这只是 header 我有困难的地方。当我在 DS9 中打开 w1_resampled.fits
时, header 包含
SIMPLE = T / conforms to FITS standard
BITPIX = -32 / array data type
NAXIS = 2 / number of array dimensions
NAXIS1 = 877
NAXIS2 = 901
EXTEND = T
END
而不是从xbulge-w1.fits
header复制的数据。
如何将数据从一个 header 复制到另一个?
哦,我明白了。我把它复杂化了。这是我需要做的所有事情:
# Edit FITS headers to recenter images at galactic center
w1_resampled_header = w1header
w2_resampled_header = w2header
w1_resampled_header['CRPIX1'] = w1header['CRPIX1']
w1_resampled_header['CRPIX2'] = w1header['CRPIX2']
w2_resampled_header['CRPIX1'] = w2header['CRPIX1']
w2_resampled_header['CRPIX2'] = w2header['CRPIX2']
# Save as FITS files and close
fits.writeto('w1_resampled.fits',
w1_resampled,
w1_resampled_header,
overwrite = True)
fits.writeto('w2_resampled.fits',
w2_resampled,
w2_resampled_header,
overwrite = True)
我有一个程序可以处理现有的 FITS 文件 (xbulge-w1.fits
),并将处理后的图像保存到新的 FITS (w1_resampled.fits
)。我想将 header 从原来的复制到新的,以便它们处于相同的坐标(即银河系)。
我正在尝试使用以下代码来做到这一点:
# Open the FITS files as input image and mask
# Process the images
# Rescale image to galactic coordinates and display
# Plot and save median filtered images as png, rescaled to galactic coordinates
# Save as FITS files and close
# Edit FITS headers to recenter images at galactic center
header = fits.getdata('xbulge-w1.fits', header=True)
header['COMMENT'] = 'Resampled with median filtered pixels'
header['IMAGEW'] = 877
header['IMAGEH'] = 901
header['WCSAXES'] = (2, 'Number of coordinate axes')
header['CRPIX1'] = 438.5
header['CRPIX2'] = 450.5
header['PC1_1'] = (-0.0333333333333, 'Coordinate transformation matrix element')
header['PC2_2'] = (0.0333333333333, 'Coordinate transformation matrix element')
header['CDELT1'] = (1., '[deg] Coordinate increment at reference point')
header['CDELT2'] = (1., '[deg] Coordinate increment at reference point')
header['CUNIT1'] = ('deg ', 'Units of coordinate increment and value')
header['CUNIT2'] = ('deg ', 'Units of coordinate increment and value')
header['CTYPE1'] = 'GLON-AIT'
header['CTYPE2'] = 'GLAT-AIT'
header['CRVAL1'] = (0., '[deg] Coordinate value at reference point')
header['CRVAL2'] = (0., '[deg] Coordinate value at reference point')
header['LONPOLE'] = (0., '[deg] Native longitude of celestial pole')
header['LATPOLE'] = (90., '[deg] Native latitude of celestial pole')
header['RADESYS'] = ('ICRS ', 'Equatorial coordinate system')
fits.writeto('w1_resampled.fits', header, overwrite=True)
fits.writeto('w2_resampled.fits', header, overwrite=True)
hdulist.close()
hdulist2.close()
hdulist3.close()
前 5 条评论列出了程序中的工作功能,这只是 header 我有困难的地方。当我在 DS9 中打开 w1_resampled.fits
时, header 包含
SIMPLE = T / conforms to FITS standard
BITPIX = -32 / array data type
NAXIS = 2 / number of array dimensions
NAXIS1 = 877
NAXIS2 = 901
EXTEND = T
END
而不是从xbulge-w1.fits
header复制的数据。
如何将数据从一个 header 复制到另一个?
哦,我明白了。我把它复杂化了。这是我需要做的所有事情:
# Edit FITS headers to recenter images at galactic center
w1_resampled_header = w1header
w2_resampled_header = w2header
w1_resampled_header['CRPIX1'] = w1header['CRPIX1']
w1_resampled_header['CRPIX2'] = w1header['CRPIX2']
w2_resampled_header['CRPIX1'] = w2header['CRPIX1']
w2_resampled_header['CRPIX2'] = w2header['CRPIX2']
# Save as FITS files and close
fits.writeto('w1_resampled.fits',
w1_resampled,
w1_resampled_header,
overwrite = True)
fits.writeto('w2_resampled.fits',
w2_resampled,
w2_resampled_header,
overwrite = True)