我试图为没有数据的像素屏蔽我的healpy地图,但是当我使用badval=-1.6375e+30
应用healpy面具时,我的面具周围似乎有一个边框。
import healpy as hp
import numpy as np
# load the mask
mask = hp.read_map('mask_nvss_S20-S1000_Ns64.fits')
# degrade the mask to NSIDE = 16
mask16 = np.round(hp.ud_grade(mask, 16))
# apply it to the map
masked_map = hp.ma(map1)
masked_map.mask = np.logical_not(mask16)
# masked map
nvss_map = np.round(masked_map)
有人可以帮我删除这种边框效果吗?
答案 0 :(得分:0)
我仍然没有对问题进行全面了解,但我认为你的问题与面具的降级有关。
当从高分辨率布尔掩码变为较低分辨率时,您可以遵循三种不同的策略。选择取决于您的问题。
我将使用您提供的面具说明效果,显示放大:
您可以简单地降级布尔蒙版,为您提供下图中的左侧面板。请注意,在此过程中,小补丁将被取消屏蔽。
map_lowres_bool = hp.ud_grade(mask_highres.astype(bool), nside=16)
如果你改为降级float
类型的面具,你将得到一个带有权重的连续地图(下面的中间面板)。我认为这会产生你所看到的效果。
map_lowres_float = hp.ud_grade(mask_highres.astype(float), nside=16)
您还可以降级布尔掩码,使所有遮罩区域保持屏蔽状态。由于分辨率较低,遮罩的补丁将比原始遮罩更大。
mask_lowres_proper = hp.ud_grade(mask.astype(float), nside=16).astype(float)
mask_lowres_proper = np.where(mask_lowres_proper == 1., True, False).astype(bool)
这会产生下面的右侧面板。
希望您发现这有用,如果您有任何疑问请与我联系!