陈 光
(湖州市水文站,浙江 湖州 313000)
历史洪水资料是洪水预报模型参数率定的基础,建立水文预报方案的洪水资料基本由水文整编数据转换而成[1]。位于湖州市境内的西苕溪流域防汛任务十分艰巨,为提高流域内水库和河道代表站洪水预报的时效性,湖州市水文部门申报建设西苕溪流域实时洪水预报系统。该系统降雨径流计算主要采用新安江模型,系统建设初期,首要的任务是将dBASE、FoxPro、Sybase等不同格式存储管理的基础水文数据库相关记录转换为统一的数据库格式,然后对所需的历史雨量、蒸发、水位、流量等数据进行库表结构转换、摘录数据时段化转换插补等,最终形成洪水资料库。
水利行业标准SL 324—2005《基础水文数据库表结构及标识符标准》[2]贯彻实施的时间不长,浙江省基础水文数据库经历了dBASE到FoxPro数据库开发管理的阶段,目前绝大部分历史数据以.dbf文件格式存储。近几年,水文基础数据采用了南方片 《水文资料整汇编软件》SHDP1.0进行整编,成果数据以Sybase SQL Anywhere 5.0格式存储(默认数据文件为SHDP.db)[3];升级版SHDP2.0即将投入使用,成果数据改为SQL SERVER 2000(个人版)存储,数据库主文件为MDF格式。
SQLSERVER2000数据库管理程序实用性较好,西苕溪流域实时洪水预报系统采用其作为后台数据库。因此,以MDF格式存储历史洪水资料即能满足生产要求。
采用SQL SERVER 2000的DTS(导入和导出数据)功能,分别将dBASE或FoxPro不同版本的.dbf文件、Sybase版本的.db文件导入到新建的历史洪水数据库中,通过DELPHI编程技术,实现相关数据库表结构转换和摘录数据时段化插补功能(见图1)。
图1 预报系统数据预处理功能列表图
应用DTS,需预先检查WINDOWS操作系统内置的管理工具ODBC数据源管理器中是否存在Microsoft Visual FoxPro Driver和Sybase SQL Anywhere 5.0驱动程序,否则需下载安装相应的驱动程序。
2.1.1 .dbf导入MDF
浙江省基础水文数据库以.dbf格式存储,由于数据管理程序开发升级,在库表结构上存在2种版本 (3.0和4.0版,推荐应用后者),并且在dBase和FoxPro 2种不同环境下生成的.dbf文件不完全兼容,导致无法采用单一数据源类型完成数据导入,导入步骤如下:
首先采用DTS以数据源类型为OLE DBProvider for Visual FoxPro、连接数据类型为Free Table Directory,可以将大部分.dbf文件自动导入SQL SER VER 2000数据库中,其余部分不能成功导入的.dbf文件,依次采用数据源类型为Microsoft dBase Driver、dBase 5、dBase IV完成数据导入。
2.1.2 SHDP.db导入MDF
南方片《水文资料整汇编软件》SHDP1.0数据文件SHDP.db存储近几年的水文基础数据整编成果,采用DTS以数据源类型为Sybase SQL Anywhere 5.0、添加和配置应用DSN,即可完成数据导入。
2.1.3 统一库表结构
做大做强销售业务,加快终端网络建设。相比国际大石油公司,在能源转型背景下,中国的石油公司对销售业务的资产和商务运作模式的优化,以及向综合性服务站的转型升级起步较晚,力度较小。中国石油企业不应随着油价的回升而放松对销售业务的转型升级,未来几年仍要持续加大投资,加快终端销售布局,为打造油、电、氢为一体的清洁化能源综合销售网络做准备。同时中国石油企业应该尝试在海外新兴市场国家布局终端销售网络,提升成品油出口销售能力。
转换后的基础水文数据库和南方片整编成果库表结构不完全相同,在应用前需将相关表进行再次转换,使之符合水利行业标准SL 323—2005《实时雨水情数据库表结构与标识符标准》[4]。
2.2.1 日累积量与日均值转换
蒸发、雨量属于累积量,日蒸发与日雨量数据表选取关键字段分别导入即可。日均水位、流量分属不同的表,应用编程或SQL SER VER 2000查询分析器查询语句将同一测站同期数据合并后插入新表。
基础水文数据库3.0版日表类表结构与实时雨水情库有很大不同,数据转换的目的是将月记录转换成日记录。以某站逐日降水量表 (DP)雨量记录转换为例,说明日表类数据转换编程要点:首先将 YR,MO,P1,...,P28,P29,P31等字段某年记录查询输出到二维数组,根据年份(YR)数据判断是否为闰年以确定2月份的天数以及根据月份(MO)数据判断其他月的天数,然后将逐日数据分离出来。表1表示二维数组中逐日数据的相对顺序号,逐日数据分离的关键是生成日期数据的同时将序号为2至32、35至62(闰年为63)、……、365至395的数据分别作为记录。
表1 日表类数据转换辅助表
2.2.2 摘录数据逐时转换
新安江模型次洪率定需要逐时蒸发量、雨量、流量等数据。逐时蒸发量数据的生成,采用简化的蒸发与气温、日照的关系,按正态分布曲线将代表站逐日蒸发量分解到逐时,其中,逐时蒸发量最大值分配在14∶00。
逐时雨量数据采用先分配后插补的方式进行。先将不等时间间距的雨量摘录数据平均分配到时段内逐时 (当小时内有分钟雨量摘录数据时要进行累加),并对时段外逐时数据插补为0(相邻记录时间相隔超过24 h时不补0)。预报站区域逐时平均雨量还可用加权平均算法预先计算存储在自定义表内。
2.2.3 其他相关数据转换
水库站水位—库容曲线采用最近年份的“水库控制运用计划”编报的数据,在应用时将水位级差为1.0 m(或0.5 m)的水位库容曲线转换为级差为 cm的关系线存储,以方便程序调用。在水库库容曲线、次洪逐时洪水要素完整的情况下,根据水量平衡原理,可反推逐时入库流量,作为水库站降雨径流模型计算入库流量的实测值。
2.2.4 重复记录清理
经过上述转换,历史洪水数据库相关表中有可能出现重复记录,在SQL SERVER 2000查询分析器中运行以下程序可以清理重复记录。
USE历史洪水数据库
SELECT DISTINCT*INTO#TMP FROM表名称
DROP TABLE表名称
SELECT*INTO表名称FROM#TMP
DROP TABLE#TMP
通过阐述西苕溪流域实时洪水预报系统建设前期历史洪水资料由各类异构库表转换的方法以及相关水文摘录数据时段化插补算法,探讨了洪水预报水文数据预处理方法。通过水文数据库异构库表转换统一,可以改进浙江省基础水文数据库管理方式;采用推荐的洪水预报水文数据预处理时段化转换与插补方法,可以为快速构建洪水预报系统打好基础。
[1]中华人民共和国国家质量监督检验检疫总局,中国国家标准化管理委员会.GB/T 22482—2008水文情报预报规范 [S].北京:中国标准出版社,2009.
[2]中华人民共和国水利部.SL 324—2005基础水文数据库表结构及标识符标准[S].北京:中国水利水电出版社,2005.
[3]梅军亚,张潮,赖厚桂.南方片水文资料整汇编软件系统开发与应用 [J].水文,2006(2):73-75.
[4]中华人民共和国水利部.SL 323—2005实时雨水情数据库表结构与标识符标准 [S].北京:中国水利水电出版社,2005.