IERS数据访问 (astropy.utils.iers#

介绍#

这个 iers package provides access to the tables provided by the International Earth Rotation and Reference Systems IERS)服务,尤其是 Earth Orientation data 允许在给定时间内内插已公布的UT1-UTC和极移数值。UT1-UTC值用于 时间和日期 (astropy.time ) 以提供UT1值,并且极移用于 astropy.coordinates 以确定天地坐标转换的地球方向。

备注

该软件包还提供了跟踪闰秒的机器。由于一般不必手工处理,因此下文不讨论这一点。有关详细信息,请参阅的文档 LeapSeconds .

我们在这里讨论两个IERS数据产品:

  • Bulletin A (IERS_A) is updated weekly and has historical data starting from 1973 and predictive data for 1 year into the future. It contains Earth orientation parameters x/y pole, UT1-UTC and their errors at daily intervals.

  • Bulletin B (IERS_B) is updated monthly and has data from 1962 up to the time when it is generated. This file contains Earth's orientation in the IERS Reference System including Universal Time, coordinates of the terrestrial pole, and celestial pole offsets.

自.以来 astropy V6.0,这两个文件都由 astropy-iers-data 包,该包在以下情况下自动安装 astropy 本身已安装。

入门#

默认情况下,文件从 astropy-iers-data 定期更新的包。

在某些情况下,可以根据需要从IERS服务自动下载最新的IERS-A值(包括大约一年的预测值)。当时间或坐标变换需要的值尚未通过中的现有文件提供时,就会发生这种情况 astropy-iers-data 。在大多数情况下,不需要调用 iers 类本身,但了解何时发生下载以及如何控制下载情况是很有用的。

基本用法#

默认情况下,IERS数据通过 IERS_Auto 班级。这些实例是在相关时间内内部创建的,并在转换期间协调对象。如果捆绑的文件或AstPy数据缓存不够新,Astopy将从IERS服务请求该文件。下面的示例显示了典型的下载进度条:

>>> from astropy.time import Time
>>> t = Time('2016:001')
>>> t.ut1  
Downloading https://maia.usno.navy.mil/ser7/finals2000A.all
|==================================================================| 3.0M/3.0M (100.00%)         6s
<Time object: scale='ut1' format='yday' value=2016:001:00:00:00.082>

请注意,您可以强制清除下载缓存,如下所示:

>>> from astropy.utils.data import clear_download_cache
>>> clear_download_cache()  

自动使用的默认IERS-A数据由该服务每7天更新一次,并包括追溯到1973-01-01的转换。

备注

这个 IERS_Auto 类包含一些机制,用于根据需要自动下载最新版本来确保IERS表保持最新。这意味着IERS表可以保证拥有最先进的地球自转确定性和预测值。作为一个用户 你的责任 了解IER预测的准确性,如果你的科学依赖于此。如果你要求 UT1-UTC 或极移超过IERS表数据范围的时间,则将提供最接近的可用值。

配置参数#

中有许多IERS配置参数 astropy.utils.iers.Conf 与IERS自动下载相关的内容。以下是需要考虑的四个最重要的因素:

自动下载:

启用最新IERS数据的自动下载。如果设置为 False 则默认情况下将使用本地IERS-A和IERS-B文件(即使已下载并缓存了带有预测的完整IERS文件)。此参数还控制如果安装的版本过期,是否查询互联网资源以更新Leap Second表。

自动最大年龄:

自动下载前预测数据的最长期限(天)。详见下一节。(默认值=30)

远程超时:

下载IERS文件数据的远程超时(秒)

IERS_降级_精度:

一些时间转换,如UTC->UT1,需要IERS-A地球自转数据才能完全准确。如果不需要完全准确,并且不可能或不希望下载IERS-A(例如,在群集上运行),则可以将此选项设置为 'warn''ignore' 。缺省值为 'error' 这将在时间转换不可能完全准确的情况下引发异常, 'warn' 将发出警告,并 'ignore' 将忽略该问题并使用可用的IERS-B数据。

自动刷新行为#

第一次尝试需要IERS数据的时间或坐标转换时,如果 astropy-iers-data 如果还不够新,将下载最新版本的IERS表(从1973年到未来一年),并将其存储在Astery缓存中。

如果可能,转换将使用缓存的数据文件。但是 IERS_Auto 当查询表时,如果满足以下两个条件,表将自动从网络就地更新 UT1-UTC 或极轴运动值:

  • 任何请求的IER值都是 预测性 ,这意味着他们已经用一个适合于测量数据的模型外推到未来。IERS表包含从创建时起大约一年的预测数据。

  • 表中的第一个预测值至少为 conf.auto_max_age days 相对于当前实际时间(即。 Time.now() ). 这意味着IERS表已经过期,可以在IERS服务上找到更新的版本。

IERS(默认情况下提供在线服务 astropy.utils.iers.IERS_A_URL )每7天更新一次内容。的默认值 auto_max_age 是30天,以避免不必要的网络访问,但可以减少到10天。

脱机工作#

如果您在没有互联网连接的情况下工作,并且正在进行需要IERS数据的转换,那么有几个选项。

Ensure astropy-iers-data is up to date

