李航 侯忠新 王宜明 青岛市气象局,山东 青岛 266003
气象特种观测资料处理系统的设计
李航 侯忠新 王宜明 青岛市气象局,山东 青岛 266003
气象特种观测资料具有数据量大,资料来源多样、资料格式复杂等特点。为了使特种观测资料得到及时有效地利用,采用模块化的设计方法,将各类气象特种观测资料进行整编入库,进行数据的持久化管理,并开发基于web的检索查询平台,提供方便快捷的资料查询功能。
气象特种观测;整编入库;检索查询
我国气象特种观测项目正在不断开展,特种观测数据也随之不断的积累。目前各个特种观测项目一般都带有自己的配套软件,数据格式多种多样,编码规范不尽相同。由于缺乏有效的数据管理,不利于气象特种观测资料的查询分析和应用。为此根据青岛市气象局目前开展的酸雨观测、紫外线观测、负离子观测和水泥地面温度观测等气象特种观测项目开发了气象特种观测资料处理系统,对各类气象特种观测资料进行整编入库和持久化管理,并采用b/s架构设计发布平台,供相关人员进行检索查询。
系统数据库采用SQLServer2000,并利用VB编程语言按模块分别为各类气象特种观测资料编写后台入库程序。
1.1 系统架构
系统架构及主要功能模块设计见图1。
图1 气象特种观测资料处理系统架构
1.2 数据库设计
图2 查询界面
图3 显示界面
数据库的设计充分考虑今后可扩展性和易维护性。主要包括8个数据表,分别为:酸雨数据表、紫外线数据表、负离子数据表、水泥地面温度数据表这四个气象特种观测项目的站点属性信息表。站点属性表存放站点属性信息,如站号、站名、经纬度以及传感器的相关信息等,数据表存放气象特种观测数据,根据观测项目的不同划分了相应的字段。以酸雨数据表为例,包括降水的起始终止日期、ph值、电导率、降水量、温度、风速风向等实时观测数据,表之间的设计符合第三范式,减少了数据冗余。
表1是具体的表结构范例,其中标题为字段中文名称;字段名称为字段英文名称;类型为字段数据类型;大小为字段的长度(精度);非空表示该字段可否有空值;对于自动增长的字段,或系统内部处理的字段,标注只读(R)。
表1 酸雨数据表(sydata)
1.3 数据整合及入库
气象特种观测资料的原始数据大都存放在各类文本文件中,需要对这些文本文件进行分析、编制程序导出需要的数据资料并进行定时入库操作。采用基于VB和ADO数据库接入技术开发自动、实时入库模块,对不同数据来源和数据格式进行处理,转换成设计好的数据格式入库。该模式定时自动启动运行,保证数据的实时入库。
以酸雨观测数据为例。酸雨观测数据文件每月一份,存放本月所有降水的酸雨观测数据。打开文件,取出该月的所有降水记录,找到各条记录中所需的字段如降水的起始终止日期、ph值、电导率、降水量、温度、风速风向等,通过VB字符串函数的处理将其剥离出来,再对这些按气象规范定义所记录的特殊字符代码按照各自的转换公式进行处理,将其转换成常见观测要素数值。
入库操作利用了A D O组件中的Recordset对象进行处理。将每条记录时间先与当前时间进行比较,若大于当前时间,说明数据有误,丢掉不用直接进入下一条记录处理。若小于当前时间,再与库中的记录进行比较,如果比最新一次入库的时间大,说明是新纪录,则直接入库,然后进行下一条记录的判断。如果比最新一次的入库的时间小,则说明该条记录已经入过库,丢掉不用,然后进行下一条记录的判断,直至该月全部记录入库。
资料处理过程在后台定时自动执行,以保证系统数据库内的数据与最新观测到的数据同步。
2.1 平台功能设计
平台按照气象特种观测资料的种类分成了四个部分:水泥地面温度观测,负离子观测,紫外线观测和酸雨观测。各类资料按资料内容提供不同的查询条件接口。条件查询的功能非常丰富,除了可以选择时间段查询记录之外,还可以按照设定的观测资料的要素条件筛选出符合需求的记录。通过查询界面(图2)进行查询条件设定并进行查询操作便可以在显示界面(图3)显示出所需的特种观测资料。
2.2 检索查询及显示设计方法
图4 检索查询显示流程图
平台采用基于Java的Jsp+Servlet模式,检索查询显示流程图见图4。采用MVC三层的逻辑架构,其中M为 Module,应用对象,将实际的业务对象进行封装,使之成为一个独立的逻辑对象,并包含实际业务对象的诸多属性。V为View层,即展现给用户的交互页面。C为Control层,定义了用户界面对于用户输入的响应方式。以酸雨观测为例,一次将数据库酸雨观测表中的各字段封装成Module,实现了对其进行封装,该资料的每个属性都有相应的读取和写入操作。在以后的操作中,就可以以Module为单位,即酸雨观测表对象为单位来大批量、方便的传递酸雨观测资料数据。
View层主要作用是“用户交互”,即接收用的指令并根据指令来进行内部操作后将结果反馈给用户。其间需要进行安全性检查,例如在某些期望输入数值的部分由于用户误操作输入了字符而导致程序运行异常。因此需要在该有期望部分增加安全检查机制。
在程序内部,用户提交请求后由Control层来接管用户请求,进行后续操作,具体则是由Servlet来完成具体工作,Servlet运行于服务器端,具体工作流程是对请求的Web页的各个字段的值(value)进行接收,并进行相关的转化和必要的检查。进行完上述操作和检查后,Servlet即可来根据提交的各种选择条件来拼出SQL语句。
在进行查询数据库操作方面,本系统采用了比较先进的“连接池”来提供与数据库的连接服务。该解决方案是在应用程序启动时建立足够多的数据库连接,并将这些连接组成一个连接池,由应用程序动态的对池中的连接进行申请、使用和释放。对多于连接池中连接数的并发请求,应在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。该技术尽可能的重用了消耗内存的资源,大大节省了内存,提高了服务器的服务效率,从而能够提供更快的响应和支持更多的并发请求。
获取了数据库连接即可对数据库进行操作,查询结果按照酸雨资料的Module进行数据封装,最后显示到用户面前。
随着国家现代化建设对气象需求的不断增长,气象特种观测项目也将越来越多。本系统通过建设数据库和Web发布平台,可以对目前青岛市气象局开展的气象特种观测项目资料整编入库并实现灵活方便的检索查询功能,这对于气象特种观测资料更好地应用于城市环境服务具有重要意义。本系统目前已经处于业务运行阶段,但是还有许多需要改进的地方,例如完善数据安全性检查、为数据查询语句编写存储过程来提高程序应用效率以及提供更友好的扩展功能接口,增加新的特种观测项目如沙尘暴观测等。
[1]中国气象局.酸雨观测业务规范[S].北京:气象出版社,2005;27~77
[2]飞思科技产品研发中心. JSP 教程. 北京:电子工业出版社,2002;231 ~293
10.3969/j.issn.1001-8972.2011.24.004
李航 青岛市气象局 工程师 工程硕士。