APP下载

IGS产品批量、定时、自动下载软件设计与实现

2016-06-22刘智敏黄超窦世标张海平冯彦同

全球定位系统 2016年2期

刘智敏,黄超,窦世标,张海平,冯彦同

(1.山东科技大学 测绘学院,青岛 266590;2.山东省高校海洋测绘重点实验室(山东科技大学),青岛 266590;3.山东省国土测绘院,济南 250102)

IGS产品批量、定时、自动下载软件设计与实现

刘智敏1,2,黄超1,窦世标1,张海平3,冯彦同3

(1.山东科技大学 测绘学院,青岛 266590;2.山东省高校海洋测绘重点实验室(山东科技大学),青岛 266590;3.山东省国土测绘院,济南 250102)

摘要:随着全球GNSS的发展以及IGS自身的不断完善,IGS产品精度不断提高、应用更加广泛,广大用户对IGS产品的要求也在不断增长,下载日益频繁。IGS通过文件传输协议服务实现IGS产品的发布,人工下载步骤烦琐,费时费力且容易出错,文中利用C#语言开发了IGS产品的下载软件,实现了相关文件的批量、定时、自动下载,有助于减轻工作人员的负担,提高工作效率,而且能够在文件发布后及时下载,减少错误发生的概率。通过对2015年9月份不同发布周期、不同类型文件的下载,证实了本软件进行IGS产品下载的可行性。

关键词:IGS产品;定时下载;FTP服务

0引言

随着Internet的日益普及以及全球导航卫星系统(GNSS)的不断发展,越来越多的GNSS信息可以从网上获得,例如GNSS观测数据以及相应的精密星历、广播星历等进行数据处理所需的文件。这些文件有的按年更新,有的按周更新,有的按天更新,且不同的文件有不同的下载地址,人工下载步骤烦琐,开发GNSS相关文件的批量、定时、自动下载软件有助于减轻工作人员的负担,提高工作效率,而且能够在文件发布后及时下载,减少错误发生的概率,在需要进行连续处理长期数据的工作中具有重要意义。

关于GNSS文件批量下载,国内已经进行了很多研究与开发。李建虎基于shell脚本实现了IGS站数据的自动下载,但是shell脚本是基于Linux平台终端下运行,不存在可视化的界面,普通用户使用起来存在不便[1];李峰、阳凡林等利用C#语言实现了Bernese5.0的GPS数据的自动下载,该软件主要针对Bernese5.0,普适性不强,用户无法重新配置获得自己需要的其他IGS产品[2];为了提高IGS产品批量下载的自动化程度、方便性和普适性,作者在Windows系统下开发了基于C#语言的IGS产品自动下载软件。

1IGS产品介绍

为了能够提供最高质量的GNSS数据和产品以支持地球科学研究,同时加强国际间的研究合作,国际大地测量协会(IAG)于1993年成立了国际地球动力学服务机构(IGS),于1994年1月正式运作,1999年将名称简化为国际GPS服务(IGS),并于2005年3月最终改为国际GNSS服务(IGS)[3]。IGS产品包括各IGS跟踪站的GNSS观测资料,以及各IGS分析中心和协调分析中心提交的产品数据,为大地测量和地球动力学研究服务[4]。IGS的最终产品包括最终卫星轨道/钟差、地球自转参数、IGS站坐标和速度、地心变化以及对流层和电离层产品,这些产品的精度、产品之间的一致性和连续性是用户进行高精度导航/定位的基础保障[5]。目前,IGS所产生的各项数据以及产品日益精确,应用也越来越广泛。

IGS通过文件传输协议(FTP)服务实现IGS产品的发布,FTP服务采用典型的客户机和服务器(C/S)工作模式,主要功能包括两种:文件的下载和文件的上载,本程序应用的是FTP服务的文件下载功能。通常用户登录IGS服务器都采用的是Anonymous(匿名)账户,这类用户在FTP服务器中没有指定账户,只允许下载文件而不能上载文件,本程序使用的就是匿名的登录方式[6]。

