如何修正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
相关产品推荐
相关产品推荐

