[英]How Healpix deal with NaN to interpolate data on the sky map?
我不知道您的問題是關於1)處理丟失的數據,2)處理NaN還是3)將球體上的任意數據轉換成Healpix地圖。
1)在大面積的天空上插補丟失的數據至少需要對您的數據有一定的統計知識,以便對丟失的內容進行約束實現。 但是,僅當您執行非本地操作(例如卷積或漸變)時才需要填補這些空白,因此這取決於您打算對數據進行什么處理。
2)將丟失的數據設置為NaN肯定會搞砸所有可用的插值方案。
3)下面的python代碼將與您類似的數據集(據我所知)轉換為2個Healpix貼圖,一個使用最近握點(NGP)采樣,另一個使用BSpline插值。 請注意,第二個在存在NaN的情況下極有可能無法工作,而第一個非常強大。
import healpy as hp
import numpy as np
import pylab as pl
datapoint = np.zeros((37,19), dtype=np.float)
datapoint[18,9] = 1.0
datapoint[0,9] = -1.0
nside = 64
npix = hp.nside2npix(nside)
# location of Healpix pixels center
ip = np.arange(npix)
theta_rad, phi_rad = hp.pix2ang(nside, ip)
# map0 : NGP sampling
theta_deg = np.rad2deg(theta_rad)
phi_deg = np.rad2deg(phi_rad)
hp_0 = datapoint[np.rint(phi_deg/10.).astype(int), \
np.rint(theta_deg/10.).astype(int)]
hp.mollview(hp_0,title='NGP map')
# map1: BSpline interpolation
from scipy.interpolate import RectSphereBivariateSpline
epsilon = 1.e-12
th_in = np.linspace(epsilon, np.pi-epsilon, 19)
ph_in = np.linspace(epsilon,2*np.pi-epsilon, 37)
lut = RectSphereBivariateSpline(th_in, ph_in, datapoint.T, s=1)
hp_1 = lut.ev(theta_rad, phi_rad)
hp.mollview(hp_1,title='BSpline map')
pl.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.