1

我是 HEALPIx 的新手,对 Python 也很陌生。我尝试使用 healpy 将 HEALPix 索引转换为 RA,Dec。我知道我必须使用 pix2ang,但不知道如何将输出 theta,phi 转换为 RA,Dec ......我试过这个:

import healpy as hp
import numpy as np
theta, phi = hp.pix2ang(256, 632668    ,nest=True) 
ra= phi*180./np.pi
dec = 90.-(theta*180./np.pi)

但它似乎没有给出正确的结果。

希望有人能帮忙!

4

2 回答 2

3

首先,该方法pix2ang(nside,indx)为您提供编号为 indx 的像素坐标。像素编号与坐标没有直接关系,即两个连续的像素编号不一定彼此相邻。

其次,正如 Healpix 手册中所写(这是 healpy 的底层代码)(http://healpix.sourceforge.net/html/csubnode2.htm),角度 theta 定义在 [0,pi] 范围内,因此它不能直接表示偏角 [-pi/2,pi/2]。

所以我要做的是定义一个转换并在两个函数中实现它,例如:

def IndexToDeclRa(index):
    theta,phi=hp.pixelfunc.pix2ang(NSIDE,index)
    return -np.degrees(theta-pi/2.),np.degrees(pi*2.-phi)

def DeclRaToIndex(decl,RA):
    return hp.pixelfunc.ang2pix(NSIDE,np.radians(-decl+90.),np.radians(360.-RA))

那么地图本身不会在 Decl&RA 中,但如果你坚持使用IndexToDeclRaDeclRaToIndex你将有效地拥有你需要的东西。

于 2015-04-29T12:35:52.457 回答
1

您可以从此处查看下面的示例。

ipix = 123
theta, phi = hp.pix2ang(nside, ipix)
ra = np.rad2deg(phi)
dec = np.rad2deg(0.5 * np.pi - theta)
于 2021-06-08T16:09:31.257 回答