如果您计划在没有互联网连接的情况下工作,我们建议将Astopy-Acers-Package更新到最新的可用版本,例如, pipconda ,因为这将确保您拥有最新的IERS和Leap Second数据。

禁用自动下载

你可以这样做:

>>> from astropy.utils import iers
>>> iers.conf.auto_download = False  

在这种情况下,任何转换都将使用捆绑的IERS数据,这些数据包含在 astropy-iers-data 包,并包括该包发布日期之前的数据(这就是为什么如上所述确保包是最新的很重要)。不允许超出此范围的任何转换。

Set the auto-download max age parameter

只有当你明白你在做什么的时候才这么做,这可能会给出不准确的答案! 假设您以前已经连接到internet,并且以前下载并缓存了IERS自动值,那么请执行以下操作:

>>> iers.conf.auto_max_age = None  

这将禁用对IERS值是否足够新的检查,并且所有转换(甚至那些在可用IERS数据的时间范围之外的转换)将成功,最多只会出现警告。

Allow degraded accuracy

Only do this if you understand what you are doing, THIS CAN GIVE INACCURATE ANSWERS!

astropy.utils.iers.conf.iers_degraded_accuracy 到任何一个 'warn''ignore' 。这可防止在时间转换超出可用本地IERS-B数据范围时发生的正常异常。

直接表访问#

在大多数情况下,自动接口就足够了,但是您可能需要直接加载和操作IERS表。IERS-B值作为astropy的一部分提供,可以直接用于计算时间偏移和极移,也可以设置为在以后的时间和坐标变换中内部使用。例如::

>>> from astropy.utils import iers
>>> t = Time('2010:001')
>>> iers_b = iers.IERS_B.open()
>>> iers_b.ut1_utc(t)  
<Quantity 0.1141359 s>
>>> iers.earth_orientation_table.set(iers_b)
<ScienceState earth_orientation_table: <IERS_B length=...>...>
>>> t.ut1.iso
'2010-01-01 00:00:00.114'

您也可以使用 iers.IERS_A_URL (或) iers.IERS_A_URL_MIRRORiers.IERS_B_URL ,然后将其用于将来的时间和坐标转换(在本例中,仅用于单个计算,使用 earth_orientation_table 作为上下文管理器)::

>>> iers_a = iers.IERS_A.open(iers.IERS_A_URL)  
>>> with iers.earth_orientation_table.set(iers_a):  
...     print(t.ut1.iso)
2010-01-01 00:00:00.114

要重置为默认值,请传入 None (相当于进去 iers.IERS_Auto.open() ):

>>> iers.earth_orientation_table.set(None)  
<ScienceState earth_orientation_table: <IERS...>...>

要查看astropy中使用的内部IERS数据,可以执行以下操作:

>>> dat = iers.earth_orientation_table.get()  
>>> type(dat)  
<class 'astropy.utils.iers.iers.IERS...'>
>>> dat  
<IERS_Auto length=16196>
 year month  day    MJD   PolPMFlag_A ... UT1Flag    PM_x     PM_y   PolPMFlag
                     d                ...           arcsec   arcsec
int64 int64 int64 float64     str1    ... unicode1 float64  float64   unicode1
----- ----- ----- ------- ----------- ... -------- -------- -------- ---------
   73     1     2 41684.0           I ...        B    0.143    0.137         B
   73     1     3 41685.0           I ...        B    0.141    0.134         B
   73     1     4 41686.0           I ...        B    0.139    0.131         B
   73     1     5 41687.0           I ...        B    0.137    0.128         B
  ...   ...   ...     ...         ... ...      ...      ...      ...       ...
   17     5     2 57875.0           P ...        P 0.007211  0.44884         P
   17     5     3 57876.0           P ...        P 0.008757 0.450321         P
   17     5     4 57877.0           P ...        P 0.010328 0.451777         P
   17     5     5 57878.0           P ...        P 0.011924 0.453209         P
   17     5     6 57879.0           P ...        P 0.013544 0.454617         P

大多数列的说明可以在名为 iers.IERS_A_README . 此表中的重要列为MJD、UT1u UTC、UT1Flag、PM_x、PM_y、PolPMFlag::

>>> dat['MJD', 'UT1_UTC', 'UT1Flag', 'PM_x', 'PM_y', 'PolPMFlag']  
<IERS_Auto length=16196>
  MJD    UT1_UTC   UT1Flag    PM_x     PM_y   PolPMFlag
   d        s                arcsec   arcsec
float64  float64   unicode1 float64  float64   unicode1
------- ---------- -------- -------- -------- ---------
41684.0     0.8075        B    0.143    0.137         B
41685.0     0.8044        B    0.141    0.134         B
41686.0     0.8012        B    0.139    0.131         B
41687.0     0.7981        B    0.137    0.128         B
    ...        ...      ...      ...      ...       ...
57875.0 -0.6545408        P 0.007211  0.44884         P
57876.0 -0.6559528        P 0.008757 0.450321         P
57877.0 -0.6573705        P 0.010328 0.451777         P
57878.0 -0.6587712        P 0.011924 0.453209         P
57879.0  -0.660187        P 0.013544 0.454617         P