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

如何修正Astropy脚本实现RA-Dec到银道坐标(l,b)的正确转换?

问题:Astropy赤道坐标转银道坐标结果不符如何修正?

我想用Astropy将赤道坐标(RA, Dec)转换为银道坐标(l, b),以下是我的脚本:

from astropy.coordinates import SkyCoord

RA=12.5039167
Dec=25.301945

c=SkyCoord(RA, Dec, unit='deg')
l=c.galactic.l.degree
b=c.galactic.b.degree

print(l,b)

运行后得到结果:

122.52637037749905 -37.56868264034257

但通过在线坐标转换计算器得到的结果约为232°、84°(单位为度分秒,与度数略有差异),且确认该结果正确。请问应如何修正我的脚本以得到正确结果?


解决方案

问题出在RA的单位设置错误:你输入的RA值12.5039167是小时制的赤经,但脚本里用unit='deg'将其当作了角度制的赤经,导致坐标完全偏离,转换结果自然错误。

修正方法有两种:

方法1:明确指定RA和Dec的单位

通过Astropy的单位模块,直接定义RA为小时角、Dec为度:

from astropy.coordinates import SkyCoord
import astropy.units as u

RA=12.5039167
Dec=25.301945

# 明确RA为小时单位,Dec为角度单位
c=SkyCoord(RA*u.hourangle, Dec*u.deg)
l=c.galactic.l.degree
b=c.galactic.b.degree

print(l,b)

方法2:手动将RA转换为角度制

由于1小时赤经对应15度,直接计算转换后的RA度数:

from astropy.coordinates import SkyCoord

# 小时转度数:1h=15°
RA_deg = 12.5039167 * 15
Dec=25.301945

c=SkyCoord(RA_deg, Dec, unit='deg')
l=c.galactic.l.degree
b=c.galactic.b.degree

print(l,b)

运行修正后的脚本,得到的结果会和在线工具一致:约232.5°、84.5°(具体数值因计算精度略有差异)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:46:01