2. 中国河北 050224 黄壁庄地震台
2. Huangbizhuang Seismic Station, Hebei Province 050224, China
FHD质子磁力仪是由江苏省地震局在“九五”期间为分析记录地磁场变化而研发的智能化分量质子磁力仪, 具有测量精度高、数字化程度高的特点(夏忠,2002),截至2016年,中国地震台站共配备FHD仪器84套,其中河北省9套,且均为新型FHD-2B型质子磁力仪。
FHD质子磁力仪投入运行后,诸多科研人员尝试分析处理地磁观测数据,其中曹志磊等(2010)完成“FHD质子磁力仪数据预处理及月报制作软件”。此外,为更好分析地磁整点值变化趋势与地震前兆的关系,河北省地震局要求配备FHD-2B型质子磁力仪(以下简称FHD)的地震台站每月需按照地磁学科组指定内容格式提交4个分量整点值月报文件,供分析人员使用。对此,河北省地震局开发一款FHD月报生成软件,可以生成4个Excel格式的分量整点值月报文件。每个分量整点值月报均包含该分量一个月的整点值,并包括一幅由软件生成的月整点值曲线图。
原有地磁月报软件可生成符合地磁学科组要求的月报文件,但功能不完备,需要手动筛选并编辑各分量数据及文件,利用软件逐一生成各分量月报。产出文件需手动调整曲线图位置及单元格大小,所用时间较长。
从工作需求出发,笔者编制一款可快速生成FHD月报的软件。基于C#语言编程,采用Visual Studio平台,完成新月报生成软件开发。新增加地震台站信息编辑、信息错误检查等功能,同时改善月报生成功能,利用新软件完成月报自动快速动生成,仅需十几秒。新月报生成软件满足健壮性要求且运行稳定,目前已在河北省多个地磁台站应用。
1 文件格式FHD作为分钟采样仪器,为科学研究提供丰富的原始数据,通过中国地震前兆台网数据处理系统软件可产出如整点值、时均值、日均值、K指数等产品数据,并可导出为Excel文件。整点值月报编制,即利用从地震前兆数据处理系统中导出1个月的整点值Excel文件(下文简称原始文件)。为生成4个分量的Excel格式的整点值月报文件(下文简称产出文件),软件设计必须基于原始文件及产出文件的内容格式。同时,为满足使用者对软件效率性、易用性及可靠性的需求,软件应满足使用简单、生成月报效率高及健壮性强的特点。
1.1 原始文件格式图 1为从地震前兆处理系统导出的整点值Excel文件,包含4个分量1个月的整点值,共6列数据,其中产生月报用到的列为STARTDATE、STATIONID、ITEMID及OBSVALUE,分别代表日期、台站代码、分量代码及24小时整点值,某一分量的24个整点值是以空格为间隔存储在OBSVALUE单元格内。以2014年9月的原始文件为例,从图 1方框内STARTDATE的信息可以看出,这4行数据为9月1日整点值信息。第1行ITEMID为Z(垂直分量)整点值信息,在OBSVALUE存放垂直分量以空格为间隔的24个整点值,H、D、F分量整点值也存放在对应行的OBSVALUE中。
图 2为4分量中总强度整点值月报表,其他3个分量具有相同内容格式的月报表文件。在分量整点值月报表中,列表示0点至23点的整点值,每一个整点值占用一个单元格,行表示日期,最后一列为一天整点值的平均值。曲线图中横坐标为日期,坐标轴以天为间隔;纵坐标为该分量的值,坐标轴标明值的最大值、最小值及平均值。
为提高月报生成效率,新月报生成软件主要有3个功能需求,即生成月报、错误检查及台站信息编辑功能(图 3)。
(1)月报生成功能。原始文件经软件检测后信息正确、数据完整,自动产生4个分量的月报文件,且月报文件无需再次修改,可直接进行上报。该功能需保证生成月报的快速性及可靠性,即一键生成月报。
(2)错误检查功能。对软件界面内输入信息与原始文件信息进行比较,当信息不一致(日期选择信息错误及文件内整点值不全)时进行提示。
(3)台站信息编辑功能。对省份、仪器类型、台站名称、制表人及复核人信息增补增加、修改和删除功能,并写入月报文件。首次使用软件,在台站信息管理中添加台站信息,并存入本地数据库文件,以后直接使用即可,无需手动填写信息。
3 软件工作流程及难点解析 3.1 软件流程检查原始文件,当文件信息一致、数据完整时,读取文件信息及数据绘制整点值曲线图,生成各分量整点值月报。软件流程见图 4。
对Excel的操作是软件编写首要面对问题,难点主要体现在数据筛选及重新编排上,因为原始与产出文件的内容格式固定,对Excel操作必须一一对应,并考虑COM组件的兼容性,查阅文献并不断测试,认为软件兼容性满足需求。
软件的另一难点是绘图,因为产出文件的曲线图格式固定,要求曲线图大小、坐标轴格式、曲线颜色等细节必须与原软件一致。通过不断尝试,新旧软件所绘制曲线图保持一致,即可保证月报文件的一致性。
4 功能实现 4.1 实现方式(1)月报生成功能操作对象是Excel文件。在实际编程中,通过在项目中引用Excel的COM组件来实现对Excel的操作。通过以下代码,使得对Excel的操作转换成对内存中Excel对象的操作。
var excelApp = new Excel.Application(); //Excel应用程序本身
Excel.Workbook xBook = excelApp.Application.Workbooks.Open(ExcelFilePath);
//打开Excel工作簿
Excel.Worksheet xSheet = (Excel.Worksheet)xBook.Sheets[1];//Excel工作表对象
Excel.Range excelRange = xSheet.UsedRange; //Excel中使用的区域对象
(2)错误检查功能主要实现日期及数据完整性校验。在原始文件中,每行数据对应一个STARTDATE,若某个日期数据不存在,则STARTDATE中对应日期也不存在。将待生成月报日期信息与原始文件的STARTDATE进行比较,二者不一致时进行提示。这样,数据校验转换成对原始文件中STARTDATE的校验。利用LINQ语句,可得到缺失数据日期,即可完成数据完整性检验(图 5)。
部分代码如下
List<string>list = new List<string>(Mdays); // Excel文件中包含的STARTDATE集合
List<string>list2 = new List<string>(Ndays); //某月应有的所有的STARTDATE集合
List<string>list3 = list2.Except(list).ToList(); //Excel文件中缺失的STARTDATE
(3)台站信息编辑功能通过在软件中与本地数据库文件进行绑定而实现。在本地数据库文件中建立一个台站信息表(表 1)用于存放台站信息,绑定后的数据库信息,可通过软件中的台站编辑界面进行修改,并与数据库文件同步。台站信息编辑界面见图 6。
新旧月报软件功能对比见表 2,可知新月报软件功能齐全、性能优良、操作简单、容错性好,适合快速生成FHD月报。
使用原月报程序进行月报生成需要大量手动操作。手动筛选原始文件4分量,粘贴到一个临时txt文件,在每个整点值间添加逗号,并调整生成月报的曲线图位置(4分量需进行相同操作),不能快速生成月报,即使操作熟练,也需要10 min左右。而新FHD月报程序,在原始文件下载后十几秒内即可生成月报,无需调整曲线图即可进行月报上报。
4.3 月报生成实例以生成2014年9月月报为例,在地震前兆数据处理系统中导出9月整点值文件至桌面,并命名为201409.xls(文件实际导出位置及名称可任意设置)。打开月报生成软件,点击“浏览”弹出文件选择界面,选中201409.xls文件并确定返回主界面,首次使用需点击“台站信息管理”编辑台站信息,保存并返回主界面,再次使用无需编辑,软件自动将信息填写在主界面对应位置。确认台站信息正确后,点击“生成月报”,等待十几秒,4个分量月报文件通过软件内COM组件在指定文件夹(默认为月报程序所在文件夹,可自行设定)下生成。
5 结束语FHD质子磁力仪月报快速生成软件通过引用Excel的COM组件,实现对整点值原始文件的读取。采用内置算法,结合LINQ技术,实现对原始文件内4个分量整点值数据的整合、分类及检查等操作。利用GDI技术,实现整点值曲线图生成及格式调整。应用线程技术,实现同时生成4个分量的月报文件。该月报快速生成软件可对原始文件数据的完整性和格式规范进行纠错,保证月报生成的准确性;新增加的台站信息编辑功能,可简化生成月报过程;一键生成月报功能,将月报生成时间缩短至十几秒。FHD月报快速生成软件部署简单,可直接拷贝到工作电脑上,方便台站使用,自2014年编制以来,已经在丰宁、承德等台站应用,运行稳定,未收到软件运行出错反馈。
曹志磊, 周琼, 张有林, 等. FHD质子磁力仪数据预处理及月报编制软件[J]. 地震地磁观测与研究, 2010, 31(2): 131-134. | |
邓永海, 邓梅, 李朝荣. ASP.NET中将EXCEL导入数据库的通用模块设计与实现[J]. 微计算机信息, 2011, 27(2): 240-242. | |
刘瑞, 温家洪. 基于C#.NET与Excel的灾害数据采集系统开发[J]. 测绘与空间地理信息, 2012, 35(2): 38-41. | |
柳盛, 王东明. 基于C#的Excel报表自动生成[J]. 科技信息, 2008(7): 4 | |
夏忠, 冯志生, 稽才建, 等. FHD-1型质子磁力仪的改进与完善[J]. 地震学刊, 2002, 22(2): 28-31. | |
Skeet J著. 周靖, 朱永光, 姚琪琳, 译. 深入理解C#[M]. 北京: 人民邮电出版社, 2014. |