Healpy pix2ang: конвертировать из индекса HEALPix в RA,Dec или glong,glat
Я новичок в HEALPix и довольно плохо знаком с Python. Я пытаюсь использовать healpy для преобразования индекса HEALPix в RA, дек. Я получаю, что я должен использовать pix2ang, но не могу понять, как преобразовать выходные тэта, фи в 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)
но, похоже, это не дает правильного результата.
Надеюсь, кто-то может помочь!
2 ответа
Прежде всего метод pix2ang(nside,indx)
дает вам координаты пикселя с номером indx. Номер пикселя не имеет прямого отношения к координате, то есть два последовательных номера пикселя не обязательно находятся рядом друг с другом.
Во-вторых, как написано в руководстве к Healpix (который является основным кодом для healpy) ( http://healpix.sourceforge.net/html/csubnode2.htm), угол тета определен в диапазоне [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, но если вы будете использовать IndexToDeclRa
а также DeclRaToIndex
вы получите то, что вам нужно.
Вы можете увидеть пример ниже отсюда .
ipix = 123
theta, phi = hp.pix2ang(nside, ipix)
ra = np.rad2deg(phi)
dec = np.rad2deg(0.5 * np.pi - theta)