У меня есть двумерный массив numpy 'ZEA_N_sky', изначально созданный как
n=128
ZEA_N_sky=np.zeros((n,n))
а позже были присвоены значения каждому пикселю этого массива. Я могу построить этот массив как изображение FITS (которое можно открыть с помощью ds9), используя следующий код, однако я также хочу видеть координаты WCS. То есть, когда я наведу курсор мыши на изображение, я смогу увидеть галлон, галлон; Right-Asc, Dec и т. Д. Как я могу этого добиться? Мне нужно делать это вручную или есть какой-то трюк с header ()?
Документация, предоставленная с использованием пакета WCS и all_pix2world (), похоже, не работает (скорее, я этого не понимаю). Если кто-нибудь может мне помочь с кодом? Спасибо !
from astropy.io import fits
import numpy as np
from astropy import wcs
from astropy.table import Table
out_file_name = 'FITS_image.fits'
hdr = fits.Header()
hdr['Projection'] = "ZEA"
hdr['nd_size'] = str(nd_size)
hdr['SCALE']="nd_size/2"
fits.writeto(out_file_name, ZEA_N_sky, hdr,clobber=True)
Я добился некоторого прогресса. Это тот фрагмент кода, который я использую прямо сейчас, с помощью которого я получаю параметры WCS, но значение долготы, которое я получаю на моем изображении FITS, неверно! Я думаю, что ошибаюсь в значениях параметров проекции ZEA.
NSGP=1 #Parameter for North side projection, -1 for south side
w = wcs.WCS(naxis=2)
w.wcs.crpix = [SCALE,SCALE] # SCALE is half the value of my pixel range in the image. n/2=128/2=64
w.wcs.cdelt = np.array([-NSGP*90.0/float(SCALE) * 0.90032, NSGP*90.0/float(SCALE) * 0.90032]) # increments in degrees per pixel
w.wcs.crval = [NSGP*90.0, NSGP*90.0] #RA and dec values in hours and degrees
w.wcs.ctype = ["GLON-ZEA", "GLAT-ZEA"]
#w.wcs.set_pv([(180, NSGP, float(SCALE))])
out_file_name = 'N_Mateu_ZEA_stream_mask.fits'
# Now, write out the WCS object as a FITS header
header = w.to_header()
hdu = fits.PrimaryHDU(ZEA_N_sky,header=header)
hdu.writeto(out_file_name, clobber=True)