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)
Другие вопросы по тегам