山西省气象资料数据库管理系统的设计与实现
2015-11-28樊玮,高玮
樊 玮,高 玮
(山西省气象信息中心,山西 太原 030006)
随着气象科学技术的飞速发展,气象观测资料及各类预报产品数据种类日益增多。为了满足预报、决策服务等相关部门的需要,我们急需建立一套完善的网络管理、查询全省气象资料中各类观测要素的查询系统,将现有的各类数据库中全省观测站每小时发送的各类气象资料中各观测要素,例如:全省各台站观测资料的入库时间、纬度、经度、海拔高度、以及温度、湿度、降水量、风速等各类气象观测要素以WEB网页的形式在气象内部Internet 网络上实现查询、统计。动态实时地提供及时、准确可靠的各类气象观测资料各要素数据信息。并实现对全省各台站各类观测资料入库统计,实现对数据库中各类气象资料要素的充分利用,满足用户对数据库中各类气象要素查询、统计。还可以以表格、统计图表、grads 软件绘制出色斑图等多种形式输出查询结果,便于相关业务部门人员以及地市、县观测站工作人员查询气象资料各要素情况。
1 系统总体设计
气象资料数据库管理系统是支持全省气象业务内部、外部科研开发人员工作的气象资料查询平台,可对全省各级台站各类气象要素进行收集、处理、分发的存储管理及查询等多功能的应用系统。该网站搭建在VS2010 上,采用asp.net框架下用C#语言进行编程,数据库采用了历史数据库SQL SERVER 数据库。实时数据采集自Oracle 数据库,前台采用jquery,highcharts 等插件编制的气象要素查询网页。
1.1 系统框架
系统采用四层架构,包括:数据层、应用支持层、业务层、表示层。数据层采用微软的sqlhelper 连接数据库,数据库包括了实时数据库、历史数据库、元数据库信息,还有各类气象资料图片数据。应用支持层包括对用户的管理、用户权限设置、日志管理、数据管理。业务层主要是气象要素查询的功能模块,包含查询各功能模块所用的函数。所有逻辑查询语句都以存储过程的形式写在数据库中。如图1 系统架构图。
图1 系统架构图
1.2 系统功能设计
根据我省的实际需求,本系统设计要实现以下几项功能:数据管理(数据加工、数据存储、数据输出)、元数据服务(元数据发布、元数据检索、元数据建库)[2]、数据服务(数据发布、数据查询、数据分发)、扩展服务(专题服务、数据挖掘、科学论坛)、系统管理功能(用户管理、安全管理、运行监控),具体功能结构图如图2 所示。
图2 功能结构图
1.3 数据库设计
山西省气象信息中心现有实时数据库一个,历史数据库两个。数据库内容及结构均有所不同,且DBMS 也不同。实时库为oracle 数据库,存有各种由北京下发的实时气象资料。历史库一个为SYBASE 数据库,存放的是地面气候月报表资料,包括每日3 次或4 次的定时观测值;另一个为SQL Server 数据库,存放的是全省109 站建站以来的地面气候资料定时值、日值、旬值、月值、年值资料,以及109 站从1991年开始的逐时自记风、自记降水资料和2004 年开始陆续建立的多要素自动站资料。这些资料经过多次格式检查和质量控制,准确性及可靠性高。因此,新建立的数据库服务系统就必须是具备跨平台、可重用、灵活性及伸缩性强的特点[3]。同时,气象信息中心作为全省气象数据收集、处理、管理中心,数据库系统还承担着不同部门及领导的不同需求的查询和管理功能。也就是说,这个数据库系统是异质的,目前大部分对这种异质要求的解决方式是分布式系统的3 层或者多层架构技术[3]。
2 系统界面的实现
2.1 系统主界面的实现
系统主要分为以下功能模块:首页显示,包含了实时气象要素的山西省地图GIS 显示模块,历史上的天气情况显示模块、历史极值排列显示模块。温度要素查询模块、降水量查询模块、风要素查询模块等各类气象要素查询模块,后台管理模块。各气象要素模块下又包含各类要素的子模块。如图4 所示。
图4 系统查询功能模块
系统主界面上山西省地图区域部分是用sharpmap 开源dll 来实现地理数据的简单显示。它链接的数据库是oracle实时数据库。数据访问层借助微软已封装好的sqlhelper 工具链接数据库。
2.2 数据查询功能
数据查询,也就是从数据库中查询用户所需求的各类气象数据信息,而查询条件的设定是衡量程序好坏的一个重要标准[4]。在设计程序时要充分考虑设计满足用户需求的各种查询条件及在各种条件下显示的查询结果,并根据不同条件设定不同的窗体控件,以便于条件的选择和设定。该系统提供了台站查询、气象要素查询、时段查询、条件查询、对比查询等多种查询功能。查询结果可以以表格、曲线图形等多种方式显示出来,供相关业务人员查询。
在气象资料数据库查询系统页面中可以查询以下气象要素:
温度查询、降水查询、风要素查询、相对湿度查询、气压查询、日照查询、元数据查询[2]、综合条件查询等模块。
例如:在温度查询页面中显示有以下查询要素:
逐日气温查询——包括最高气温、平均气温和最低气温逐日查询。每项查询根据条件查询最高(低、平均)温度、累年值、距平、历年同期值及年份,点击年份后面图标可以查看该站历史同期的温度数据。
时段气温查询——包括最高气温、平均气温和最低气温一年内时段查询。每项查询根据条件查询时间段最高(低、平均)温度、累年值、距平,点击历史同期栏图标可以查看该站历史同期的温度数据。
极端时间点气温排位查询——包括历史极端气温、任意年极端气温、任意月温度查询、任意月极端气温排位查询、某月某日极端气温、某年某月某日极端气温查询。
历史极端气温——直接查询历年的最高(低)温度。
任意年极端气温——查询某年最高(低)温度、出现日期及历年最值、出现日期、历史排位。并且可以根据温度阀值控制显示数据。
任意月温度查询——根据年月可以选择查询月温度要素值。并点击极端高温和极端低温查看历年同月的极端值。
任意月极端气温排位查询——根据年月查询该年月的最高(低)气温及出现时间、历史排位。并且可以根据温度阀值控制显示数据。
某月某日极端气温——根据条件查询某月某日的历年最高(低)温度及出现年份。
某年某月某日极端气温查询——查询某日最高(低)温度、历年最(低)温度及出现日期、历史排位。并且可以根据温度阀值控制显示数据。
链接数据库代码:
数据访问层借助微软已封装好的sqlhelper 工具。Sqlhelper 数据访问层省去了大量代码,可以把数据访问层封装起来,使用起来较为方便。链接数据库代码如下:
其他气象要素查询在此就不做详细介绍。
3 结论
本系统的实现,实现了多种气象要素的可视化查询。用户通过良好的界面,能够快速检索气象数据的空间分布情况,为用户提供了气象资料查询利用。采用了分层结构进行设计,提高了系统的伸缩性和可靠性,便于日后根据业务实际需要进行功能扩充和系统的优化。系统实现统一的用户管理、统一的资源管理、统一的授权管理及统一的用户界面,提高了工作效率。
[1]王建一,邹丽君,周永吉.地面气象要素数据库终端查询系统[J].黑龙江气象,2003(4):37-38.
[2]李集明,沈文海.气象信息共享平台及其关键技术研究[J].应用气象学报,2006,17(5):621-628.
[3]何彬方,杨太明.省级农业气象数据库及管理系统的设计与实现[J].中国农学通报,2009,25(24):520-524.
[4]易列刚,杨玲.基于C/S 和B/S 模式的气象资料检索系统的设计与实现[G].2009 年高原山地气象研究西南区域气象学术交流会,2009:573-577.