如何将健康区域变成二维数组?
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')
祝你好运,如果您有任何后续问题,请告诉我!
基本上我想要的只是 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')
祝你好运,如果您有任何后续问题,请告诉我!