我一直在寻找解决这个问题的办法,但什么也没找到。在
我通过matplotlib生成矩形拟合图像,然后使用AstroPy(或PyFITS)对它们应用WCS坐标。我的图像是在银河经纬度上的,所以适合我地图的标题关键字应该是GLON-CAR
和{
但当我生成地图时,坐标不是笛卡尔坐标。下面是我的地图(左)和另一个大致相同地区的参考地图(右)的并排比较。两者都列在FITS标题中的GLON-CAR
和GLAT-CAR
,但我的在SAO DS9中查看时有点混乱(请注意,坐标网格是SAO DS9根据FITS标题中的数据生成的,或者至少存储在FITS文件中的某个地方):
这是有问题的,因为如果投影错误,坐标分配算法将为每个像素分配不正确的坐标。在
有没有人遇到过这种情况,或者知道问题出在哪里?在
我尝试过应用其他预测(只是想看看它们在SAO DS9中的表现),结果很好。。。但是我的笛卡尔投影和墨卡托投影并没有像他们应该的那样得到正交网格。在
我不敢相信这会是一个太空虫,但我找不到任何其他原因。。。除非我在头中的参数格式不正确,但我仍然不明白这是如何导致我遇到的问题。或者你会推荐其他的吗?(我看过matplotlib basemap,但是在我的计算机上使用它时遇到了一些困难)。在
我的标题代码如下:
from __future__ import division
import numpy as np
from astropy.io import fits as pyfits # or use 'import pyfits, same thing'
#(lots of code in between: defining variables and simple calculations...
#probably not relevant)
header['BSCALE'] = (1.00000, 'REAL = TAPE*BSCALE + BZERO')
header['BZERO'] = (0.0)
header['BUNIT'] = ('mag ', 'UNIT OF INTENSITY')
header['BLANK'] = (-100.00, 'BLANK VALUE')
header['CRVAL1'] = (glon_center, 'REF VALUE POINT DEGR') #FIRST COORDINATE OF THE CENTER
header['CRPIX1'] = (center_x+0.5, 'REF POINT PIXEL LOCATION') ## REFERENCE X PIXEL
header['CTYPE1'] = ('GLON-CAR', 'COORD TYPE : VALUE IS DEGR')
header['CDELT1'] = (-glon_length/x_length, 'COORD VALUE INCREMENT WITH COUNT DGR') ### degrees per pixel
header['CROTA1'] = (0, 'CCW ROTATION in DGR')
header['CRVAL2'] = (glat_center, 'REF VALUE POINT DEGR') #Y COORDINATE OF THE CENTER
header['CRPIX2'] = (center_y+0.5, 'REF POINT PIXEL LOCATION') #Y REFERENCE PIXEL
header['CTYPE2'] = ('GLAT-CAR', 'COORD TYPE: VALUE IS DEGR') # WAS CAR OR TAN
header['CDELT2'] = (glat_length/y_length, 'COORD VALUE INCREMENT WITH COUNT DGR') #degrees per pixel
header['CROTA2'] = (rotation, 'CCW ROTATION IN DEGR') #NEGATIVE ROTATES CCW around origin (bottom left).
header['DATAMIN'] = (data_min, 'Minimum data value in the file')
header['DATAMAX'] = (data_max, 'Maximum data value in the file')
header['TELESCOP'] = ("Produced from 2MASS")
pyfits.update(filename, map_data, header)
谢谢你能提供的任何帮助。在
在}使{}为零来解决这个问题。这有帮助吗?在
-CAR
投影的现代定义中,GLON-CAR
/GLAT-CAR
投影仅在CRVAL2
设置为零时产生一个直线网格。如果CRVAL2
不为零,那么网格是弯曲的(这应该与Astropy无关)。您可以尝试通过调整CRVAL2
和{为了澄清我的意思,在上面的代码之后,在写出文件之前,请尝试:
有什么运气吗?在
如果您查看所查看的“reference”文件的头,您将看到
CRVAL2
在那里为零。为了清楚起见,当CRVAL2
为非零时,没有任何问题,但是网格不再是直线的。在相关问题 更多 >
编程相关推荐