IGS的FTP服务器上存放着海量的GNSS观测资料和最终产品,自IGS组织建立以来,GNSS相关数据的存储与分发就采用了一套高效的组织方式,其文件的名称和格式以及下载地址都具有一定的规则以方便查询和下载[7]。表1示出了常用的GNSS文件的命名方式以及下载地址,其中$gpsweek代表4位GPS周,$dow代表1位GPS周内天数,$year代表2位年份,$doy代表3位年积日,$month代表2位月份,$station代表IGS站点名,文件的命名规则是程序中对文件设置和判断的主要依据。

表1 常用的IGS产品的命名方式以及下载地址

2自动下载程序设计

2.1软件的设计流程及启动

本软件的主要功能为实现IGS产品的定时下载和指定下载,下载指定目录下的文件并对用户输入的地址进行判断,对下载失败的文件实现重复下载,实现下载后文件的解压及存放,最后生成当天的下载日志,软件的设计流程如图1所示。

图1 软件设计流程图

该软件设计功能之一为方便用户及时下载数据,为了防止用户启动计算机或者服务器后不能及时启动软件导致文件下载失败,同时又不影响正常工作,将软件设置为开机自动启动并自动隐藏窗口。软件的自动启动通过修改注册表启动项实现,具体命令如下:

RegistryKey hklm=Registry.LocalMachine;

RegistryKey software=hklm.CreateSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun");

software.SetValue("自动下载服务",(object)AppPath);

添加开机自动启动后,开启计算机后在状态栏就会出现自动下载软件的快速启动图标,同时为快速启动图标添加停止服务、开启服务、退出等选项,方便用户在不打开软件界面的情况下快捷地执行相应的操作。

2.2文件的配置与存放

不同的IGS产品下载地址、命名格式、更新周期等各不相同,这就需要用户根据需要对下载的文件进行必要的了解后,分别进行配置。由于每个文件的发布都有或多或少的延迟,用户在配置完文件之后还要根据自身需要对数据的下载日期以及文件每天的下载时间来进行设置。有些文件没有严格规律的发布周期,进行下载时会遇到文件还没发布的情况,这就需要将没能成功下载到的文件记录到待下载列表中,进行下一次下载时自动读取该列表并进行下载。

文件下载后存放到以年积日命名的文件夹中,并自动完成解压,在下载大量数据时,可以通过配置服务器后直接完成下载数据的入库。

2.3下载指定日期数据

用户安装该软件之后,软件正常运行的情况下能完成对应日期所有文件的下载,但是软件、计算机等运行异常等情况下文件下载失败,或者用户需要一段较长时间内所有的某种文件进行分析,以上功能难以满足要求。针对以上不足,增加下载指定日期文件功能,实现下载单天或者连续几天的文件。

2.4生成日志文件

每天的下载任务完成后生成对应的日志文件,文件按照下载日期对应的年月日来命名,方便用户更加直观地查看对应日期下载文件的状态信息。

3自动下载程序实现

IGS产品自动下载软件通过C#语言编写,开发在Visual Studio 2010下进行,开发框架为NET Framework 4.0。C#非常适合界面的开发,而且对于大批量文件的编辑、处理和存储路径的选择拥有极为便利的方法[8]。软件采用了程序模块化设计的思想,每个模块都具有高内聚性,模块间通过参数进行交互,模块化的设计降低了程序执行出错率和代码占有空间,提高了程序可靠性和代码复用率及可维护性,延长了程序生命周期,并且能够非常方便的对程序进行升级,软件的主界面如图2所示[9]。

图2 软件主界面

图2示出了未进行下载服务时的界面,此时“开始服务”的按键是灰色的,状态栏显示为“数据下载服务空闲”,当下载进行时状态栏显示为“数据下载服务正在下载数据…”,方便查看软件运行状态。下载数据列表中的信息设计为用户根据需要自主添加、编辑或者删除。主界面右侧的“添加”和“编辑”对应下载数据设置窗体,图3所示的即为下载精密星历(*.sp3)时需要进行的相关设置,文本框有多个选项供用户选择,根据IGS产品的命名规则,主要设置有年积日、GPS周、两位年份、周内天数等,每个选项两侧加入了“$”以便进行区分,在进行程序设计时通过读取文本框中的选项获得每个文件的下载地址、文件名等信息。用户对下载数据进行一次编辑后,数据信息都会记录到下载数据列表“datadown”中,以后每次下载都从该数据列表进行读取,无需重复编辑。由于通常用户登录IGS服务器都采用的是匿名账户,所以这里用户名和密码无需进行读取,但考虑到软件的普适性,增加了输入用户名和密码的功能。

