松散耦合型洪水预报调度系统设计

松散耦合型洪水预报调度系统设计

摘要:基于B/S构架的Web洪水预报调度系统在运行管理、安全性、跨平台通用性等方面有着明显的优势。构建基于B/S、C/S松散耦合型洪水预报调度系统,阐述了系统实现关键技术和系统集成与业务流程,介绍了系统在汉江、丹江流域应用实例,为基于Web的B/S洪水预报调度系统提供了新思路。

关键词:洪水预报;洪水调度;松散耦合系统

1研究背景

我国是一个洪水灾害频发的国家,洪水预报调度作为重要的非工程减灾措施,对保障人民生命财产安全起到了关键性的作用。洪水预报调度系统能为洪水作业预报调度实施提供有效的支撑手段。长期以来,洪水预报调度系统多基于客户机/服务器(C/S)模式构建[1],随着需求的不断拓展,此类系统在系统管理、安全性、跨平台通用性等方面存在明显不足[1]。随着计算机软硬件技术的发展,基于浏览器/服务器(B/S)构架的洪水预报调度系统在上述方面有着明显的优势[1-3],是目前洪水预报调度平台的发展方向。洪水预报调度系统因其计算的复杂性决定其不能单纯地利用网页编程技术实现,一是网页的响应具有及时性;二是洪水预报调度复杂性及耗时相对网页响应要复杂得多,因此需要将动态网页和计算模块分开部署,才能在保证系统运算效率的同时保证B/S客户端的浏览体验。本文采用B/S、C/S松散耦合模式所构建的洪水预报调度系统较好地兼顾了上述要求,其在构架上类似于面向服务的架构(SOA),各服务组成模块之间通信可以通过数据交换等简单技术来实现,相比采用组件对象模型(COM)或分布式组件对象模型(DCOM)的实现[3]要简单,且各服务组成模块之间更具独立性和灵活性。

2系统结构设计

系统建设以数据库为中心,采用B/S、C/S松散耦合的“二元三层”结构体系,即客户端/服务器端的“二元”结构,服务器端又分为浏览器、Web服务器+应用服务器、数据库服务器的“三层”结构。该结构中Web服务器和应用服务器之间主要是通过预先定义的数据交换格式实现服务。预报、调度的交互式界面操作通过B/S实现,预报、调度计算通过服务器端的C/S程序实现。松散耦合的体系结构可以轻松实现系统的分布式部署,无限拓展服务能力,并能实现系统的负载均衡。

3系统实现关键技术

系统主要借助网络编程技术和数据库协同完成,包括:微软创建动态网页的服务器端技术(ASP.NET)、Office网络组件(OWC)、直译式脚本编程语言(Javascript)、异步数据传输技术(AJAX)、轮询技术、高密度“桶”思想的水文时间序列数据插值方法与数据滑动分段处理技术[4]、关系数据库、模型库等。

3.1OWC控件及轮询回收技术

动态绘图展示通过OWC控件实现。OWC是与Micro⁃softOffice一起安装的一组由微软倡导的网络化多媒体对象技术(ActiveX控件),设计的目的是为众多的控件容器提供交互的电子表格建模,数据报表和数据可视化功能。如果在计算机上安装了OfficeWeb组件,则可以在InternetExplorer5.01SP2或更高版本中对电子表格、数据透视表和图表进行交互访问。OWC库中包含了电子数据表组件、图表组件、数据透视表组件和数据源4个组件。OWC生成的图片会累积在服务器端,如果不清理,就会占用系统资源,必须定时清理回收,系统通过在服务器端建立第三方程序,基于轮询方式,定时清理因响应Web请求生成的图片。

3.2AJAX技术

AJAX是Web2.0的技术新宠[5],本质上是基于可扩展标记语言(XML)的异步Javascript,最早由JesseJamesGar⁃rett于2005年提出。通过使用可扩展超文本传输请求(XMLHttpRequest),客户端可以在任何时刻与服务器端进行通信,而不只是在页面提交时进行,从而实现异步数据接收,能在不更新整个页面的前提下更新页面的部分内容,带来良好的用户体验同时减轻服务器压力,提高系统响应效率。AJAX并非独立技术,本质上是由可扩展超文本置标语言(XHTML)、层叠样式表(CSS)、文档对象模型(DOM)、XML、JavaScript等几个常用技术组合而成[5-6]。在.NET3.5框架中,AJAX首次作为VisualStudio2008的绑定功能为编写代码提供了巨大的便利[5],借助文本管理控件、更新面板控件、更新进度控件等一系列控件,可方便地为系统编写AJAX代码。

3.3高密度“桶”思想的水文时间序列数据插值方法与数据滑动分段处理技术

