healpy.pixelfunc.get_interp_val() 或 healpy.mollview() 的经纬度定义不一致?
inconsistent definition of longitude and latitude for healpy.pixelfunc.get_interp_val() or healpy.mollview()?
当我沿经度或纬度旋转 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')
结果:
- original map
- rotated longitude
- rotated latitude
地图中的点沿经度旋转为垂直平移,而沿纬度旋转为水平平移。我希望相反。
这里有什么问题的提示吗?
E.
Theta 是协纬度,Phi 是经度。
这令人困惑,因为它们的顺序与我们通常预期的相反。事实上,即使在 healpy
中,例如在 pix2ang 中,如果您将 lonlat
设置为 true,您将首先获得输出经度,然后是纬度。
不幸的是,这是惯例,我们必须坚持这一点。
当我沿经度或纬度旋转 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')
结果:
- original map
- rotated longitude
- rotated latitude
地图中的点沿经度旋转为垂直平移,而沿纬度旋转为水平平移。我希望相反。
这里有什么问题的提示吗?
E.
Theta 是协纬度,Phi 是经度。
这令人困惑,因为它们的顺序与我们通常预期的相反。事实上,即使在 healpy
中,例如在 pix2ang 中,如果您将 lonlat
设置为 true,您将首先获得输出经度,然后是纬度。
不幸的是,这是惯例,我们必须坚持这一点。