选中下载数据列表中的任意一条数据信息都可以对该信息执行编辑或者删除,用户作出修改后,下载数据列表“datadown”中的信息也会相应地修改,从而在以后的文件下载中按照用户修改后的设置执行。

图3 编辑下载数据窗体

不同的IGS产品更新周期不同,都有或多或少的延后,例如,IGS及其分析中心提供的高精度卫星钟差改正信息一般要13天后才能获取[10]。用户在进行不同的数据处理时所需要的准备文件也不同,用户可以根据解算需要灵活设置下载数据的日期和每天的数据下载时间,例如,如图2所示,主界面设置的为下载7天前的数据,软件运行时就会将当前日期减去7得到所需下载数据对应的日期,在程序中再转换为相应的年份、年积日、GPS周等信息。当天的下载任务完成后可能会存在下载失败的情况,往往是由于网络状况不好或者当天的文件并没有发布等原因造成,此时将下载失败的文件信息保存到数据列表“waitdown”中,这样在进行下一次的数据下载时首先尝试下载前一天没成功下载的数据,如果下载完成,则从待下载表“waitdown”中删除,否则下一次继续下载。有些IGS站的数据由于某些特殊原因缺少某天或几天的数据,使得程序无法完成对这些文件的下载,这类连续下载多次都没有成功的文件将从待下载列表“waitdown”中删除[1]。此外,准备文件中有一部分文件是每天更新的而有些文件更新周期较长,例如,地球自转参数文件(*.erp)为每周更新,差分码偏差(*.DCB)为每月更新,软件为每天执行一次,此类文件如果每天下载必然会造成重复而且影响下载的效率,用户只需在进行下载数据设置时根据文件的发布周期设置下载周期,保证在每个发布周期内只下载一次[11]。

2.3中已经介绍,为了增加软件的灵活性,在程序设计时增加了下载指定日期数据的功能,此时用户可以使用主界面的“下载指定日期数据”,根据用户选择的日期立刻完成主界面下载数据列表中对应文件的下载,文件存放于当前路径下以年积日命名的文件夹中并完成解压。

4下载实例

为了对软件的运行情况进行测试,对2015年9月份表1中列出的文件进行了下载实验,其中包括了bjfs、chan、daej、shao、suwn、wuhn共6个IGS站的实测数据,下载13个文件。程序中固定设置,按周更新的文件在每周的周日下载上周数据,按月更新的文件在下个月的“第一天”下载上月数据;界面设置为每天的18点定时下载15天前的数据。

由于下载天数较多,选择有代表性的两天2015年9月16日和9月21日的结果来进行检验,图4示出了下载日志,下载的文件所对应日期分别为2015年9月1日和9月6日。从下载日志中可以看出:9月1日完成了按月发布文件(*.DCB)的下载,9月6日(周天)完成了按周发布文件的下载(*.erp);这两天shao、suwn和wuhn三个IGS站的观测数据部分没有成功下载,手动登录后发现是由于文件没有公布;图5中前面的多行信息是之前几天没有下载成功,从待下载列表“waitdown”中读取后重新下载的文件信息,下载失败也是由于IGS站的观测文件没有公布导致。

图4 2015年9月16日下载日志和   2015年9月22日下载日志

5结束语

针对传统IGS产品下载方式操作繁琐且效率低下的缺点,以及目前已有下载方法的不足,在Windows操作系统下,利用C#语言,根据IGS产品在FTP服务器上存放的规律性,设计完成了IGS产品的批量、自动、定时下载软件。软件适合下载需要连续且及时更新的文件,在一次设置之后不需再进行任何操作,可以为CORS数据处理中心等部门提供相关服务。软件界面快捷、便于用户操作,可以减少相关人员的工作量和失误率,同时考虑了多种用户的需要,功能灵活,具有很强的普适性和扩展性。

