符凤平,吴哲红,高如玉,何 伟
(贵州省安顺市气象局,贵州 安顺 561000)
安顺市暴雨个例数据库应用系统的设计与实现
符凤平,吴哲红,高如玉,何 伟
(贵州省安顺市气象局,贵州 安顺 561000)
基于省—地—县气象光纤通信网,采用B/S软件体系结构,建立安顺市暴雨个例数据库应用系统,实现安顺市暴雨天气个例档案、各种物理量及历史灾情的显示与查询、统计与输出等功能。系统基于Web方式,所有程序运行在服务器端,用户端不用安装任何程序,各部分功能设计均结合实际需求。自投入业务运行以来,在本地预报业务、气象服务、科研与管理等方面发挥了重要作用,已成为一个实用性较强的业务服务支撑系统,有效提高了灾害性天气保障能力。
暴雨个例;ASP;SQL Server数据库;物理量
目前,本地灾害性天气个例档案的存储管理主要采取人工方式,处理结果使用单一的文件格式进行存储,缺乏统一的管理与调控,数据共享程度较低,查询与统计效率不理想。以暴雨个例档案为例,2014年本单位预报人员对2009年以来安顺市暴雨天气个例档案做了归类存档工作,并以文件方式存放在服务器上,由于此项工作属多人完成,造成文件存放比较分散,查询资料不便,共享程度不高,不能充分发挥其使用效率。为解决这一现状,立足于预报业务、服务与管理的长远需求,建立一个属于安顺市的灾害性天气数据库应用系统,对于提高预报业务服务现代化水平具有较为重要的意义。本研究主要以暴雨灾害性天气个例档案为对象,实现基于B/S方式的暴雨个例资料自动化管理,提高灾害性天气历史数据的共享程度和利用效率,成为安顺市天气预报业务、气象服务、科研与管理等领域较为实用的一个系统。
2.1 主界面
系统主界面如图1所示。
图1 系统主界面Fig.1 The main interface of the system
2.2 技术方法
基于省—地—县气象光纤通信网和局域网,以32位Windows 7操作系统为开发平台,后台数据库设计采取手工录入和自动处理相结合的方式,通过对安顺市暴雨天气历史数据进行整理、分类,实现暴雨资料与发生灾情的自动入库。前端应用部分采用B/S工作方式,使用ASP开发环境、VBScript脚本语言(少部分功能使用JavaScrpit语言)、SQL Server数据库等技术,实现安顺市暴雨天气个例档案、各种物理量及历史灾情的显示与查询、统计与输出等功能,查询方式可按日期或站名等字段分别进行查询,查询结果可导入Excel表格文件,方便保存或打印。
2.3 数据库简介
采用SQL Server 数据库,数据库命名为baoyu,一共包含个例档案、假相当位温、冷空气特征、动力特征、暴雨灾情、水汽特征、热力特征、降雨实况、高低空急流特征等9张表,所有表内容均通过Excel文件导入,Excel文件内容为手工录入的历史暴雨资料与发生灾情。其中,“暴雨灾情”表主要存放1987—2005年安顺市暴雨灾情,其数据来源于安顺市民政部门,包含地名、日期、日雨量、天气现象、最大3 h雨量、连续降水最长持续时间、受灾人口、倒塌房屋等29个字段,其它8张表主要存放2009—2013年安顺市暴雨天气个例档案、各种物理量等信息,如表“个例档案”一共包含13个字段,其结构见表1。
表1 个例档案表结构
2.4 主要实现功能
2.4.1 暴雨历史个例查询
①降雨实况
分别实现按站名和日期查询降雨实况,其数据从数据库的降雨实况表中读取,该表主要包含08时前后24 h雨量、20时前后24 h雨量等4个字段。按站名查询主要实现自动查询某站在某个暴雨发生日的具体降雨实况。网页界面使用两个控件,左边控件显示站名,右边控件内容显示从数据库baoyu的降雨实况表中读取选取站名发生暴雨的所有日期。选择站名和日期后,即可查询某站的降雨实况,查询结果以表格方式在线显示,并可导出为Excel文件。按日期查询主要实现查询某日所有站的具体降雨实况。
②个例档案小结
实现按日期查询暴雨发生日的个例档案,如发生站数、影响系统、过程时间、过程站名、降雨量实况、天气过程概述、实况天气形势、数值预报天气形势、个例档案小结等资料。网页界面使用日期控件,其内容为暴雨发生的所有日期。选择好日期,点击确定后,即可查询该日的个例档案。图2为2009年5月17日的个例档案小结。
图2 2009年5月17日的个例档案小结Fig.2 The case file summary in may 17, 2009
2.4.2 关键物理量查询 实现按日期查询暴雨发生日的关键物理量值,物理量按照动力特征、水汽条件、高低空急流、冷空气特征、热力条件等进行分类,各自包含的物理量见表2。
表2 物理量分类
物理量的每一分类在数据库baoyu中都有一张对应表,如水汽条件对应的数据库表名为水汽特征。所有物理量读取方法基本相同,读取时次均为暴雨发生日当天、前后两天的08时和20时两个时次,仅仅是读取字段和高度层略有不同,如动力特征部分,主要读取暴雨发生日不同高度层的涡度、散度、垂直速度等物理量,高度层分为200 hPa、500 hPa、700 hPa、850 hPa等层次。水汽条件部分主要从数据库水汽特征表中,读取暴雨发生日500 hPa、700 hPa、850 hPa 3个高度层的贵阳比湿、贵阳温度露点差、水汽通量散度等物理量。高低空急流部分主要从数据库的高低空急流特征表中,读取暴雨发生日200 hPa、700 hPa、850 hPa 3个高度层的贵阳风向风速、最大风向风速。而冷空气特征部分主要从数据库的冷空气特征表中,读取暴雨发生日500 hPa的贵阳温度、兰州温度、贵阳兰州温度差、贵阳高度、福州高度、贵阳福州高度差,以及安顺、遵义、贵阳、毕节等站的变压变温值。热力条件部分从数据库的热力特征表中,读取暴雨发生日各站的K指数、SI指数、抬升指数LI、CAPE、对流抑制能量等物理量以及700 hPa和850 hPa两个高度的假相当位温值,读取的站名主要有威宁(56691)、昆明(56778)、怀化(57749)、贵阳(57816)、河池(59023)、白色(59211)等。图3为动力特征部分散度物理量查询显示界面。
图3 散度查询界面Fig.3 The display interface for scatter query
2.4.3 暴雨灾情查询
①按站名查询
使用两个列表控件,左边控件显示站名,右边控件显示具体日期。当在左边控件选择某站名时,则自动从数据库baoyu的暴雨灾情表中读取该站发生暴雨的所有日期,并显示在右边的列表控件中。选择好站名和日期,点击确定后后,查询结果以表格方式在线显示,并可导入Excel文件。图4为1987年7月2日安顺市暴雨灾情查询界面。
图4 按站名查询显示界面Fig.4 The query interface according to the station name
②按日期查询
使用列表控件,有序地显示1987年以来安顺发生暴雨的具体日期,其日期数据从数据库baoyu的暴雨灾情表中读取,查询语句为 “select distinct 日期 from 暴雨灾情 order by 日期”,实现日期按序排列并过滤掉重复记录[1]。当选择某日期时,则自动从数据库的暴雨灾情表中读取该日期发生暴雨的所有站名及部分字段情况,列表控件值的变化使用语句“onChange="javascript:location.href='zh_date.asp?rq0='+this.value"”及参数传递语句“request.QueryString("rq0")”获取其值[2]。暴雨灾情表包含29个字段,由于网页界面无法完整显示其全部字段内容,在表格最右边添加了“内容链接”进行对应灾情全部内容的显示链接,当点击此链接时,可在另一个界面中显示该日某站发生暴雨的所有情况,在此页界面,可以返回主界面,也可以将显示内容导入Excel文件。图5为1991年7月11日安顺市产生暴雨的站名及部分情况。
图5 按日期查询界面Fig.5 The query interface according to the date
3.1 将Excel表文件内容导入SQL Server数据库时,出现提示“对于所指定的缓冲区来讲太大”,造成数据导入失败[3]
3.1.1 问题分析 SQL Server数据库导入Excel表数据时主要工作流程如下:事先在SQL Server数据库中创建目标表,然后把Excel数据写入缓冲区,再把缓冲区数据写入目标表。此问题出现在创建目标表和写入缓冲区这两个环节,SQL Server会根据Excel文件中的数据格式写入缓冲区和创建目标表,比如Excel文件中有一列为编号,内容为数字类型,SQL Server就会在目标表里创建命名为“编号”的一列,其数据类型为float,而对于Excel文件中内容为文字的列,通常SQL Server会事先计算Excel文件中前8行该列的最大长度,如果这8行里某列的最大长度大于255,则目标列和缓冲区的数据类型就会建立成ntext型。如果Excel文件前8行文字列的长度都小于255,则目标表和缓冲区被建立为varchar类型(虽然目标表的字段类型可以修改,但缓冲区长度或类型无法修改),如果第8行以后某列长度超过了255,则SQL Server往缓冲区里写数据的时候,会提示“数据对于指定的缓冲区来讲太大”,造成数据导入失败。
3.1.2 处理方法 针对此现象,主要有以下3种处理方法:
①把某列内容较长的行移到Excel表的前第8行。
②修改注册表键值。SQL Server数据库导入Excel数据时,Jet引擎根据注册表中“TypeGuessRows”选项值代表的行数判断导入内容的数据类型,其默认值为8,SQL Server数据库根据前8行内容判断数据类型,将其修改成0后,SQL Server数据库则会对每行内容进行判断。具体操作步骤如下:
在注册表的“HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesExcel”下双击右边的“TypeGuessRows”选项,将“数值数据”改成0,然后重新启动计算机。
③事先将Excel数据导入到Access,然后再导入到SQL Server数据库。
为避免使用以上第2种方法可能会影响SQL Server数据库性能,以及使用第3种方法会延长将Excel数据导入SQL Server数据库所花费的时间,本研究使用第1种方法,将暴雨个例Excel数据文件中内容较长的行移到Excel表的前8行后,在SQL Server数据库中成功导入Excel数据时,未再产生此错误提示。
3.2 日期格式问题[4]
正常情况下,SQL Server数据库中的日期字段通过网页显示时应为YYYY-MM-DD格式,如果显示为YYYY/M/D格式,可通过以下两种方法解决:①在控制面板—日期时间格式中修改短日期格式;②修改注册表键值,具体操作步骤如下:将注册表“HKEY_USERS。DEFAULTControl PanelInternational”中的sDate键值改为“-”,sShortDate键值改为“yyyy-MM-dd”,然后重启计算机即可。
3.3 前端网页显示时,有的字段为NULL
在将SQL Serve数据库内容进行前端网页显示时,有的字段显示内容为NULL。检查SQL Server表内容发现,导入Excel数据后,有的内容为空,说明导入时个别数据未成功导入。检查Excel文件,将其显示内容为NULL的单元格格式与SQL Server表字段数据类型修改为一致后,网页端显示恢复正常。
系统本着业务需要而设计,利用较为分散的暴雨历史资料,基于B/S方式,通过对安顺市暴雨灾害性天气个例档案的整理分类,结合预报业务、服务与管理需求,建立一个基于Web方式的暴雨天气个例数据库应用系统,最终实现对安顺市暴雨天气个例档案、各种物理量及历史灾情的显示与查询、统计与输出等功能。系统开发完成后,可扩充运用于对其它类型灾害性天气如冰雹、干旱、大雾等个例档案的数据库应用研究。自投入业务应用以来,系统运行稳定,数据准确无误,尤其在预报业务方面发挥了重要作用,便于业务人员及时了解与查询本地暴雨天气个例历史情况,对提高暴雨天气预报质量起到有效的促进作用,较大地满足了预报业务服务和管理需求。
[1] 符凤平,吴哲红,高如玉.精细化预报的自动检验与技巧评分系统[J].贵州气象,2015,39(5):14-18.
[2] 罗锐韧.ASP网页程序设计[M].北京:清华大学出版社,2005.
[3] http://www.cnblogs.com/emanlee/archive/2009/07/28/1532878.html.
[4] http://blog.sina.com.cn/s/blog_53befb7b0102uyd4.html.
The design and implementation of the rainstorm casedatabase application system in Anshun City
FU Fengping,WU Zhehong,GAO Ruyu,HE Wei
(Anshun Meteorological Bureau of Guizhou Province,Anshun 561000, China)
The system was developed based on the meteorological optical fiber communication network,using B/S software architecture, establishing the database application system for the rainstorm case in Anshun City, realizing the display and query, the statistics and output,and so on for the rainstorm weather case archives, all kinds of physical quantity and the historical disaster in Anshun city. The system is based on Web mode, all programs run on the server side, users do not need to install any program, each part of the functional design is combined with the actual need. Since having been put into the business operation, it has played an important role in the local forecast business, the meteorological service, the scientific research and the management, having become a support system with high practicality for the meteorological business and service, effectively improving the protection ability for the disaster weather.
rainstorm case; ASP; SQL server database; physical quantity
1003-6598(2017)01-0059-05
2016-08-12
符凤平(1969—),女,副高,主要从事信息网络与技术保障工作,E-mail:836755434@qq.com。
TP311.52
B