Skyfield:纯 Python 天文计算,精度达到研究级别

Python 天文计算库 Skyfield,在 GitHub 上获得 1,734 个 Star。

项目作者 Brandon Rhodes 做了多年天文计算工具开发,这次用纯 Python 重写整个体系,专注一件事:让开发者用最少的代码获得高精度天文位置数据。

这个库解决什么问题

天文计算的门槛不低。NASA 的 JPL 发布 DE 系列星历表(DE421、DE430、DE405 等),记录了太阳系天体的轨道数据。直接调用这些数据需要处理复杂的坐标转换和时间系统。

Skyfield 把这层封装了。用户不需要关心星历表怎么解析、坐标系怎么转换,指定天体和时间就能拿到结果。它内部处理了 UTC、TAI、TT 等多种时间尺度的转换,以及地心、日心等不同参考系之间的映射。

输出精度和研究级别一致,和 JPL 官方数据对齐。科研、教学还是业余观测,数据都够用。

正文顶部截图

实际使用体验

API 设计直观。加载星历表、指定天体、计算位置,三步完成:

from skyfield.api import load

planets = load('de421.bsp')
earth, mars = planets['earth'], planets['mars']

ts = load.timescale()
t = ts.now()
position = earth.at(t).observe(mars)
ra, dec, distance = position.radec()

print(ra)
print(dec)
print(distance)

输出示例:

10h 47m 56.24s
+09deg 03' 23.1"
2.33251 au

赤经、赤纬、距离值可以直接用于绘图或进一步分析。Skyfield 还支持计算卫星位置、恒星时、日出日落时间、天体之间的角距离等多种常见天文计算场景。

README区域截图

安装方式

依赖极简,唯一需要提前安装的是 NumPy:

pip install skyfield

同时兼容 Python 2 和 3,对维护旧项目的团队比较友好。环境配置好后,几行代码就能跑通第一个计算示例。

适合哪些人使用

天文爱好者想快速计算行星当前位置,可以在脚本里直接调用。教育场景下演示天体运动,Skyfield 能实时算出坐标数据。科研项目需要获取精确位置做对比验证,结果可以直接用。卫星相关应用用到星历数据,也能通过 Skyfield 拿到。

文档体系完善,官网提供从安装到进阶使用的完整指南。项目采用开源模式,社区持续有更新。Skyfield 本身也在不断扩充功能,近年增加了对更多星历文件格式的支持。

天文计算过去往往和 Fortran、C 绑定,部署比较麻烦。Skyfield 用纯 Python 实现,降低了上手门槛,pip 装完就能开始算。对于需要处理天文数据的开发者来说,这是一个值得加入工具箱的库。

用纯 Python 实现,降低了上手门槛,pip 装完就能开始算。对于需要处理天文数据的开发者来说,这是一个值得加入工具箱的库。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