基本上我想要的只是 hp.cartview 的功能,但我不希望我的机器每次调用 cartview 函数时都浪费内存来绘制实际 map 。如何在healpy中以二维数组的形式获得笛卡尔投影,而不必每次都绘制投影?
最佳答案
首先,我要指出reproject可能是完成这项工作的更好工具。
您可以构建一个 WCS对象或 FITS 标题,然后将 HEALPix map 重新投影到其上,然后使用 wcsaxes 进行绘制。 ,它为您提供对真实世界坐标像素的完全支持(而不仅仅是像素坐标)。
如果您确实想对这些cartview
切口使用healpy,则可以使用底层healpy.projector.CartesianProj
类:
from functools import partial
import healpy as hp
import numpy as np
import matplotlib.pyplot as plt
# Build a map
nside = 64
npix = hp.nside2npix(nside)
hpxmap = np.arange(npix)
# Get the cutout via a cartesian projection
lonra = [30, 40]
latra = [-10, 10]
proj = hp.projector.CartesianProj(
lonra=lonra, latra=latra,
coord='G',
xsize=n_pixels, ysize=n_pixels)
reproj_im = proj.projmap(hpxmap, vec2pix_func=partial(hp.vec2pix, nside))
# Plot the cutout
plt.imshow(reproj_im, origin='lower', interpolation='nearest')
祝你好运,如果您有任何后续问题,请告诉我!
关于astronomy - 如何将healpy区域变成二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57619206/