Skyfield数据包
项目描述
Skyfield数据文件
原因
Skyfield 是一个用于天文计算的Python库。它依赖于各种数据文件以准确地计算月相、行星位置等。
这些数据文件提出了几个问题
- 如果它们不在
Loader
的路径中,它们会在运行时 下载。根据您请求的存档,一些文件可能非常大,导致长时间延迟(直接与您的网络带宽相关)。在Web服务器应用程序的情况下,您会导致客户端超时。 - 它们主要来自两个来源:NASA的JPL和IERS。 如果其中任何一个临时不可用,您将无法执行任何计算。
- 在某些国家或某些过滤代理后面,某些主机可能被 阻止。
- 这些文件有 到期日期(在不太遥远的未来)。因此,即使文件已下载到正确的路径,在每次运行时,您也可能需要下载一个或多个文件,然后才能使用它们进行任何计算。
目前已知到期日期
文件 | 日期 |
---|---|
finals2000A.all | 2024-06-16 |
de421.bsp | 2053-10-08 |
弃用警告:自 python-skyfield>=1.31
以来,不再使用 Leap_Second.dat
、deltat.data
和 deltat.preds
文件。它们不再维护,Brandon Rhodes已切换到其他源文件进行∆T计算。
本项目的目标
- 在Python包中提供至少这些资产中最常见的。
- 定期发布以刷新文件,防止其过期。
- 当文件即将过期(或已过时)时,提供警告/日志机制,以便您仍然可以使用加载的资产进行计算,但会得知您需要升级。
这样,您就可以通过pip
来安装或升级此数据包。
一旦所有文件都存储在您的磁盘空间中,您就可以实例化指向它们的路径的skyfield
加载器,无需担心任何事情。
用法
使用以下命令安装包
pip install skyfield skyfield-data
要创建自定义Skyfield加载器,请使用以下代码
from skyfield_data import get_skyfield_data_path
from skyfield.api import Loader
load = Loader(get_skyfield_data_path())
planets = load('de421.bsp') # this command won't download this file
ts = load.timescale(builtin=False) # this command won't download the IERS file
记录在案,将buitin=True
作为加载时标数据的参数不会触发文件的下载,因为python-skyfield已经将其自己的数据文件作为内置数据源嵌入。
如果您想确保数据文件永远不会被下载,您也可以使用expire
选项,如下所示
load = Loader(get_skyfield_data_path(), expire=False)
每当目录中包含的文件过期时,在加载skyfield-data
路径时,您将收到警告
>>> from skyfield_data import get_skyfield_data_path
>>> from skyfield.api import Loader
>>> load = Loader(get_skyfield_data_path())
/home/[redacted]/skyfield_data/expirations.py:25: RuntimeWarning: The file de421.bsp has expired. Please upgrade your version of `skyfield-data` or expect computation errors
RuntimeWarning
默认情况下,不会阻止加载,但强烈建议升级到更近的版本,以确保您不会进行错误的天文计算。
自定义限制
默认情况下,当文件已过期时,会引发RuntimeWarning
。您可能希望提前知道这个警告,也就是说,在几天或几周前,以便最终升级您的skyfield-data
版本。
为了触发此警告,您可以使用expiration_limit
参数,如下所示
>>> from skyfield_data import get_skyfield_data_path
>>> from skyfield.api import Loader
>>> load = Loader(get_skyfield_data_path(expiration_limit=30))
/home/[redacted]/skyfield_data/expirations.py:25: RuntimeWarning: The file de421.bsp would expire in less than 30 days. Please upgrade your version of `skyfield-data` or expect computation errors
RuntimeWarning
注意: expiration_limit
参数应该是一个正整数(或零)。
开发者
我们假设您将使用Python 3.7+版本进行所有常规操作。
我们提供了一个Makefile
,其中包含基本的target,以便与工具包交互。使用make help
获取更多详细信息。
为了能够运行download.py
脚本,我们建议您在一个虚拟环境中运行它,该虚拟环境已经安装了“dev”依赖项,如下所示
make install-dev
Python兼容性
重要: 此项目目前与Python 2.6、2.7和Python 3.7+至3.11保持兼容,以保持与skyfield
相同的Python兼容性。尽管如此,GitHub镜像的最近更改使得确保其仍然兼容变得困难。对此造成的不便我们深表歉意。
开发
改进或修复skyfield-data
将需要您至少有一个安装了tox
的虚拟环境。
我们将要求您在补丁中添加测试,以确保您的补丁或进一步的补丁不会引入回归或错误。
为了进行快速测试,在您的“tox-ready”虚拟环境中运行以下命令
make test
以启动Python 2.7和Python 3.7+测试作业。
如果您想测试您的分支与Python 2.6的兼容性,您必须设置一个Python 2.6兼容的tox环境,方法类似于以下操作
sudo apt install python2.6 python2.6-dev # dev headers to compile numpy
mkvirtualenv TOX26 --python=`which python2.6` # You will activate this venv with `workon TOX26`
pip install tox
tox -c tox-py26.ini
已知问题:在Ubuntu上,您可能无法在此处构建numpy,因为系统中的C头文件放置不当。我在Ubuntu上遇到了困难,但您的体验可能会有所不同。
注意:目前,我们无法证明skyfield-data与Python 2.6的100%兼容性,因为CI已失效。尽管如此,我们非常相信它是。祝你好运!
在线CI与Travis & Circle-CI
在线CI依赖于GitHub Actions
版权
数据文件
de421.bsp
由喷气推进实验室提供。finals2000A.all
由国际地球自转和参考系统服务提供。
软件
此Python包代码遵循MIT许可条款发布。有关详细信息,请参阅COPYING
文件。
项目详情
skyfield-data-6.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4e4f059c91f712b2d81d87288df04511a8154adb0044ebfc11365a689a53bcac |
|
MD5 | 05262dc592529e5a7957d055061a684c |
|
BLAKE2b-256 | 5546bab75175ed6494d0e33d93b7745a2ff665576d3f9278a18172319892729d |
skyfield_data-6.0.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 12c946dbd4453fb4958faf845484222ec9d8d2cac19d2cb7bffb41301aa5b526 |
|
MD5 | efef8ef23f5527e773e1b23184c550fe |
|
BLAKE2b-256 | 743235b49c830f36e8214e014bbef5b69790ff084f4b65c46b455991689ad94e |