如何将FITS立方体的切片写入新文件 解决TableHDU类型报错
错误原因
- 错误的HDU类型选择:
fits.TableHDU仅用于存储结构化表格数据,你提取的单通道二维图像属于数组型图像数据,应该使用fits.PrimaryHDU或fits.ImageHDU进行封装。 - 切片索引不一致:代码中提取待存储数据时使用
data[:,:,0,0],但绘图时使用data[0,0,:,:],4维射电FITS的常规维度顺序为[斯托克斯轴, 频率轴, 赤纬轴, 赤经轴],需要统一索引顺序取到你需要的层。
修复方案
替换你代码中创建HDU、写入文件的部分即可,同时建议同步更新头文件维度信息,保证新FITS文件的WCS信息可用:
# 统一取第0个斯托克斯、第0个频率通道的二维图像 newdata = data[0,0,:,:] # 裁剪得到二维天体坐标对应的WCS头 hdr_slice = wcs.celestial.to_header() # 用图像类HDU封装数据 hdu = fits.PrimaryHDU(data=newdata, header=hdr_slice) # 写入文件,overwrite=True参数可避免同名文件存在时报错 hdu.writeto('/home/natasha/Documents/J1601test.fits', overwrite=True)
如果不需要保留WCS信息,也可以简化为:
newdata = data[0,0,:,:] hdu = fits.PrimaryHDU(data=newdata) hdu.writeto('/home/natasha/Documents/J1601test.fits', overwrite=True)
内容的提问来源于stack exchange,提问作者Natasha
相关产品推荐
相关产品推荐

