aim*_*aim 5 python rotator healpy
我有一个 HEALPix 地图,我已经使用healpy阅读过它,但是它是在银河坐标中,我需要它在天球/赤道坐标中。有人知道转换地图的简单方法吗?
我尝试使用healpy.Rotator从 (l,b) 转换为 (phi,theta),然后使用healpy.ang2pix对像素重新排序,但地图看起来仍然很奇怪。
如果有一个类似于Rotator您可以调用的函数,那就太好了map = AnotherRotator(map,coord=['G','C']):有人知道有这样的功能吗?
谢谢,
亚历克斯
我意识到这个问题很久以前就被问过,但本周我自己也遇到了同样的问题,并找到了你的帖子。我已经找到了一些潜在的解决方案,因此我将分享以防其他人遇到此问题并发现它有用。
解决方案 1:这取决于您的数据采用的格式。我的数据采用 (theta, phi) 网格。
import numpy as np
import healpy as H
map = <your original map>
nside = <your map resolution, mine=256>
npix = H.nside2npix(nside)
pix = N.arange(npix)
t,p = H.pix2ang(nside,pix) #theta, phi
r = H.Rotator(deg=True, rot=[<THETA ROTATION>, <PHI ROTATION>])
map_rot = np.zeros(npix)
for i in pix:
trot, prot = r(t[i],p[i])
tpix = int(trot*180./np.pi) #my data came in a theta, phi grid -- this finds its location there
ppix = int(prot*180./np.pi)
map_rot[i] = map[ppix,tpix] #this being the rright way round may need double-checking
Run Code Online (Sandbox Code Playgroud)
解决方案 2:还没有完全完成测试,但在完成上面烦人的工作后才遇到它......
map_rot = H.mollview(map,deg=True,rot=[<THETA>,<PHI>], return_projected_map=True)
Run Code Online (Sandbox Code Playgroud)
它给出了一个 2D numpy 数组。我有兴趣知道如何将其转换回healpix 地图......