You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

黄道坐标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()

关键修正说明:

  1. 坐标方向修正:hp.Rotator(coord=['E', 'G'])明确指定从黄道(Ecliptic)到银道(Galactic)的转换方向
  2. 标准转换方式:使用rotator.rotate_map_alms()是Healpy中处理He装 remainedwill认证 block陆块Donate在坐标 Cere人的 temporarily的标准方法,确保坐标转换准确
  3. 简化绘图参数:方法2直接通过hp.mollview的coord参数完成转换,无需提前处理地图,代码更简洁
  4. 补充显示逻辑:添加plt.show()确保图像正常显示(原代码缺失该步骤)

内容的提问来源于stack exchange,提问作者Masroor Sofi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:42:41