Сохранять координаты WCS при нарезке изображения RGB Fits

У меня есть коллекция изображений RGB Fits, и я хочу построить синюю рамку с WCS по осям. Я вырезал изображение, чтобы получить синий цвет, используя:

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

image1 = fits.open('fits_file.fits')
data1 = image1[0].data
image1_slice_blue = data1[2,:,:]

Когда я рисую это, оси соответствуют количеству пикселей, а не координатам WCS. Я попытался взять информацию WCS из файла, используя:

wcs1 = WCS(image1[0].header)

но у меня проблема, потому что NAXIS = 3 (ширина, высота и плоскости изображения), но WCSAXES = 2 (RA и Dec). Ошибка говорит о том, что в основных ключевых словах WCS были обнаружены 3 измерения, и предлагает мне выбрать / уменьшить размеры с помощью naxis kwarg. Я запустил это снова, но с:

wcs1 = WCS(image1[0].header, naxis=2)

Но это тоже не работает, потому что CTYPE3 не найден. Может ли кто-нибудь помочь мне решить эту проблему? Спасибо

Это изображение, которое я пытался разделить: http://nova.astrometry.net/user_images/2677994#annotated

Я не могу поделиться фактическим файлом, но это файл "new-image.fits" на RHS.


person Pip    schedule 21.02.2019    source источник
comment
Не могли бы вы предоставить файл? Так будет легче помочь :)   -  person zabop    schedule 22.02.2019
comment
@zabop Я поместил ссылку на подходящее изображение в тексте. Проблема связана с wcs = WCS (hdu1.header), и я не могу решить эту проблему. Спасибо!   -  person Pip    schedule 22.02.2019


Ответы (1)


У меня такая же проблема, и я обнаружил ошибку с астропией, https://github.com/astropy/astropy/issues/10527

Вот мой обходной путь для работы с datacubes

import urllib.request
from io import BytesIO
from astropy.io import fits
from astropy.wcs import WCS

# download image into memory
url = 'https://sha.ipac.caltech.edu/applications/Spitzer/SHA/servlet/ProductDownload?DATASET=level1&ID=382262290'
response = urllib.request.urlopen(url)
hdulist = fits.open(BytesIO(response.read()))

# reproduce bug
try:
    wcs = WCS(hdulist[0].header)
except ValueError:
    hdulist[0].header['NAXIS'] = 2
    wcs = WCS(hdulist[0].header)
person Kyle Pearson    schedule 05.07.2020