如何将健康区域变成二维数组?

How to turn healpy region into 2d array?

基本上我想要的只是 hp.cartview 的功能,但我不希望我的机器每次调用 cartview 函数时都浪费内存来绘制实际地图。如何在 healpy 中以二维数组 的形式获得笛卡尔投影,而不必每次都绘制投影?

首先,让我指出 reproject 可能是完成这项工作的更好工具。

您可以构建一个 WCS object or a FITS header and then reproject your HEALPix map onto that, and subsequently plot it with wcsaxes,它为您提供对真实世界坐标像素的全面支持(而不是仅像素坐标)。

如果你真的想为这些 cartview 切口使用 healpy,你可以使用底层 healpy.projector.CartesianProj class:

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')

祝你好运,如果您有任何后续问题,请告诉我!