气象数据文件异机备份程序浅析
2011-06-14颜庭柏
姚 迪,颜庭柏
1.南京市六合区气象局,江苏 南京 211500
2.南京市气象局,江苏 南京 210008
0 引言
伴随国民经济与科技水平的快速发展,气象现代化设备越来越多的投入到业务日常运行之中。目前,气象系统观测仪器多为自动观测,每种设备相对独立,并分别生成气象数据文件。气象数据文件作为观测成果对于气象研究具有极其重要的科学价值。为便于统一存储、保证气象数据文件获取的完整性与连贯性,避免因断电、观测设备故障等原因造成数据丢失,有必要将各种气象数据文件进行集中管理。因此,实现异机备份气象数据文件是非常有必要的。同时,因气象数据文件存在多样性、时效性等特点,市场上诸多应用程序对于备份气象数据文件并不适用,无法满足气象部门对于备份文件的特殊要求。相比较而言,由气象部门工作人员自身开发异机备份程序,针对性则更强,更贴近需求,所开发程序通常具有灵活、高效的优点。
1 指导思想
异机备份气象数据文件,可以最大限度的保证数据文件的存储安全性,实现与原机存储的双重保险。通过简单的批处理命令,使用CMD命令处理器逐条解释执行,可在DOS环境下实现对气象数据文件的异机备份,如若保存多种气象数据文件,则运转周期长,效率明显降低,并缺乏交互能力,灵活性及可扩展性不强。因此,有必要引入高一级程序语言来实现异机备份气象数据文件的要求。
C#(C sharp)语言是微软(Microsoft)公司为.NET Framework量身订做的程序语言,C#拥有C/C++的强大功能以及Visual Basic简易易用的特性,是第一个组件导向(Component-oriented)的程序语言,和C++与Java一样亦为对象导向(object-oriented)程序语言。综上,C#是一种安全的、稳定的、简单的、优雅的编程语言,它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,因其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持,具有极高的使用价值。
在明确所使用的程序语言之后,我们需对实现思路展开梳理。本文仅以一般气象台站常有的EN风仪数据文件及自动气象站B和采集数据文件为例进行说明:
1)了解气象数据文件结构并对文件格式进行定义:EN风仪数据文件每日生成FA与DF两种数据文件,B和采集数据文件则包含有B、Z、P、T、U、W、R共计7种文件。经过总结,我们可简单理解为上述文件格式分别为FAyyMM.dat、DFyyMM.dat、BIIiiiMM.0yy、ZIIiiiMM.0yy、PIIiiiMM.0yy、TIIiiiMM.0yy、UIIiiiMM.0yy、WIIiiiMM.0yy、RIIiiiMM.0yy,其中 IIiii为台站区站号、MM为月份、yy为年份后两位。不难发现,对于EN风仪数据文件,我们可将其定义为“FA(DF)”+“yyMMM”+“.dat”;对于固定台站 ,其区站号不变,如六合气象站为“58235”,则B文件格式可固定为“B58235”+“MM.0yy”,其他采集数据文件格式依此类推。
2)确定C#程序实现方针并选用合适语句:本文仅针对简单异机气象数据文件备份,故以简单思路为之。经过多次验证,我们得出在保证原存储设备和目的存储设备内部时钟准确的基础上,以当前时间查找最新气象数据文件进行备份方法简单可行。因此,在C#中,需使用时间函数。
2 实现过程
首先,以EN风仪气象数据文件为例,需对“yyMM”进行赋值,有String FileStr = DateTime.Now.ToString("yyMM"),取出当前时间,如“1011”;其次,对文件格式进行描述,为FileStr = "FA(DF)" + FileStr + ".dat",这样,备份气象数据文件名被定义;然后,对原存储路径与目的存储路径分别进行确定,通过语句“System.IO.File.Copy”即可实现异机备份,注意的是,copy语句要求前后路径指向文件名,同时,在存储气象数据文件时,应使用“true”语句,以实现覆盖存储。对于自动气象站数据文件的备份,在EN风仪气象数据文件基础之上,只需对时间及文件名进行重新定义,便能嫁接过来实现异机气象数据文件备份了,程序举例如下:
String FileStr = DateTime.Now.ToString("MM.0yy"),
FileStr = "B58235" + FileStr,
String pathStr = "\\172.21.90.131\AwsSource\"+ FileStr,
String sourcePath = "F:\文件备份\"+ FileStr,
System.IO.File.Copy(pathStr, sourcePath, true),
MessageBox.Show("备份成功")。
3 改进与应用前景
应该说,我们设计的这套异机备份气象数据文件程序,通俗直观容易理解,思路清晰,实现方便,对基层台站具有较高的可操作性,各台站可通过“计划任务”,实现定时气象数据文件的异机备份。另一方面,该程序若进一步完善,引入读写程序方法、日志报错、失败再存储等功能,对于所需备份气象数据文件举一反三,扩展存储文件类型,就可以实现更为完善、实用的功能,也将具有更为宽阔的推广空间。
[1]http://baike.baidu.com/view/6590.htm.
[2]Karli Watson,Christian Nagel.C#入门经典[M].3版.北京:清华大学出版社.
[3]李文强.跟我学C#程序设计[M].北京:清华大学出版社.