首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FITS图像中包含WCS坐标

在FITS图像中包含WCS坐标
EN

Stack Overflow用户
提问于 2018-04-17 15:25:20
回答 1查看 1.8K关注 0票数 0

我有一个2D numpy数组'ZEA_N_sky‘,最初创建为

代码语言:javascript
复制
n=128
ZEA_N_sky=np.zeros((n,n))

后来,给这个数组的每个像素分配了一些值。我可以用下面的代码将这个数组绘制成适合的图像(可以由ds9打开),但是我也希望看到WCS坐标。也就是说,当我将鼠标光标滚动到图像上时,我应该能够看到“女孩长”,“嘎拉”,“右Asc”,“十二月”等等。我如何做到这一点?我是否需要手动完成,还是有一些头()技巧?

使用WCS包和使用all_pix2world()提供的文档似乎不起作用(相反,我似乎不理解它)。如果有人能帮我处理密码的话?谢谢!

代码语言:javascript
复制
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投影参数值上犯了错误。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2018-04-17 16:14:25

尝试为您的图像创建一个具有正确WCS参数的WCS对象,然后调用header = wcs.to_header,并将图像数据和头存储在FITS文件中。参见示例这里

通常您不会自己创建WCS或headers,而是从FITS文件中读取。在这种情况下,您可以通过wcs = WCS(header)从FITS头创建一个WCS对象。参见示例这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49882030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档