2

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

4

1 回答 1

2

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

您可以构建一个WCS对象或 FITS 标头,然后将您的 HEALPix 映射重新投影到其上,然后使用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')

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

于 2019-08-23T16:19:52.873 回答