洪水预报模型组件化及应用_张刚

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 1 洪水预报模型组件化过程
2.4 洪水预报模型组件化实现 2.4.1 新安江模型组件化
(1)新安江模型组件划分。新安江模型强调从降雨到形成径流的时间和空间上的变化过程,预报 过程比较复杂并且可以分割为多个子系统:如蒸发子系统、产流子系统、水源划分子系统、流域汇 流子系统和洪水演进子系统等。根据新安江模型的各个组成部分,本文将新安江模型分为蒸散发计 算、产流计算、水源划分和汇流计算等 4 类组件。为便于组件的通用和重用,又将蒸散发计算划分为 一层蒸散发计算、二层蒸散发计算和三层蒸散发计算等 3 个标准组件;将汇流计算划分为坡地汇河网 汇流计算和河道汇流计算等 2 个组件。将水源划分为二水源、三水源和四水源等 3 个组件。新安江模 型组件划分如图 2 所示。
(2)输出的 SCHEMA。输出的 SCHEMA 完全根据输出的 XML 生成。在相应字段的元素下要对该 字段的意义做出解释。对于非固定式输出有要求,在组件没有运行时 SCHEMA 的值是空字符串。
— 1480 —
2.3 洪水预报模型组件化方法 针对传统洪水预报模型开发应用中存在的应用程序结构庞杂、缺乏 层次行,可扩展性和可维护性差,成果通用性差等问题,本文提出“模型组件化,决策协作化”的决 策支持服务平台开发的构思,并利用组件技术和工作流技术予以实现。
洪水预报模型组件化是一个由模块划分、组件封装、组件搭建和系统构建组成的多步骤过程, 洪水预报模型组件化方法体现于组件化过程的多个步骤之中。
(1)模块划分。根据洪水预报模型的计算过程将其划分成各个模块。划分好的模块要求相对独 立,即不与其他组件完全独立,但自身可以独立运算。模块的划分一般有两种方法:一是按照模型 的计算过程划分,在计算过程中将模型分割成一个个模块,每个模块可以独立进行运算;另一种是 按照模型的逻辑结构划分,如新安江模型常被分成蒸散发模块,产流模块等。而按照逻辑结构划分 并不总是可行,如萨克拉门托模型常被划分成产流量计算、蒸散发计算、水分交换计算和下渗计算 等模块,而这些模块其实并不能实现独立运算,从而不能成为模块,因此模块的划分一般要求划分 者对模型的逻辑结构和计算过程非常了解。
新安江模型共由 5 个模型组件构成,由模型的原理可知,这 5 个组件之间并不完全独立,各个组 件之间存在一定逻辑关系,如图 3 所示。这种逻辑关系就是组件组装新安江模型的依据。
图 3 新安江模型各组件的关系
(3)新安江模型组件的实现。新安江模型组件的实现就是将划分好的各个组件,根据组件开发标 准,通过编程实现其业务功能。新安江模型总共要实现 9 个模型组件,各组件的类名、关键方法及功 能见表 2。其他模型组件化过程与新安江模型组件化类似,限于篇幅,不详细论述。
非开放性组件,即所有的输入内容在用户定制时就已经生成,输入内容模式是既定的。开放式 输入,即输入内容不完全是用户定制的内容,有部分或者全部数据是将上层节点的输出作为该节点 的输入,是一个动态、组合的流过程。(1)输入的 XML 数据。输入的 XML,不管是开放性输入还是 非开放性输入,在组件开发范围内完成用户定制输入即可。(2)输入的 XML SHCEMA。模式(SCHE⁃ MA),XML 数据的语义描述,SCHEMA 类型要根据组件的类型而定。非开放式组件,SCHEMA 完全 根据用户定制的 XML 生成。
通用方法 流域产流模型
洪水预报模型 P_R 模型
经验单位线模型 NASH 单位线模型
马斯京根模型 扩散波模型 水量平衡水库调洪演算模型
模型类型 流域产流模型 流域汇流模型 流域汇流模型 河道汇流模型 河道汇流模型 水库调节模型
收稿日期:2010-04-22 基金项目:中国博士后科学基金项目(20110490170);国家自然科学基金资助项目(51109175);国家自然科学基金资助项目
面向服务的体系结构对模块进行封装并发布服务,形成洪水预报模型组件库;同时,运用洪水预报模型组件搭建
wenku.baidu.com
模式来搭建洪水预报模型,并将其应用于东洋河流域的洪水预报。应用结果表明,组件化的洪水预报模型具有可
移植性强、代码重用率高、可扩展性好、易于维护和展示效果好等优点。
关键词:洪水预报;组件;Web Service;重用;扩展
根据中央洪水预报系统的建设原则,需要选择一种能够实现系统易用、可移植和可扩展的开发 模式。从目前的技术来看,组件的开发模式是最好的,因此,本文在洪水预报模型组件化方面进行 探索和实践,按照洪水预报模型结构和逻辑上的特性,将国内常用的 12 个洪水预报模型划分成多个 相互独立的模块,并按照组件封装技术将其封装成组件,再按照组件的搭建模式将其搭建成洪水预 报模型,同时针对具体流域实现其应用。
(1)输出的 XML。对于输出的 XML 有以下要求:①根元素必须是 serviceData;②根元素下必须包 括 serviceType 元素;③ serviceType 元素内容目前有两类,RowType 和 JellyServiceType,前者表示返回 的数据是一个结果数据集,可以生成表格也可以在图表中显示;后都表示生成的是一个界面(由 JEL⁃ LY 控制);④ RowType 类型下,数据记录全部放在 rows 元素下,每一条记录放在一个 row 下。
水利
2011 年 12 月
SHUILI
文章编号:0559-9350(2011)12-1479-08
学报
XUEBAO
洪水预报模型组件化及应用
第 42 卷 第 12 期
张 刚,解建仓,罗军刚
(西安理工大学 西北水资源与环境生态教育部重点实验室,陕西 西安 710048)
摘要:根据洪水预报模型的结构和逻辑特性,将其拆分成相对独立的模块,运用组件技术、Web Service 技术和
SOA 注重将已经存在的应用系统进行集成,同时又可以根据标准规范新的应用系统的开发过 程。从应用开发层次看,组件技术可以看作是 SOA 中“服务”的组装和实现。而 SOA 则可以看作是在 应用表现层次的软件组件化。 2.2 洪水预报模型组件开发标准 为了使洪水预报模型组件开发有标准可循,结合实际情况,本项 目编制了洪水预报模型组件设计和开发标准(《水利信息处理平台技术规定》已送审,2010 年 12 月第 二次审查),通过该标准可使洪水预报模型组件更加标准化。 2.2.1 输入约束 输入是洪水预报模型组件执行的前提条件,如水文数据输入,没有水文数据组件 将无法运行。按输入来源可分为开放式和非开放式[5]。
组件具备以下特征[3-4]:复用、封装、组装、定制、自治性、粗粒度、集成和契约性接口。组件 的这些特征,使得软件技术在应用开发方面具有以下特点:软件重用和高度的互操作性、实现细节 透明、接口的可靠性、良好的可扩展性、即插即用以及与开发工具语言无关。 2.1.2 Web Service 技术 Web 服务是一种现代软件组件技术,它采用 XML 格式封装数据,采用 Inter⁃ net 通用协议 WSDL 完成自身功能的描述,使用 UDDI 实现注册和定位,使用 SOAP 协议完成数据传 输,具有跨平台能力和跨语言能力。不论在何种平台上,不论用何种语言开发的客户端,只需了解 Web Service 的输入、输出和位置,就可以通过 SOAP 协议调用它。 2.1.3 面向服务的体系结构 面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件 模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
(4)系统构建。用户根据需求搭建合适的洪水预报模型,但此时的模型还不能独立运行,需要连 接外部水文数据。水文数据的连接有两种方法:一种是传统的方法,即将数据写入文件传入搭建的 模型,在输入约束中提到数据必须写成 XML 格式,当然这种方法很不灵活,遇到数据量非常大时将 很耗时;另一种是编写一个数据输入模块,用来连接数据库的相关数据,并将其封装成组件连入模 型组件,这种方法很灵活,需要什么数据直接在组件定制时选择相关信息即可。当然要构建一个可 视化效果好的系统,还需要一些其他辅助组件,如画流量过程曲线的画图组件。系统构建好之后, 即可点击模型组件进行运算。洪水预报模型组件化过程见图 1。
(2)组件封装。运用组件技术、Web Service 技术、面向服务的体系结构等组件封装技术将划分好 的模块封装洪水预报模型组件。组件封装遵循上文提到的组件开发标准,封装后的组件有两个接 口,一个用于传入数据和参数,另一个用于结果的输出,两个接口均遵循输入输出约束。
(3)组件搭建。封装后的组件存入组件库,用户定制组件库中的组件并将其在可视化界面中搭建 洪水预报模型。洪水预报模型的搭建方法有两种:多个模型共用一个或多个组件和多个组件的组合 搭建。这两种搭建方法可以充分体现组件的可共用和可移植性。
中图分类号:P333
文献标识码:A
洪涝灾害是我国损失最为严重的自然灾害之一[1]。为运用非工程措施减轻洪涝灾害损失,我国开 展了国家防汛抗旱指挥系统一期工程建设。2009 年 3 月,水利部水利信息中心编写了国家防汛抗旱 指挥系统《中央洪水预报系统需求说明书》,要求开发国内目前常用的 25 个洪水预报模型和通用方 法,建立预报模型库,为中央洪水预报系统和 7 大江河洪水预报系统提供模型支持。中央洪水预报系 统的开发建设坚持适用性、可用性、易用性、可扩展性、可移植性和可维护性等原则。
— 1481 —
(2)组件业务逻辑分析。业务逻辑分析过程主要分析模型组件的参数、初值和输出(模型组件的 计算结果)。下面以三层蒸散发组件为例来说明组件的业务逻辑。
参数:是和该模型相关的一些流域的参数,例如:流域面积 F、相对不透水面积 IMP 和土壤蓄水 容量 WM 等。
初值:主要有两个来源,一个是流域在各个时段上的初值,例如,降雨量 P;另外一个是别的模 型或者是模型本身的计算结果,例如上层土壤含水量 WU、下层土壤含水量 WL 和深层土壤含水量 WD,属于三层蒸发模型本身的时段计算结果,这个结果又作为下一时段的初值。
(51079120);陕西省国际合作重点项目(2008kw-32) 作者简介:张刚(1984-),男,陕西西安人,博士生,主要从事水文水资源研究。E-mail:zhanggang3463003@163.com
— 1479 —
2 洪水预报模型组件化
2.1 组件化技术基础 2.1.1 组件技术 组件也称为构件,是随着人们寻求解决“软件危机”的途径,提高软件的重用性而 提出的,其思想是将软件按一定的标准封装成组件,对外提供一组访问接口[2]。
开放式组件 SCHEMA 很灵活,根据上层节点数据可能出现的情况以及用户定制的输入 XML 而 定。 2.2.2 输出约束 输出是业务功能执行后的结果。输出可分为固定式和非固定式。固定式输出,顾 名思义,指的是输出的内容模式已定,即输出的 SCHEMA 已定,绝大多数的组件输出都是固定输 出;非固定式输出,指的是组件的输出形式在定制时并不清楚是什么,只有在和其他组件组合后运 行时才知道输出的模式,也就意味着不同的应用使用该组件可能返回的是不同形式的结果,例如, 插值运算组件,由于插值运算组件和其他组件之间的组合不同,导致如果输入是降水量,通过和插 值组件组合,结果是对降雨量插值后的输出,然而,输入若是流量,则是流量插值后的结果,所以 插值运算组件在定制时并不知道其输出模式。
输出:输出也是两个部分,一部分是输出给其他模型的计算结果,如三层蒸散发模型计算出的 E (时段蒸散发量)要作为下一环节的基本模型——产流模型的输入;另一部分是流域在这个时段内使 用该模型发生改变的状态(属于该模型的初值)如三层蒸发模型中计算出的 WU,WL,WD,又要作为 下一时段土壤含水量的初值。
1 洪水预报模型
在中央洪水预报系统提供的 25 个常用洪水预报模型的基础上,考虑到应用的需求,对其中 12 个 模型进行了组件化。12 个模型及其所属类型见表 1。
表 1 常用洪水预报模型及其类型
洪水预报模型 新安江模型 萨克拉门托模型
陕北模型 水箱模型 多输入单输出模型 P_Pa_R 模型
模型类型 流域产汇流模型 流域产汇流模型 流域产汇流模型 流域产汇流模型
相关文档
最新文档