IGS产品自动下载软件实现了文件的批量、自动、定时下载,但是要成为一个功能全面的工具还有很多功能需要完善,例如,对于不同文件每个周期内的下载时间还没有实现用户自定义,文件下载失败原因没能在日志中体现出来,需要在后续工作中不断改进。

参考文献

[1] 李建虎.Shell程序自动下载IGS站数据的实现[J].测绘信息与工程,2009,34(1):9-11.

[2] 李峰,阳凡林,李云伟,等.基于Bernese5.0的GPS数据的自动下载与处理[J].矿山测量,2010(6):27-30.

[3] DOW J M,NEILAN R E,RIZOS C. The international GNSS service in a changing landscape of global navigation satellite systems[J].Journal of Geodesy,2009,83(3):191-198.

[4] 李征航,黄劲松.GPS测量与数据处理[M].2版.武汉:武汉大学出版社,2010.

[5] 魏娜,施闯,李敏,等.IGS产品的一致性分析及评价[J].武汉大学学报·信息科学版,2010,34(11):1363-1367.

[6] 朱琳,张慧君,李孝辉.基于Lab Windows/CVI的IGS实时数据自动下载软件开发[J].宇航计测技术,2012,32(3):25-30.

[7] 匡翠林,谢荣安,王艳涛,等.IGS数据批量自动下载软件设计与实现[J].工程勘察,2013(7):72-75.

[8] 张凯华,郭金运,胡志博,等.Fortran与C#混合编程在卫星测高中的应用[J].计算机技术与发展,2014,24(5):48-52.

[9] 周峰,王征,李永.C#典型模块开发[M].北京:中国铁道出版社,2010.

[10]潘绍林,张显云,杜宁,等.基于灰色系统模型的IGS精密钟差预报[J].测绘工程,2015,24(4):20-24.

[11]蒋泽斌,陈义.基于Bash的GAMIT准备文件自动下载[J].测绘与空间地理信息,2014,37(11):50-52.

刘智敏(1975-) 女,河北唐山人,博士,副教授,主要从事GNSS定位理论技术及其应用。

黄超(1991-) 男,山东潍坊人,硕士生,主要从事GNSS数据处理研究。

窦世标(1990-) 男,山东菏泽人,硕士生,主要从事GNSS数据处理研究。

张海平(1977-) 男,山东五莲人,主要从事CORS管理工作。

冯彦同(1986-) 男,硕士生,主要从事网络RTK算法、GNSS数据处理及其理论研究。

Software Design and Implementation for IGS Products Batch, Timing and Automatic Download

LIU Zhimin1,2,HUANG Chao1,DOU Shibiao1,ZHANG Haiping3,FENG Yantong3

(1.GeomaticsCollege,ShandongUniversityofScienceandTechnology,Qingdao266590,China;2.KeyLaboratoryofGeomaticsandDigitalTechnology,Qingdao266590,China;3.ShandongProvincialInstituteofLandSurveyingandMapping,2301JingshiRoad,Jinan250102,China)

Abstract: With the development of GNSS and the continuous improvement of IGS, IGS products are more precise and widely used. Users’ requirements are also growing, and downloading GNSS products happened frequently. IGS via File Transfer Protocol service release their products. Artificial download is cumbersome, time-consuming and error-prone. In this paper, a software is designed to download products of IGS by using C#, achieving batch timing and automatic downloading. It helps to reduce the burden of the staff, improve work efficiency, download the file timely and reduce the probability of errors occurring. By successfully downloading files of different types and cycles that released in September 2015, it can be confirmed the feasibility of this software on downloading IGS products.

Keywords:IGS products; timing download; FTP service

doi:10.13442/j.gnss.1008-9268.2016.02.022

收稿日期:2015-11-03

中图分类号:P228.4

文献标志码:B

文章编号:1008-9268(2016)02-0110-05

作者简介

资助项目: 国家自然科学基金(批准号:41374009); 青岛博士后基金(基于CORS的精密定位算法关键问题研究); 山东省高校海洋测绘重点实验室开放基金(编号:2013B04)

联系人: 黄超 E-mail: ch_huangchao@163.com