系统根据设定的预报起止时间和时间步长,读取雨水情数据库里的水文数据,并进行等时段插值。在数据的线性内插过程中,采用高密度“桶”水文时间序列数据插值方法[4]。即建立基于时钟“分”时间尺度的内存序列矩阵,好比一个个“桶”,由于时间尺度小,任何时间尺度的数值只要根据自己的“时间位置”入相应的“桶”即可。该方式插值不需要通过比较,因而计算效率比较高,但唯一的缺点即占据内存较大,因而,需要配合采用水文数据滑动分段处理技术分段处理(图2),即设定一个参数控制每次从数据库里进行数据处理的时段长,时段较长的话就进行分段处理,处理完一段后再处理下一段,同时,上一段被暂时记录下来,以保证下一段数据在序列前部插值时不出错,直到新的一段被记录下来,上一段才被清除记录。

3.4模型库

模型库是将众多的模型按一定的结构形式组织起来,通过模型库管理系统对各个模型进行有效的管理和使用。模型库是一个共享资源,模型库中的模型可以重复被不同的系统所使用,避免了冗余。系统模型库遵循中国洪水预报系统的标准[7],完全兼容中国洪水预报系统的模型,目前系统集成了新安江模型[8]、API降雨径流模型、滞后演算汇流模型、单位线汇流模型及马斯京根河道汇流模型。

4系统集成与业务流程

系统集成主要是指B/C/S各模块之间的集成,通过数据交换的形式来完成,数据交换的格式可以通过文本格式或数据库格式。在实现方式上可以分为主动和被动两种模式,主动模式通过网络脚本调用API函数ShellExecute直接在服务器激活C/S运算模块,通过网页轮询判断并调用计算生成的结果文件,如果B/S、C/S同时部署于一台服务器,这种方式的实现很简单,如果要实现分布式部署,需要通过Winsock网络通信技术来实现;被动模式是纯粹的数据交换模式,网络脚本不直接调用C/S运算模块,而是生成某种指令文件或数据库记录,C/S运算模块通过自身轮询发现该指令文件或数据库记录来激活运行,并生成结果文件或数据库结果,网页端则通过轮询判断结果是否生成。

5系统应用实例

基于B/S、C/S松散耦合模式成功构建了汉江、丹江流域水库雨洪资源利用与联调预报系统(图4),该系统具有“高效、通用、操作灵活简易、便于管理”的特点,是一个真正意义上的预报调度系统。系统基本功能主要涵盖:①预报计算、②抗雨能力计算、③调洪演算、④展示查询、⑤分级用户管理。(1)预报计算。按照构建的方案,通过选定的雨量站计算面雨量,前期土湿,根据数值预报计算未来降雨,通过产流计算、汇流计算及河道汇流演算,叠加至预报断面,计算结果存入数据库。(2)抗雨能力计算。在某一蓄水位下,考虑水库工程参数、泄水设施运行调度、集雨区土壤含水量(前期降雨)和产汇流特性等因素,反推某一时段内水库允许容纳的最大降雨量。在水库运用的过程中,由于坝顶高程和溢洪道顶高程、库容曲线和泄洪曲线等都是己知的,故可预先对水库不同特征水位算出可能拦蓄的水量,或换算为允许最大降雨量,计算结果存入数据库。(3)调洪演算。根据水库入流(包含上游水库的调度出流结果),人工设定出流过程,基于水量平衡及水库水位库容曲线反推计算水库水位过程。调用河道汇流演算模块将水库出流演算至下游断面,以便进行联合调度,计算结果存入数据库。(4)结果查询。主要实现预报计算、抗雨能力计算、调洪演算结果的过程线及成果表的显示,可以按日期时间查询预报结果。(5)用户分级管理用户分两级,一般用户可以进行水库来水预报、抗雨能力分析、调洪演算的计算,高级用户可以修改方案参数。

6结语

基于Web的B/S洪水预报调度系统在系统管理、安全性、跨平台通用性等方面具备优势,是今后洪水预报调度系统的发展方向,本文所构建的Web洪水预报调度系统采用B/S、C/S松散耦合模式,各模块集成通过数据交换及轮询的方式,具有实现简单、组件独立性强和构架灵活的特点,为基于Web的B/S洪水预报调度系统提供了一个思路。

参考文献

[1]陈华,郭生练,林凯荣,等.基于Web的水库洪水预报调度系统设计与开发[J].武汉大学学报(工学版),2004,37(3):27-31.

[2]张建云,王光生,张建新,等.Web洪水预报调度系统开发及应用[J].水利水电技术,2005,36(2):67-70.

[3]袁迪,张艳军,宋星原,等.基于Silverlight的B/S模式水库洪水预报系统设计与实现[J].水利水电技术,2014,31(8):12-17.

[4]齐晶,杨邦,魏琳.基于多源降水信息的洪水预报技术研究[M].南京:河海大学出版社,2017.

[5]宋学江,赵兰.C#轻松入门[M].北京:人民邮电出版社,2009.

[6]王琦,刘媛媛,万庆,等.南水北调中线干线工程WebGIS系统开发及应用[J].南水北调与水利科技,2009,7(5):28-32.

[7]章四龙.中国洪水预报系统设计建设研究[J].水文,2002,22(1):32-34,16.

作者:杨邦 齐晶 杨鹏 刘玉晶 单位:水利部海河水利委员会水文局