healpy.pixelfunc.get_interp_val()或healpy.mollview()的经度和纬度定义不一致?

时间:2018-12-06 11:05:05

标签: healpy

当我沿经度或纬度旋转Healpix地图时,我得到了错误的行为。 我可能在这里缺少明显的东西,但到目前为止,我找不到任何东西。

请参阅演示

import numpy as np
import healpy as hp
import matplotlib.pyplot as plt

nside = 4
npix = hp.nside2npix(nside)

idx = 70
offset = 1 # rad

# set one pixel to 1 in the map
data = np.array(np.equal(np.arange(npix), idx), dtype=float)

hp.mollview(data, nest=True, title='original')

# longitude and co-latitude in radians
theta, phi = hp.pix2ang(nside, np.arange(npix), nest=True)

# rotate: offset on longitude, keep co-latitude the same
rotated = hp.get_interp_val(data, theta + offset, phi, nest=True)

hp.mollview(rotated, nest=True, title='rotated longitude')

# rotate: keep longitude the same, offset on co-latitude
rotated = hp.get_interp_val(data, theta, phi+offset, nest=True)

hp.mollview(rotated, nest=True, title='rotated latitude')

和结果:

沿着经度旋转的地图中的点被垂直平移,而为了沿纬度旋转则被水平地平移。我希望情况会相反。

这里有什么提示吗?

E。

1 个答案:

答案 0 :(得分:1)

Theta是共纬度,Phi是经度。 这令人困惑,因为它们的顺序比我们通常期望的要颠倒。实际上,即使在healpy中,例如在pix2ang中,如果将lonlat设置为true,也将首先获得经度,然后获得纬度作为输出。 不幸的是,这是惯例,我们必须坚持这一原则。