python - 天体 WCS : "IOError: Header missing END card."

标签 python python-2.7 astropy

我正在尝试使用 astropy 将 WCS 转换为像素,但是当我尝试读取图像时:

from astropy import wcs

w = wcs.WCS('image_file.fits')

我收到以下异常:

*WARNING: Unexpected extra padding at the end of the file.  This padding may not be preserved when saving changes. [astropy.io.fits.header]
Traceback (most recent call last):
  File "make_stamps.py", line 29, in <module>
    w = wcs.WCS(image_file)
  File "/Users/anaconda/lib/python2.7/site-packages/astropy/wcs/wcs.py", line 385, in __init__
    fobj = fits.open(header)
  Fhttp://stackoverflow.com/posts/41513868/editile "/Users/anaconda/lib/python2.7/site-packages/astropy/io/fits/hdu/hdulist.py", line 139, in fitsopen
    return HDUList.fromfile(name, mode, memmap, save_backup, cache, **kwargs)
  File "/Users/anaconda/lib/python2.7/site-packages/astropy/io/fits/hdu/hdulist.py", line 281, in fromfile
    save_backup=save_backup, cache=cache, **kwargs)
  File "/Users/anaconda/lib/python2.7/site-packages/astropy/io/fits/hdu/hdulist.py", line 839, in _readfrom
    hdu = _BaseHDU.readfrom(ffo, **kwargs)
  File "/Users/anaconda/lib/python2.7/site-packages/astropy/io/fits/hdu/base.py", line 423, in readfrom
    **kwargs)
  File "/Users/anaconda/lib/python2.7/site-packages/astropy/io/fits/hdu/base.py", line 483, in _readfrom_internal
    header = Header.fromfile(data, endcard=not ignore_missing_end)
  File "/Users/anaconda/lib/python2.7/site-packages/astropy/io/fits/header.py", line 451, in fromfile
    padding)[2]
  File "/Users/anaconda/lib/python2.7/site-packages/astropy/io/fits/header.py", line 520, in _from_blocks
    raise IOError('Header missing END card.')
IOError: Header missing END card.*

我之前在使用fits.open()时遇到了这个错误但可以通过添加“ignore_missing_end=True”来解决问题。但是,“ignore_missing_end”似乎不是 wcs 类的参数。如何使用astropy.wcs.wcs读取图像?

最佳答案

那个astropy.wcs.WCS可以采用文件名只是一个方便的选项,因此您无法传递 astropy.io.fits.open 的(所有)参数也就不足为奇了。也接受此功能。

但是,使用 astropy.io.fits.Header 创建 WCS 非常容易。 。因此,您可以打开该文件,提取相关 header 并自行创建 WCS:

from astropy.io import fits
from astropy.wcs import WCS

with fits.open('your_file.fits', mode='readonly', ignore_missing_end=True) as fitsfile:
    # if you want the first extension, otherwise change the [0].
    wcs = WCS(fitsfile[0].header)  
# Now you can use your WCS, for example:
print(wcs)

关于python - 天体 WCS : "IOError: Header missing END card.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41513868/

相关文章:

Python:使用 markit ondemand api 将 JSON 参数正确格式化为正确的 http 请求

Python 2.7 嵌套的 If 语句在打印数组位置后不会打印字符串文字

python - 无法使用 sqlalchemy 查询 json 列

python - 高效地将 Astropy SkyCoord 数组导出到数组/DataFrame/文件

python - 上传形状奇怪的合身图像

python - 计算所有部门列的累计和

python - 使用Python Shopify模块访问 'HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT'

python - 如何设置 Tkinter 对话框弹出窗口的位置?

python-2.7 - 使用文本编辑器打开 MP3 文件

python - 子图投影覆盖tick_params