2005年3月SHUILI XUEBAO第36卷第3期文章编号: 0559-9350(2005)03-0350-05
中间件技术在多模型洪水预报WEB中的应用
蔡阳1,汪妮2,张永进2,解建仓2
(1.水利部水利信息中心,北京 100053;2.西安理工大学水利水电学院,陕西西安 710048)
摘要:利用中间件技术实现网络环境下的防汛决策应用是目前防汛业务的一个新方向。按照J2EE标准,以中间件技术的应用框架为基础,在MVC软件设计模式的指导下建立了面向Web的洪水预报系统,以期提高软件的可扩展性、可维护性和代码复用率。本文以可拆分子模块的新安江模型和不可拆分子模块的水箱模型为代表,探讨了对于子模块、模型的标准组件及组件库的开发,初步尝试了搭建组件模型及应用方案的过程。最后以一个小流域的实测资料为例,对多模型洪水预报过程以及预报结果对比进行了应用测试。
关键词:中间件技术;框架;MVC设计模式;洪水预报系统;新安江模型;水箱模型;模型组件;组件库
中图分类号:TV212.4 文献标识码:A
流域水文模型是用数学方法描述和模拟水文循环的过程,是对水文循环规律研究的重要结果之一。20世纪60~70年代伴随着计算机技术和系统理论的发展,涌现出大量的流域水文模型,但预报系统常常针对某个
具体的水文模型来开发。由于模型的适用性不同,单个水文模型的应用并不利于洪水预报决策。本文引入框架理论、组件技术及MVC(Model-View-Controller)设计模式,以期在Web环境下开发具有伸缩性、易于扩展、便于对流程进行维护的洪水预报模型系统,从而体现该应用系统在共享、重用、集成和扩展等方面的优势。
1 中间件技术
通常认为中间件是一种介于操作系统与应用系统之间的独立的系统软件或服务程序,这些软件具有标准的接口和协议,针对不同的操作系统和硬件平台,可以有符合接口和协议规范的多种实现,分布式应用借助它在不同的技术之间共享应用、协同工作。具体来说,中间件位于客户机/服务器的操作系统之上,分布式应用之下,管理计算资源和网络通讯。它使用系统软件所提供的基础服务,衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。
从上述定义不难看出,中间件是一类基于分布式技术的系统软件或软件平台,而非一种应用软件,在应用中可以有不同的表现。在应用中,框架是中间件技术的具体表达形式,MVC设计模式则用来指导基于中间件的应用系统的建立。框架是在中间件技术的支持下,对某一特定应用领域中的通用业务进行抽象而形成的一组采用面向对象技术预先开发好的软件组件,它是一组对象的集合,它的设计与代码都可以被重用。开发人员可以直接利用这些组件,或者扩充定制这些组件得到一个特殊的计算解决方案:MVC
是一个网络环境下广泛使用的Web应用设计模式。基于MVC设计模式的应用程序被分成3个核心部件:模型、视图、控制器,它把应用程序的输入、处理和输出强制性的分开,使其各自处理自己的任务。控制器是模型与视图的联系纽带,它提取通过视图传来的外部信息,并将其转化成相应事件,对模型进行更新;同时,模型
收稿日期:2004-10-18
基金项目:国家“863”计划研究资助项目(2002AA113150);国家自然科学基金资助项目(50279041)
作者简介:蔡阳(1963-),男,江苏人,教授级高级工程师,主要从事计算机应用及水利信息化研究。
2005年3月SHUILI XUEBAO第36卷第3期
的更新与修改也将通过控制器来通知视图,从而保持视图与模型的一致[1]。本文实现的多模型预报系统就是以一个中间层集成框架为基础,在MVC设计模式指导下,通过对洪水预报业务过程进行抽象、分解、组件化而建立的洪水预报应用环境。
2 洪水预报的模型系统
2.1 传统的模型实现方法近年来,面向对象方法越来越多的用于流域水文模拟过程。它具有符合系统的
实际构成、信息隐蔽、数据抽象、继承性、动态联系等优点,也已逐渐成为流域仿真建模的重要方法。对象及类的概念在建模、设计及实现过程中都是一致和完整的,并提供从分析、设计到系统实现的统一框架。虽然,大多数的应用程序开发都采用了面向对象的结构化设计思想,但仍然把程序的业务逻辑、结果表示、与数据库的连接管理以及安全等项事务集中在一个程序中,一旦应用逻辑发生微小的变化,往往要影响到相连的其它各部分。要开发一个类似的新应用,更要一切从头开始。
例如,在HEC-1流域水文模型中,对于每一个模拟过程都提出了多种计算方法,在实际应用时要依据计算目的、资料情况和使用者的经验进行选择。降水损失的计算方法有4种,它们分别是初损稳损法、曲线号法、贺坦法和HEC变动损失法;流域汇流计算方法也有4种,它们是克拉克单位线法、斯耐德单位线法、水土保持局(Soil Conservation Service)SCS方法和运动波方法;河道洪水演算有3种方法,它们是马斯京根法、改进的蒲拉斯法和运动波河槽演算法[2]。对于新安江模型虽然和HEC-1模型分别用不同的思路和计算方法实现径流的模拟,但在输入、输出及洪水演进模型中,3个子模块上都有重复。在传统的洪水预报模型系统的开发中,新安江模型和HEC-1模型各成独立的体系,互相之间难以做到代码重用。即使在HEC-1模型中,要做到以一种算法代替另一种算法,也要化费相当大的功夫,因为各种算法结构不同、使用的参数和变量不同,常常局部的变化要通过整个程序的修改甚至重写来完成。
由此可知,基于传统的开发方法建成的应用系统,在系统扩展性和可维护性方面都比较薄弱;应用系统在工作上各自为政,不同系统中公用的部分难以重复利用,大量的低水平重复开发造成资源的极大浪费;
系统设计中,业务逻辑和非业务的其它部分的混合,使应用程序结构繁杂、缺乏层次性。因此,采用面向对象方法分析和设计系统时,需要从根本上改变传统的系统分析和设计方法。
2.2 网络环境下的洪水预报模型系统设计洪水预报模型系统开发以开放的基础应用框架为基础,框架主要为开发提供读取参数信息、配置信息、建立系统调试和应用日志等功能。但是在具体的洪水预报业务的实现上,还会面临各种不同功能的类和对象的设计及创建工作,如何对这些元素进行组织,直接关系到整个系统的性能。MVC模式把一个面向对象的应用程序分成3个层次,很好地区分了系统中不同对象的职责,使应用程序专用的细节同用户界面无关。
在这里,以流域水文模型为业务基础建立一个基于MVC模式的洪水预报模型的Web应用系统。尽管模型中包括一系列连续的过程,对于决策者来说,他们只关心在人机交互的界面输入并提交一定的参数和定制后,获得什么样的输出结果和指标,并根据对结果和指标的分析做出相应的决策,至于软件其它部分的具体实现是不需要知道的。因此,很容易把这一系统用MVC设计模式来划分和拆装。
其中,模型层包括水文模型所涉及到的子模型及算法。它对用户来说是不可见的,对应于每一种算法,都对应着一个模型,保存了其中有哪些变量,采用什么参数,模型的算法以及运行该模型会产生什么样的输出。一旦确定了模型的结构,就可把模型开发为一个固定的组件。
表示层以浏览器的形式给用户展示输出结果的图形界面和向控制器输入人机交互信息的交互界面,但
2005年3月SHUILI XUEBAO第36卷第3期是并不负责响应用户的请求。在具体的洪水预报模型系统中,其作用就是显示参数定制,模型选择及数据资料选择等输入信息的界面,显示由模型层返回的输出及其它状态值的界面,显示方式主要有图、表、对话框、文字描述等。表现层实现的动态页面,给决策者提供决策所需的完整信息,同时也便于应用系统及其成果在网络上的共享。
控制层,对用户来说也是不可见的,它的主要作用就是管理与模型层及表示层之间的交互,实现用不同的方法触发模型的不同状态,并把这种状态反映给表示层以获得其更新。当用户改变了某个模型参数,或是更换了模型或数据资料的输入,这些动作并不直接作用于模型层,而是发送请求给控制器,并通过它再把请求发送给模型,模型就这一请求进行相应的处理,返回处理的结果并由控制器传递给浏览器(Web方式),从而可以在网络可及的任何地方看到模拟结果。
3 洪水预报模型的Web应用实例mvc实例
3.1 流域水文模型的选择及拆分在防汛水文预报业务中,流域水文模型也称概念性模型,是把流域径流形成的各个环节,诸如降水、蒸发、截留、下渗、地面径流、壤中流、地下径流形成及其调蓄过程和流量演进过程分别用相应的数学物理方法加以描述,然后按各种环节在径流形成过程中的内在联系组合起来形成一个流域模型[3]。
新安江模型强调从降雨到形成径流的时间和空间上的变化过程,是在我国应用较为广泛的流域水文模型。
预报过程比较复杂并且可以被分割为多个子系统:如蒸发子系统、产流子系统、水源划分子系统、流域汇流子系统和洪水演进子系统等。
水箱模型又称坦克模型,是20世纪60年代初由日本国立防灾研究中心所长、理学博士营原正已提出的,现在作为一个水文预报、水文计算的模型已被WMO吸收。它把流域视作若干个组合的水箱,以水箱中的水深作为参数来计算流域内降雨-径流关系以及汇流过程。水箱模型简单但适用性广,一般不划分子系统。
下面就以可划分子模块的新安江模型和不划分子模块的水箱模型为代表,实现在网络环境下的水文预报过程并对其结果进行对比分析。
3.2 Web应用的决策实例过程该应用实例以江西赣江左溪南溪站流域1967年6月30日的一次降雨及洪水过程为原始资料进行模拟[4],洪水预报模型系统的应用过程具体见以下步骤:
图1 模型添加操作视图
(1)进入模型浏览页面,浏览并查各模型或子模型组件中所包含的功能、参数、输入输出变量及适用条件信息。Web页面包含众多相关模型信息。(2)在添加模型Web页面中,可对现在的子模型进行有限的组合以形成新的模型,即模型的搭建,例如使用三水源划分的新安江模型叫XAJ1模型,而改用两水源划分子模型的新安江模型叫XAJ2模型。操作界面见图1。(3)方案定制即利用已有的模型组件,选择具体流域
2005年3月SHUILI XUEBAO第36卷第3期的具体时段洪水组成多个洪水预报方案。方案定制包括选择模型、选择流域、选择历史数据(洪水场次,包含了时段数,时段长,起始时间等信息)。生成的模拟方案命名为:南溪.XAJ1.670701。其中南溪为流域名,XAJ1为模型名,670701为洪水资料名称。应用过程如图2所示。(4)方案选择及模拟结果分析页面主要包括选择模拟方案、以图表形式输出该方案的模拟结果以及对结果的量化指标评价。本文选择了南溪流域的南溪.XAJ1.670630方案和南溪.水箱.670630方案共两个方案进行对比分析,其操作界面及结果如图3所示。
图2 添加方案过程的操作视图
图3 方案选择及结果分析视图
3.3 结果分析及应用接口扩展新安江模型由3层蒸发模型、产流模型、三水源划分模型和单位线汇流模型组成;水箱模型采用串联的两层直列式水箱,上层水箱有上下两个侧流孔,下层水箱一个侧流孔。由图3可知,两个方案中三水源新安江模型无论是在峰现时间还是洪水形状上都与实测流量资料吻合较好。
2005年3月SHUILI XUEBAO第36卷第3期从两方案结果的指标对比上来看, XAJ1方案的确定性系数达91%,属于甲等,水箱方案的确定性系数为82%,属于乙等[6]。两者都可用于作业预报,但明显出现了级别上的差距,而且其它指标值也表明了水箱模型在该次洪水中的模拟效果远不如XAJ1模型。
对于水箱模型,从预测洪水过程可知,洪峰发生在第3个时段,也就是降雨最大的时段,这与实际的径流形成过程显然不符,因此需要对水箱模型的结构进行调整。经分析,在该水箱模型中加入一个并联水箱可以延缓径流的形成,获得较好的模拟结果。
在洪水预报系统建成后,表示层与控制层是较为稳定的、相对不变的部分,而模型组件,即具体的业务是可变部分。随着洪水预报技术的进一步发展,新模型的出现和旧模型的更新都会要求系统的该部分产生相应的变化。由于系统中模型、展示和控制层之间是以共用的标准接口为纽带进行交互的,无论是在模型层加入新的模型组件,还是对旧的模型组件的重新实现都不会对整个系统造成较大的影响。而模型组件的浏览及应用都可以通过控制层发送消息给表示层来完成应用的动态更新。但是在具体的防汛业务
中,业务过程及对象的抽象不仅仅要遵循面向对象的软件开发思想,还应结合国家水利信息化的标准来进行。
4 结论
本文建立的洪水预报模型系统在设计开发上有别于传统的面向对象的应用系统。具体表现在以下几个方面:(1)MVC设计模式使界面设计同业务逻辑完全隔离开来,两者之间通过控制层进行交互,3个部分可以各自独立的进行开发,开发人员只需要知道其它部分所提供的接口即可,这就意味着不同的专业人员可以在自己所擅长的领域进行开发。(2)洪水预报模型系统被分解为3部分,因为3个部分之间的接口通常都是确定的(J2EE标准),所以即使修改也只需在很小的范围内进行。 (3)把模型或求解方法用组件对象表示,在多模型预报系统开发时,通过对组件的自由调用避免了公共算法的重复开发。(4)系统用时段管理器管理时段信息,在模型组件开发时,只实现一个时段的算法过程而无须考虑时间因素,为模型组件的开发带来了极大的便利。
洪水预报的目的是为防汛指挥决策提供依据,因此,预报系统的应用过程对于决策的影响至关重要。作者通过实例说明了本文洪水预报模型系统的应用过程,其主要特点有: (1)操作的简便性。表示层以操作界面的形式定义了系统的应用过程。用户只需按照设计好的流程进行操作,即可完成洪水过程的模拟,无需关心后台的应用过程。 (2)应用的灵活性。在洪水预报过程中,对一场洪水常常需要采用不同
的水文模型来模拟,甚至对一个水文模型的某些部分也要采用不同的算法以求尽可能准确的模拟洪水过程,本文洪水预报模型系统,通过模型组件的组合可实现不同的模拟过程,为应用程序的快速、动态实现带来了极大的方便。
组件技术和框架技术的应用使该洪水预报模型具有较强的可扩展性。虽然目前实现的预报系统只完成了较为简单的功能,随着洪水预报研究的深入,模型组件库将不断的丰富和完善,并在此基础上为系统逐步添加新的应用,使系统对知识的发展和更新具有较强的适应能力。
参考文献:
[1] 陆荣幸,郁洲,阮水良,等.J2EE平台上MVC设计模式的研究与实现[J].计算机应用研究,2003,(3):144-146.
[2] 袁作新.流域水文模型[M].武汉:水利电力出版社,1990.
[3] 吴明远,詹道江,叶守泽.工程水文学[M].北京:水利电力出版社,1987.
[4] 赵人俊.流域水文模拟——新安江模型与陕北模型[M].北京:水利电力出版社,1984.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论