黄道坐标FITS Mollview投影图转银道坐标可视化代码求助
黄道坐标转银道坐标的正确实现
首先,你的代码存在几个关键问题导致坐标转换失败:
- 坐标转换方向搞反:
hp.Rotator(coord=['G', 'E'])是从银道转黄道,而你需要的是黄道转银道,应该用['E', 'G'] hp.mollview的rot参数用于视角旋转,而非坐标转换;坐标转换应通过coord参数或提前旋转地图实现- 无需手动传递旋转矩阵,Healpy可自动处理坐标转换逻辑
以下是修正后的完整代码:
import numpy as np import matplotlib.pyplot as plt import healpy as hp from pixell import enmap, reproject, utils from matplotlib import cm # 读取黄道坐标FITS地图 path = "/home/masroor/fazl/" imap = enmap.read_map(path + "act_planck_dr5.01_s08s18_AA_f150_daynight_map.fits")[0] # 将笛卡尔投影的enmap转换为Healpix格式 smap_healpix = reproject.healpix_from_enmap(imap, lmax=6000, nside=128) # 定义颜色显示范围 rang = 300 # 方法1:提前将黄道坐标地图转换为银道坐标(适合后续需处理转换后地图的场景) rotator = hp.Rotator(coord=['E', 'G'], deg=True) galactic_healpix_map = rotator.rotate_map_alms(smap_healpix) # 可视化银道坐标地图 hp.mollview(galactic_healpix_map, min=-rang, max=rang, title='银道坐标地图', cmap=cm.get_cmap('RdYlBu')) hp.graticule() plt.show() # 方法2:绘图时直接指定坐标转换(更简洁) # hp.mollview(smap_healpix, min=-rang, max=rang, coord=['E', 'G'], # title='银道坐标地图', cmap=cm.get_cmap('RdYlBu')) # hp.graticule() # plt.show()
关键修正说明:
- 坐标方向修正:
hp.Rotator(coord=['E', 'G'])明确指定从黄道(Ecliptic)到银道(Galactic)的转换方向 - 标准转换方式:使用
rotator.rotate_map_alms()是Healpy中处理He装 remainedwill认证 block陆块Donate在坐标 Cere人的 temporarily的标准方法,确保坐标转换准确 - 简化绘图参数:方法2直接通过
hp.mollview的coord参数完成转换,无需提前处理地图,代码更简洁 - 补充显示逻辑:添加
plt.show()确保图像正常显示(原代码缺失该步骤)
内容的提问来源于stack exchange,提问作者Masroor Sofi
相关产品推荐
相关产品推荐

