[ PROMPT_NODE_26222 ]
coordinates
[ SKILL_DOCUMENTATION ]
# 天文坐标 (astropy.coordinates)
`astropy.coordinates` 包提供了用于表示天球坐标并在不同坐标系之间进行转换的工具。
## 使用 SkyCoord 创建坐标
推荐使用高层 `SkyCoord` 类作为接口:
python
from astropy import units as u
from astropy.coordinates import SkyCoord
# 十进制角度
c = SkyCoord(ra=10.625*u.degree, dec=41.2*u.degree, frame='icrs')
# 六十进制字符串
c = SkyCoord(ra='00h42m30s', dec='+41d12m00s', frame='icrs')
# 混合格式
c = SkyCoord('00h42.5m +41d12m', unit=(u.hourangle, u.deg))
# 银道坐标
c = SkyCoord(l=120.5*u.degree, b=-23.4*u.degree, frame='galactic')
## 数组坐标
使用数组高效处理多个坐标:
python
# 创建坐标数组
coords = SkyCoord(ra=[10, 11, 12]*u.degree,
dec=[41, -5, 42]*u.degree)
# 访问单个元素
coords[0]
coords[1:3]
# 数组操作
coords.shape
len(coords)
## 访问分量
python
c = SkyCoord(ra=10.68*u.degree, dec=41.27*u.degree, frame='icrs')
# 访问坐标
c.ra #
c.dec #
c.ra.hour # 转换为小时
c.ra.hms # 小时、分钟、秒元组
c.dec.dms # 度、角分、角秒元组
## 字符串格式化
python
c.to_string('decimal') # '10.68 41.27'
c.to_string('dms') # '10d40m48s 41d16m12s'
c.to_string('hmsdms') # '00h42m43.2s +41d16m12s'
# 自定义格式化
c.ra.to_string(unit=u.hour, sep=':', precision=2)
## 坐标转换
在参考系之间进行转换:
python
c_icrs = SkyCoord(ra=10.68*u.degree, dec=41.27*u.degree, frame='icrs')
# 简单转换(作为属性)
c_galactic = c_icrs.galactic
c_fk5 = c_icrs.fk5
c_fk4 = c_icrs.fk4
# 显式转换
c_icrs.transform_to('galactic')
c_icrs.transform_to(FK5(equinox='J1975')) # 自定义参考系参数
## 常见坐标系
### 天球坐标系
- **ICRS**: 国际天球参考系(默认,最常用)
- **FK5**: 第五基本星表(默认 J2000.0 分点)
- **FK4**: 第四基本星表(较旧,需要指定分点)
- **GCRS**: 地心天球参考系
- **CIRS**: 天球中间参考系
### 银道坐标系
- **Galactic**: IAU 1958 银道坐标
- **Supergalactic**: De Vaucouleurs 超银道坐标