石聪明,王 威,王 锋,3,邓 辉,季凯帆
(1.昆明理工大学云南省计算机技术应用重点实验室,云南 昆明 650500;2.中国科学院国家天文台,北京 100012;3中国科学院云南天文台,云南 昆明 650011)
IERS数据动态提取与更新系统的设计与实现
石聪明1,王 威2,王 锋1,3,邓 辉1,季凯帆1
(1.昆明理工大学云南省计算机技术应用重点实验室,云南 昆明 650500;2.中国科学院国家天文台,北京 100012;3中国科学院云南天文台,云南 昆明 650011)
在高精度的位置计算中需要获取计算时刻所在日期的闰秒,以及UT1-UTC等关键数据,但长期以来这一类数据的维护均是手工进行,出错率高。针对新一代中国太阳射电日像仪观测与数据处理过程中的位置计算需要,实现了一个自动提取国际地球自转服务(IERS)参数的数据更新自维护子系统。系统可以根据需要自动运行、自动下载并分拆IERS网站数据,采用正则表达式从文本中自动获取所需要的实测值与预报值,自动在本地构建一个2004年12月31日以来的IERS数据库,并根据每周所获得的数据维护整个IERS的数据,将最新的实测值与预报值存入数据文件,实现了数据的滚动更新。系统彻底解决了手工维护数据的问题,为中国太阳射电日像仪的自动数据处理流水线打下了较好的基础。同时,本文提出的方法是一种通用的方法,可以方便地集成应用到国内其它天文位置计算领域。
IERS;动态;数据提取;更新
CN53-1189/P ISSN1672-7673
新一代中国太阳射电日像仪(Chinese Solar Radio Heliograph,CSRH)[1-2]是一台高时间、高空间和高频率分辨率太阳射电频谱成像设备[3],数据处理系统是当前中国太阳射电日像仪的建设重点。根据设计指标,中国太阳射电日像仪对观测目标的视位置计算精度要求优于1′×10-3,在高精度计算中,中国太阳射电日像仪采用了JPL DE405星表,并以Naval Observatory Vector Astrometry Software(NOVAS)软件开发包为基础[4]构建了相应的位置计算子系统。但随之带来的问题是,在NOVAS的高精度计算中需要有若干重要的计算参数需要进行维护与更新,包括观测时刻的闰秒(Leap Second)、地极偏移(x,y)和UT1-UTC等。
目前正式发布这些数据的是国际地球自转服务组织(IERS),国际地球自转服务组织每周一次向全世界发布与更新相关数据,其中Bulletin A基本包括了所需要的全部参数,包括闰秒、一周的快速服务值(精度基本等价于实测值精度)、未来一年的预报值。国际地球自转服务组织官方明确,与发布预报日期间隔越远,地极偏移(x,y)和UT1-UTC的精度越低。对于中国太阳射电日像仪要求视位置精度优于1′×10-3的情况来说,需要尽可能快地更新国际地球自转服务组织的数据。此外,对中国太阳射电日像仪的后续数据处理工作,也需要获得国际地球自转服务组织所提供的实测地极偏移(x,y)和实测的UT1-UTC。
要实现中国太阳射电日像仪望远镜数据处理过程的全自动化,保证PIPELINE的可靠运行,生成准确的最终数据处理结果,就有必要在数据处理系统中保存一个本地的国际地球自转服务组织数据(包括闰秒、地极偏移(x,y)和UT1-UTC等,下同),并保持数据的持续更新。对于这些国际地球自转服务组织数据,如果完全依赖人工操作进行数据更新显然不足,如果发生人工失误有可能导致一批数据处理出错,且这样的错误不易察觉,如果发布了错误的观测数据会导致较为严重的后果。目前,国内的各望远镜系统在各自的观测预报与后续数据处理中,都需要使用上述国际地球自转服务组织数据,云南天文台激光测距、上海天文台VLBI等均通过手工的方法,定时人工去网站上访问国际地球自转服务组织数据,然后手工处理,在本地再生成一个文件供程序调用。射电天文领域中一个常用软件系统CASA(Common Astronomy Software Applications)①CASA,http://casa.nrao.edu,为了获得闰秒等国际地球自转服务组织数据并保持可用性,在CASA软件启动过程中,自动连接CASA网站并下载CASA自行维护的最新的国际地球自转服务组织数据,以此保证基础数据的准确性与可用性。但对于中国太阳射电日像仪自主开发的系统来说,下载获得CASA提供的国际地球自转服务组织数据也是不现实的。
根据上述需求,设计实现了一套针对满足天文星表高精度位置计算使用的国际地球自转服务组织数据更新系统iersSync,软件可以访问国际地球自转服务组织官方网站②IERS,http://www.iers.org并下载所需要的数据,并从原始复杂文本中提取所需要的参数数据,自动归档形成本地数据文件。更为重要的是,iersSync可以自动判断国际地球自转服务组织官网最新发布的数据,自动归档并更新到本地数据文件中,实现数据的自动更新与动态维护,满足中国太阳射电日像仪高精度位置计算的要求。软件的实现对天文软件开发有较好的参考价值,对人造卫星等需要国际地球自转服务组织数据的类似场合也有较好的使用价值。
国际地球自转服务全称为国际地球自转和参考系服务(International Earth Rotation and Reference Systems Service),是一家提供全球时间和参考系标准的机构。国际地球自转服务组织发布的地球指向数据(Earth orientation data)包括Bulletin A、B、C、D等数据。Bulletin A数据每周发布一次。数据为ASCII文本,包含文档说明、公式定义、表格等,可以从国际地球自转服务组织官网下载得到从2004年12月31日至今的数据。Bulletin A中发布的数据包括闰秒、实测值、预报值等数据信息。
Bulletin A的文本文件通过下划线符号组成的字符串将整个文本分成5个子部分,分别是:文件头、常规信息(GENERAL INFORMATION)、数据来源说明、组合的地球方向参数(COMBINED EARTH ORIENTATION PARAMETERS)、预报值(PREDICTIONS)。文本具体分析说明见图1。
从图1可知,文件头部分是一个固定开头,说明文件是Bulletin A,随后说明此文件的公布日期、记录的卷号以及编号。常规信息部分中,给出了计算MJD、UT2-UT1、TT、DUT1以及TAI-UTC的5个公式,以及如何获得每日的数据和Bulletin A中数据的方式。其中公式TAI-UTC的值有开始使用日期(图1中显示的Beginning 1 July 2012)。国际地球自转服务组织快速服务数据中总有“IERS Rapid Service”这个固定头,且国际地球自转服务组织快速服务中提供的一周共7行实测值需要提取归档。预报值部分最为重要的是提取预报值记录。预报值记录中有“MJD x(arcsec)y(arcsec)UT1-UTC (sec)”这个固定头。要动态获得所有的数据,具体分析如下:
(1)从整体来看,国际地球自转服务组织的数据文件格式相对固定,但简单地用固定位置分析提取数据是不可能的。这是因为国际地球自转服务组织的数据中,每周每月均有不同的数据格式,如每月会提供前一个月的实测值;每周的数据中,有可能公式的系数等均会发生变化。同时,文件中的空格位置是改变的。用正则表达式,对整个文本进行匹配是较为可行的选择。只要正则表达式构造合理,通过判断数据的开头与结尾,从中进一步分离所需要的数据是较好的选择。
(2)另一个较为困难的问题,是国际地球自转服务组织的数据每周更新,本周的预报值在下周就会出现快速服务提供的实测值,同时又会出现新的预报值。如何动态地维护这个变化的数据,同时确保数据的一致性和完整性是本工作的另一个重点。系统需要有较好的鲁棒性,在前一次更新过程中即使发生意外情况(如死机、断网等),重新运行系统就可以确保自动更新错误数据,是一个关键问题。此外,闰秒的提取与预报值和实测值不一样,不能简单地写入,而需要进行合理的判断,只保存闰秒的跳秒关键信息。
图1 Bulletin A的格式,黑色部分为需要提取的内容Fig.1 The format of the Bulletin A.The parts in black are those to be extracted
2.1 系统的整体框架
在上述分析的基础上,图2显示了iersSync系统的整个流程图。系统主要包括HTTP访问模块、URL分析与内容下载模块、地心指向参数下载与更新维护模块、闰秒数据更新维护模块以及日志数据管理模块。整个程序用Python开发,直接利用了Python的HTTP访问模块,其它模块均自行开发。其中日志数据管理模块主要实现整个国际地球自转服务组织数据的一致性与完整性保证。
以下根据流程图的说明,重点介绍iersSync子系统中的几项关键技术,分别是数据获取、数据分拆与提取以及对动态数据维护的一致性保障技术。
2.2 国际地球自转服务组织数据获取
系统采用HTTP协议进行数据的抓取,与搜索引擎技术中的爬虫技术类似。爬虫技术所抓取、存储并索引的对象一般为网站或网页,而国际地球自转服务组织数据获取技术所抓取、存储的是国际地球自转服务组织网站中特定网页中的文本文件链接的特定数据。在提取时,不需要进行复杂的文本分词等技术,重要的是构造有效的正则表达式,通过正则表达式获取相应的数据信息。
通过分析国际地球自转服务组织网站“Data/Product”的地球指向数据中BULLETIN A所有可用数据所在的网页对应的html代码,文本文件对应的URL的格式固定为:http...getTX...txt,因此分拆IERS BULLETIN A的html中所有文本文件对应的URL的正则表达式为:′http.getTX.?txt$′,表示以http开头,以txt结束为特征的内容,程序执行流程说明如图3。
图2 系统流程图Fig.2 A flowchart of our system
图3 数据的URL分拆和提取功能的伪代码Fig.3 The pseudo codes for the function of splitting URL and retrieving needed data
通过上述过程,就可以得到国际地球自转服务组织发布的所有Bulletin A文本文件对应的URL。进而只需要通过http访问这些URL,即可以下载获得Bulletin A的相应文本文件。
2.3 IERS Bulletin A数据分拆与提取
数据分拆也是一样的方法,通过构造合适的正则表达式,定位到相应的位置,再从中分离所需要的数据。由上述国际地球自转服务组织BULLETIN A中的文本文件的格式分析可知,所需要的数据闰秒及其开始使用日期、实测值、预报值分别位于一般信息GENERAL INFORMATION、组合的地球方向参数COMBINED EARTH ORIENTATION PARAMETERS、预报值PREDICTIONS这3部分中。
2.3.1 闰秒提取
从一个数据文件中提取闰秒数据并不困难。闰秒及其开始使用日期位于一般信息中的公式TAIUTC中,公式TAI-UTC的格式也是固定不变的。虽然公式TAI-UTC中闰秒和开始使用日期的格式是固定的,但是无法用一个正则表达式匹配和分拆这两个数据。分拆和提取闰秒开始使用日期需要编写正则表达式:′^Beginning(.?):$′匹配闰秒开始使用日期。分拆和提取闰秒需要编写正则表达式: "TAI-UTC.?=(.?)seconds"匹配闰秒。
但需要考虑到,由于闰秒及其开始使用日期在每一个数据文本文件中重复出现,最终生成的闰秒数据文件关键是要保证存储不重复的闰秒及其开始使用日期。这就需要通过一个临时文件存储日期信息,并进行重复数据判断,程序实现的伪代码见图4,最终生成的数据格式见图5。
图4 闰秒数据的分拆伪代码Fig.4 The pseudo codes for the function of splitting data about leap seconds
2.3.2 实际观测值获取
实测值位于组合的地球方向参数中的国际地球自转服务组织快速服务中,每次公布的实测值有7条,且有固定的头部IERS Rapid Service。为了分拆和提取实际的观测值,需要编写匹配实际观测值的正则表达式。由于实际的观测值会随着时间的改变而改变,然而实际观测值有固定的头部和固定的记录数,因此编写固定头部的正则表达式比编写实际观测值的正则表达式更有利于实际观测值的分拆和提取。系统实现中,采用正则表达式′.?IERS Rapid Service.?′作为实际观测值的匹配条件。在找到数据起始位置后,进一步逐行读取数据就可以获得所需要的MJD、极移(x,y)数据和UT1-UTC。
2.3.3 文件中的预报值的分拆和提取功能的实现
预报值位于预报值部分中的预报值记录部分。预报值记录部分由固定的头部格式和固定的结尾格式。预报值与预报值分拆方法基本类似,根据预报值记录部分有固定的头部格式和固定的结尾格式的特征,编写如下正则表达式:
2.4 数据归档
为了满足中国太阳射电日像仪的高精度位置计算需求,最终获得的数据分别保存在2个文件中。分别是闰秒数据文件、国际地球自转服务数据文件(含实测值数据文件和预测数据文件)。
(1)闰秒数据文件
在闰秒文件中保存所有的闰秒数据,并把原数据中的32.000000和1 January 1999转化成形如1999 1 1 32.000000的格式进行数据归档,在归档闰秒及其开始使用日期的数据时要按照闰秒开始使用日期的时间先后顺序依次归档。在具体的位置计算时,判断当前的日志是否超过跳秒日期,如果超过则闰秒值可以采用跳秒日期后的时间。文件内容如图5。
图5 闰秒文件中的数据Fig.5 Entries in a local data file about leap seconds
(2)国际地球自转服务数据文件
国际地球自转服务数据文件采用二进制存储,以32个字节存储一天的相应数据,第1行数据为2004年12月31日。按字节顺序对应的格式为:
字节类型定义2字节Short年1字节char月1字节char日4字节intMJD 8字节doublex 8字节doubley 8字节doubleut1-utc
iersSync系统自动维护的数据,包括从2004年12月31日开始,一直到最新发布日期以后一年的数据。在发布日期以前的数据为实测值,发布日期以后的为预报值。每次更新完成后,系统会自动将更新的数据写入文件。
采用二进制存储的主要目的在于提高数据的读取速度,在读取数据时,只需要计算观测日期的简化儒略日,减2004年12月31日的简化儒略日,结果乘以32,就可以获得文件指针的偏移值。通过类似于fseek的功能跳转文件指针后读取32字节,就可以获得对应的观测日期的数据。此外,通过二进制存储,也利于数据的更新,在每周的数据更新时,也只需要更新相应的字节即可。
3.1 系统运行
整个程序采用Python开发,可以简单地集成到其它软件中,也可以独立运行。在实际使用过程中,如果是重新建立初始数据,将历史资料全部补齐,下载的时间取决于网络速度,全部文件的分拆大约需要15 min的时间。随后的增量数据更新过程则比较快,一般单次更新的时间均小于10 s,已经足够保障中国太阳射电日像仪数据处理PIPELINE的要求。
为了实现定时的更新,可以利用Linux操作系统的crontab等,固定一个时间自动运行程序。中国太阳射电日像仪是白天观测,晚上数据处理,因此更新时间设在每日16∶00时,这样不影响头一天的位置计算,也不影响晚上的数据处理。
3.2 数据的准确性检查
为确保数据的准确性,做到万无一失,通过软件测试、随机抽样和人工校对的方式对数据进行校验。在实际运行过程中发现国际地球自转服务组织的数据存在一些错误:提取的闰秒开始使用日期及其闰秒值的转化形式中出现了如下1999 1 1 32.000000、1999 1 1 33.000000和2006 1 1 33.000000 3条有冲突的记录,经过手工校验发现从2005-01-06到2005-12-29之间发布的数据中用的是1999-01-01开始的32.000000的闰秒,只有2006-01-05发布的数据中用的是1999-01-01开始的33.000000的闰秒,从2006-01-12到2008-12-31发布的数据中用的是2006-01-01开始的33.000000的闰秒。从核实发现2006-01-05发布的数据中的闰秒开始使用日期是错误的。
此外,通过数据校验方法发现BULLETIN A中没有发布2005-01-28到2005-02-03这7天的实测值,2010-04-29发布TextFile的2010-04-23到2010-04-29是无法访问的。其它数据通过软件测试和人工校对的方式确认了实测值的记录数是全数据生成。通过随机抽样的方式抽取实测值中的5%的样本值,经人工校对的方式发现没有错误的数据。
3.3 基于日志文件的准事务文件处理
为了使整个系统更为鲁棒,避免过多的人工进一步影响最终的数据文件的一致性与完整性,避免由于错误计算产生错误的科学观测数据,iersSync系统通过两个日志文件(执行日志文件-runlog、已更新日志文件updatelog)解决国际地球自转服务组织的数据更新可靠性问题。如前所述,国际地球自转服务组织的数据每周更新的实测值将覆盖原有数据中的预报值,新的预报值又有可能追加到数据文件中。每一次的数据更新中,有可能出现网络中断、系统故障、断电等异常情况,要确保iersSync在这些情况下,可以自动重新下载数据。确保下载的数据准确无误地更新到本地国际地球自转服务组织数据文件中,是iersSync的核心问题,也是其重要特色。
执行日志文件遵从“开始工作前写入,工作完成清除”这一基本原则,如果在程序运行时,发现某个文件还有内容没有被清除,则可以判断为前一工作没有正常结束,这个时候只需要简单地重复处理这一工作即可。已更新日志文件用来避免每次运行时都不断地从头开始,通过记录最后一次更新成功的文件名称,系统启动时判断是否需要更新当前数据,简化了程序的更新,特别是有效地提高了程序执行效率。
本文针对中国太阳射电日像仪数据处理要求,设计并实现了一套针对天文星表高精度位置计算的自动数据获取与同步软件iersSync,软件可以访问国际地球自转服务组织官网下载数据,从原始数据的复杂文本中提取相应的参数数据,并自动归档形成本地数据文件,满足中国太阳射电日像仪高精度位置计算的要求。iersSync的运行无需人工干预,经过严格测试与检验后,证明所获取的数据准确无误,可以满足中国太阳射电日像仪的数据计算处理需要。iersSync软件的实现,有如下应用价值:
(1)解决了长期以来各望远镜系统采用人工维护数据的问题,降低了数据错误的风险。符合新一代天文望远镜设备自主观测的思想。
(2)为中国太阳射电日像仪数据处理打下了较好的基础,对当前各天文望远镜数据处理系统的开发与设计提供了良好的借鉴和参考价值。
(3)软件采用开源的方式发布,供天文学家在类似的场合使用,如人造卫星观测等领域。
当然,iersSync仍存在一些不足,当前过于依赖国际地球自转服务组织网站的数据,今后也将考虑从其它网站如法国http://hpiers.obspm.fr/等获取数据,这样可以进一步强化系统的可靠性,这也是今后的工作重点。
致谢:衷心感谢在成文与系统实现过程中与中国科学院云南天文台李语强老师的讨论。
参考文献:
[1] 颜毅华,张坚,陈志军,等.关于太阳厘米—分米波段频谱日像仪研究进展[J].天文研究与技术——国家天文台台刊,2006,3(2):91-98.
Yan Yihua,Zhang Jian,Chen Zhijun,et al.Progress on Chinese solar radioheliograph in cm-dm wavebands[J].Astronomical Research&Technology——Publications of National Astronomical Observatories of China,2006,3(2):91-98.
[2] Yan Y H,Zhang J,Huang G L.On the Chinese spectral radioheliograph(CSRH)project in cmand dm-wave range[C]//IEEE.Radio Science Conference.2004:391-392.
[3] 陈志军,颜毅华,刘玉英,等.关于中国厘米—分米波频谱日像仪(CSRH)选址与无线电环境监测[J].天文研究与技术——国家天文台台刊,2006,3(2):168-175.
Chen Zhijun,Yan Yihua,Liu Yuying,et al.Site survey and RFI test for CSRH[J].Astronomical Research&Technology——Publications of National Astronomical Observatories of China,2006,3 (2):168-175.
[4] Kaplan G H,Bangert J A,Barron E G,et al.Naval Observatory Vector Astrometry Software (NOVAS)[C]//IAU Joint Discussion 7:Space-Time Reference Systems for Future Research at IAU General Assembly-Beijing.Version 3.1:Fortran,C,and Python Editions,2011.
Design and Implementation of a Dynamic System of Retrieving and Updating IERS Data
Shi Congming1,Wang Wei2,Wang Feng1,3,Deng Hui1,Ji Kaifan1
(1.Key Laboratory of Applicatios of Computer Technologies of the Yunnan Province,University of Science and Technology of Kunming,Kunming 650500,China,Email:wangfeng@cnlab.net;2.National Astronomical Observatories,Chinese Academy of Sciences,Beijing 100012,China;3.Yunnan Observatories,Chinese Academy of Sciences,Kunming 650011,China)
It is a fundamental issue in astronomical research to achieve high-precision calculations of target positions.To fulfill the requirements of high-precision calculations of positions in pipeline data processing for the Chinese Solar Radio Heliograph(CSRH),in this paper we propose a dynamic system of automatically retrieving and updating data to obtain useful parameter values from the IERS website.The method can automatically download and analyze a text file published on the IERS website.Values of the needed parameters,including the earth orientation,leap second,and polar motion,can be extracted from canonical expressions of the text file and saved to a specified local file.The values include measured and predicted ones.With the method a local database of IERS parameter records since December 31,2004 has been established.The database is being updated weekly in the automated mode by checking the IERS website. Our study provides a general method to maintain astronomical data essential to high-precision calculations of target positions.It avoids the conventional need to manually maintain such data.It is valuable to the design of pipeline data processing for the CSRH.The routines for the method were written with the Python language and can be easily integrated into other astronomical software packages.
IERS;Dynamic;Data retrieval;Update
TP393.092
A
1672-7673(2014)04-0396-08
2014-01-02;
2014-01-28
石聪明,男,硕士.研究方向:软件架构,网络安全,天文计算方法.Email:cnshicongming@gmail.com
王 锋,男,教授.研究方向:天文技术与方法.Email:wangfeng@cnlab.net