• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    水文模型的服務(wù)化封裝方法研究與應(yīng)用

    2022-07-27 05:58:28余宇峰胡健偉朱躍龍萬定生張錦堂
    關(guān)鍵詞:服務(wù)化調(diào)用水文

    余宇峰,胡健偉,嚴(yán) 琳,朱躍龍,萬定生,姚 成,張錦堂

    (1.河海大學(xué)計(jì)算機(jī)與信息學(xué)院,江蘇 南京 210098; 2.水利部信息中心,北京 100053;3.銳捷網(wǎng)絡(luò)(蘇州)有限公司,江蘇 蘇州 350002; 4.安徽省水文局,安徽 合肥 230022 )

    水文模型作為水文過程的模擬手段,在洪水預(yù)報(bào)、工程設(shè)計(jì)及水文機(jī)理研究中起著十分重要的作用[1]。經(jīng)過多年的研究,國內(nèi)外水文學(xué)家、氣象學(xué)家、生態(tài)學(xué)家分別從不同視角在不同學(xué)科領(lǐng)域構(gòu)建了大量不同復(fù)雜程度的水文模型[2-10],如黑箱模型、概念模型和分布式水文模型等。隨著人們對(duì)高質(zhì)量的水文數(shù)據(jù)以及優(yōu)秀水文模型的需求日益增加,如何應(yīng)用組合式水文模型[11]的理念,將具有獨(dú)立、異構(gòu)、封閉特征的水文模型資源按一定標(biāo)準(zhǔn)拆分、封裝為服務(wù),并通過特定的建??蚣芑蚪涌跇?biāo)準(zhǔn),靈活地將服務(wù)組合并共享為能應(yīng)用于不同場(chǎng)景的系統(tǒng),從而提升水文模型的共享能力,為水文工作者提供更方便快捷的應(yīng)用服務(wù),是水文模型服務(wù)化應(yīng)用的主要研究方向[6,12]。

    在開放網(wǎng)絡(luò)環(huán)境下,模型服務(wù)化是當(dāng)前實(shí)現(xiàn)模型封裝與共享的主流方式[13-15]。模型服務(wù)將水文模型的業(yè)務(wù)邏輯和數(shù)據(jù)流程統(tǒng)一封裝,用戶只需調(diào)用統(tǒng)一的服務(wù)接口即可實(shí)現(xiàn)模型的調(diào)用,既簡(jiǎn)化了水文模型的使用,又保證了模型共享的安全性。因此,本文研究了一套水文模型的多粒度拆分與服務(wù)化封裝方法,以為水文業(yè)務(wù)提供靈活、高效、可共享的模型服務(wù)。

    1 模型的服務(wù)化封裝與組合

    1.1 服務(wù)化封裝策略

    由于水文模型的跨流域性、多樣性等特點(diǎn),模型調(diào)用接口(.exe、.dll等)、編程語言 (Fortran、C/C++、Java等)、操作系統(tǒng) (Windows、Linux)等方面存在異構(gòu)[16-18]。為了實(shí)現(xiàn)水文模型不同調(diào)用接口、服務(wù)容器和應(yīng)用平臺(tái)的服務(wù)化共享,將模型服務(wù)流程劃分為服務(wù)定義、服務(wù)應(yīng)用和服務(wù)管理3種角色。服務(wù)定義負(fù)責(zé)模型描述、模型內(nèi)部水文分析算法與模塊的設(shè)計(jì)實(shí)現(xiàn)、模型內(nèi)部數(shù)據(jù)交換格式與流程定義等;服務(wù)應(yīng)用面向服務(wù)消費(fèi)者,負(fù)責(zé)按模型描述和數(shù)據(jù)格式、流程定義對(duì)輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理,然后調(diào)用模型服務(wù)獲取運(yùn)行結(jié)果;服務(wù)管理根據(jù)模型描述信息,將服務(wù)定義注冊(cè)發(fā)布的模型服務(wù)添加(更新)進(jìn)模型庫,并根據(jù)服務(wù)應(yīng)用的需求進(jìn)行分項(xiàng)管理。水文模型服務(wù)化封裝方法邏輯流程如圖1所示。

    圖1 模型服務(wù)化封裝方法流程Fig.1 Flow chart of service-oriented encapsulation method for model

    1.2 接口抽象化

    服務(wù)化封裝的目的是面向水文應(yīng)用業(yè)務(wù),屏蔽模型間的異構(gòu)性、復(fù)雜性,使得服務(wù)調(diào)用者專注于業(yè)務(wù)需求,直接面向更直觀、更方便調(diào)用的服務(wù)接口。模型服務(wù)定義方根據(jù)模型服務(wù)化封裝的應(yīng)用需求,可將模型服務(wù)抽象為服務(wù)描述、服務(wù)操作和服務(wù)部署三類接口。

    a.服務(wù)描述接口以結(jié)構(gòu)化方式定義服務(wù)相關(guān)的語義信息(如服務(wù)標(biāo)識(shí)、名稱、類型、提供者、服務(wù)簡(jiǎn)介、適用區(qū)域等)并提供資源信息(如使用手冊(cè)),實(shí)現(xiàn)模型定義、分類以及原理等描述信息的規(guī)范性表達(dá)。

    b.服務(wù)操作接口采用面向?qū)ο蟮氖录?狀態(tài)響應(yīng)機(jī)制,將模型的操作運(yùn)算過程封裝成事件-狀態(tài)響應(yīng)信息流,通過對(duì)服務(wù)輸入輸出和服務(wù)運(yùn)算操作行為的結(jié)構(gòu)化、流程化定義描述,實(shí)現(xiàn)服務(wù)與內(nèi)部流程間的映射。

    c.服務(wù)部署接口以結(jié)構(gòu)化的形式提供模型部署所需的環(huán)境信息、服務(wù)調(diào)用URL及輸入?yún)?shù)列表信息等,實(shí)現(xiàn)服務(wù)部署信息的形式化描述及方便快捷部署。

    1.3 服務(wù)顆?;?/h3>

    為了滿足可動(dòng)態(tài)組合配置及可共享服務(wù)的應(yīng)用需求,水文模型遵循最小化、模塊化、可獨(dú)立運(yùn)行和軟件工程建設(shè)原則,將模型中的各業(yè)務(wù)流程分解成不同的功能模塊和計(jì)算單元,并按具體的業(yè)務(wù)應(yīng)用需求進(jìn)行動(dòng)態(tài)組裝和重配置,形成面向應(yīng)用需求的水文模型。

    結(jié)合水文分析業(yè)務(wù)應(yīng)用,提出數(shù)據(jù)-算法-模塊-模型4個(gè)層面的模型服務(wù)化封裝粒度。①數(shù)據(jù)服務(wù)將數(shù)據(jù)讀寫操作封裝成統(tǒng)一的輸入輸出接口,為業(yè)務(wù)操作提供標(biāo)準(zhǔn)化的數(shù)據(jù)讀寫服務(wù);②算法服務(wù)將業(yè)務(wù)應(yīng)用中不可再分的最小邏輯單元封裝成統(tǒng)一的運(yùn)算邏輯,如水文過程中的某個(gè)具體計(jì)算公式(曼寧公式)或方程(下滲方程)等;③模塊服務(wù)是按照一定的邏輯調(diào)用一系列算法服務(wù)實(shí)現(xiàn)的某類特定功能的服務(wù)組合,如網(wǎng)格單元產(chǎn)流過程、匯流過程等;④模型服務(wù)則根據(jù)洪水預(yù)報(bào)業(yè)務(wù)需求,組合不同的模塊服務(wù),形成針對(duì)某個(gè)特定區(qū)域的某類具體業(yè)務(wù)應(yīng)用,如依據(jù)預(yù)報(bào)流程調(diào)用蒸散發(fā)模塊、融積雪模塊、壤中流模塊、地表徑流模塊和河道徑流模塊,組合得到針對(duì)特定流域的TOPKAPI預(yù)報(bào)模型服務(wù)[3]。

    水文模型服務(wù)框架如圖2所示,圖中的正方形、三角形和圓形分別代表模型、模塊和算法層面的服務(wù)節(jié)點(diǎn)。模型分析實(shí)現(xiàn)了模型業(yè)務(wù)功能的原子化多粒度拆分解耦及業(yè)務(wù)流程的分離,減少了服務(wù)之間的重疊,增強(qiáng)了服務(wù)的獨(dú)立性和邏輯耦合性。服務(wù)組合則依據(jù)不同場(chǎng)景的具體業(yè)務(wù)應(yīng)用需求,分別選擇不同的算法服務(wù)組合成模塊、不同的模塊組合成模型。

    圖2 水文模型服務(wù)框架Fig.2 Service framework of hydrological model

    1.4 服務(wù)注冊(cè)與組合

    將獨(dú)立完成基本業(yè)務(wù)功能的最小顆粒服務(wù)封裝成算法,按業(yè)務(wù)類別,將算法統(tǒng)一注冊(cè)并發(fā)布到模型庫,采用結(jié)構(gòu)化語言描述各算法的接口信息,形成多類業(yè)務(wù)服務(wù)集合,為服務(wù)組合提供基礎(chǔ)。服務(wù)組合包括服務(wù)的組合應(yīng)用和組合管理。

    a.服務(wù)組合應(yīng)用:依據(jù)應(yīng)用需求,調(diào)用和讀取算法接口,將一個(gè)或多個(gè)算法服務(wù)重組成模塊服務(wù),以滿足簡(jiǎn)單預(yù)報(bào)分析業(yè)務(wù)的需要;并進(jìn)一步調(diào)用多個(gè)模塊服務(wù)重組成模型服務(wù),以滿足綜合預(yù)報(bào)分析業(yè)務(wù)的需要。服務(wù)組合后形成的模塊服務(wù)或模型服務(wù)也可通過服務(wù)注冊(cè)發(fā)布到模型庫供用戶調(diào)用。

    b.服務(wù)組合管理主要實(shí)現(xiàn)算法-模塊-模型服務(wù)的更新重組。算法服務(wù)更新,在水文分析流程不變的情況下,模塊服務(wù)和模型服務(wù)無需更新;模塊服務(wù)功能發(fā)生變化,需要重組模塊服務(wù),模型服務(wù)相應(yīng)需要重組,算法服務(wù)不變。

    服務(wù)組合實(shí)現(xiàn)了算法-模塊-模型的動(dòng)態(tài)服務(wù)組合與共享:按一定的邏輯流程調(diào)用若干個(gè)獨(dú)立的算法服務(wù)可以組合形成模塊服務(wù),同一算法服務(wù)可以被多個(gè)模塊服務(wù)共享調(diào)用;同理,調(diào)用若干個(gè)模塊服務(wù)可動(dòng)態(tài)組合成面向特定應(yīng)用需求的水文模型服務(wù),同一模塊服務(wù)也可被不同的模型服務(wù)共享調(diào)用。

    2 模型的服務(wù)化封裝

    2.1 數(shù)據(jù)服務(wù)化封裝

    水文業(yè)務(wù)應(yīng)用中的數(shù)據(jù)和種類多源,水文數(shù)據(jù)庫中存儲(chǔ)的水文數(shù)據(jù)按照業(yè)務(wù)可分成基礎(chǔ)水文信息、實(shí)時(shí)雨情水情、水環(huán)境、土壤墑情等。對(duì)水文數(shù)據(jù)服務(wù)化封裝包括數(shù)據(jù)描述、數(shù)據(jù)操作和服務(wù)部署三類接口。數(shù)據(jù)服務(wù)化封裝方法如圖3所示。

    圖3 數(shù)據(jù)服務(wù)化封裝方法Fig.3 Service packaging method for data

    數(shù)據(jù)描述接口定義了數(shù)據(jù)集的訪問地址、服務(wù)標(biāo)識(shí)、訪問模式、讀寫權(quán)限等信息。數(shù)據(jù)操作接口完成對(duì)數(shù)據(jù)的讀寫、讀寫條件和讀寫結(jié)果等的封裝。服務(wù)部署接口實(shí)現(xiàn)服務(wù)配置、服務(wù)調(diào)用接口和服務(wù)調(diào)用參數(shù)列表等數(shù)據(jù)服務(wù)的發(fā)布和部署配置。數(shù)據(jù)服務(wù)化封裝對(duì)用戶屏蔽了數(shù)據(jù)內(nèi)部的計(jì)算過程,算法或模型只需調(diào)用數(shù)據(jù)服務(wù)化封裝中的相應(yīng)接口即可完成對(duì)數(shù)據(jù)的存取和計(jì)算,實(shí)現(xiàn)了模型的統(tǒng)一數(shù)據(jù)調(diào)用。

    2.2 算法服務(wù)化封裝

    算法是水文模型模塊化分解中的最小邏輯單元,如數(shù)學(xué)公式和物理規(guī)律等。通過對(duì)水文基礎(chǔ)業(yè)務(wù)功能特征分析,水文算法可以封裝成算法描述、算法操作和算法部署三類服務(wù)接口。①算法描述接口定義了算法的服務(wù)標(biāo)識(shí)、名稱、類型、簡(jiǎn)介等信息,便于用戶識(shí)別和調(diào)用。②算法操作接口定義數(shù)據(jù)輸入、計(jì)算流程和執(zhí)行結(jié)果,其中數(shù)據(jù)輸入調(diào)用數(shù)據(jù)服務(wù)接口并將數(shù)據(jù)進(jìn)一步整合或處理成算法執(zhí)行所需數(shù)據(jù);計(jì)算流程是算法服務(wù)化封裝的主要部分,實(shí)現(xiàn)算法中的水文業(yè)務(wù)邏輯和水文計(jì)算;執(zhí)行結(jié)果將計(jì)算流程中產(chǎn)生的結(jié)果輸出至JSON格式或文件類型數(shù)據(jù)。③算法部署接口實(shí)現(xiàn)算法服務(wù)的發(fā)布和部署配置,分別定義服務(wù)部署配置、服務(wù)接口的URL、服務(wù)所需的輸入?yún)?shù)等。

    圖4 算法服務(wù)化封裝方法Fig.4 Service packaging method for algorithm

    同一類型的水文過程具有相同(相似)的輸入輸出和不同的計(jì)算方法,可以將不同的計(jì)算方法封裝成算法服務(wù)并組成同類過程算法庫,為水文過程的模塊組合提供多種可能性。如蒸散發(fā)過程中根據(jù)土壤特性涉及上層、下層和深層蒸散發(fā)計(jì)算,因此,可以將土壤上層、下層和深層蒸散發(fā)計(jì)算封裝成的3個(gè)算法加入蒸散發(fā)過程算法庫,并依據(jù)具體應(yīng)用場(chǎng)景選擇不同的蒸散發(fā)算法組合成不同的模塊。

    2.3 模塊服務(wù)化封裝

    模塊是可組合成模型、能完成某些特定功能并具有明確調(diào)用接口的獨(dú)立服務(wù)單元[19]。傳統(tǒng)水文模型大多是封閉獨(dú)立系統(tǒng),模型中存在大量冗余和重復(fù)模塊。如傳統(tǒng)新安江模型和陜北模型都包含有蒸散發(fā)模塊、匯流模塊和河道匯流模塊[20],盡管兩個(gè)模型中蒸散發(fā)模塊的具體過程(上層、下層和深層蒸散發(fā)計(jì)算過程的組合)不一,但其基本原理和實(shí)現(xiàn)功能基本一致。因此,本文采用面向?qū)ο竽K化封裝和拆分思想,根據(jù)水文模塊具體實(shí)現(xiàn)的功能,選擇不同的算法服務(wù)化封裝成不同的模塊,以提升模塊服務(wù)的共享能力和可擴(kuò)展性。

    如圖5所示,水文模塊的服務(wù)化封裝思路大致與算法服務(wù)化封裝一致,兩者的區(qū)別主要在于水文模塊除了實(shí)現(xiàn)自身特有的計(jì)算邏輯外,有時(shí)還需要調(diào)用其他算法或模塊,因此,模塊服務(wù)化封裝實(shí)現(xiàn)流程分為自身計(jì)算流程和外部調(diào)用流程兩部分。模塊自身計(jì)算流程與算法的操作類型一致,主要調(diào)用封裝的算法實(shí)現(xiàn)邏輯需求;外部調(diào)用流程則通過配置接口相關(guān)參數(shù)調(diào)用其他模塊接口實(shí)現(xiàn)模塊服務(wù)間的調(diào)用。

    圖5 模塊服務(wù)化封裝方法Fig.5 Service packaging method for module

    將功能相同、計(jì)算過程不相同的算法服務(wù)進(jìn)行組合并封裝,形成模塊服務(wù)。如調(diào)用上層蒸散發(fā)算法得到一層蒸散發(fā)模塊,調(diào)用上層、下層蒸散發(fā)算法組合得到二層蒸散發(fā)模塊。為便于模型組合調(diào)用,將具有相同功能特點(diǎn)的模塊進(jìn)行分類并構(gòu)建模塊庫。圖6為蒸散發(fā)模塊庫和匯流模塊庫中模塊的組合服務(wù)化封裝實(shí)例,用戶可以根據(jù)應(yīng)用場(chǎng)景選擇不同的算法,構(gòu)建滿足需求的模塊,從而實(shí)現(xiàn)算法-模塊的動(dòng)態(tài)組合,提升算法的共享和模塊組合服務(wù)能力。

    圖6 模塊服務(wù)化封裝實(shí)例Fig.6 Service packaging example for module

    2.4 模型服務(wù)化封裝

    模型服務(wù)化封裝的主要工作是依據(jù)流域特征及適用條件,選擇合適的模塊服務(wù)動(dòng)態(tài)組裝配置成不同的水文模型服務(wù),最后通過模型部署接口將模型注冊(cè)到模型庫,實(shí)現(xiàn)模型的動(dòng)態(tài)組合配置和集成共享。模型服務(wù)化封裝及其流程如圖7所示。

    圖7 模型服務(wù)化封裝方法Fig.7 Service packaging strategy for model

    模型描述接口定義了模型服務(wù)標(biāo)識(shí)、名稱、類型、作者、版本號(hào)、服務(wù)簡(jiǎn)介等基本信息。模型操作接口定義了模型實(shí)現(xiàn)所需的輸入、模塊服務(wù)組合配置、結(jié)果輸出,其中模塊服務(wù)組合配置通過調(diào)用模塊服務(wù)接口、配置其執(zhí)行順序及模塊間的信息交互實(shí)現(xiàn)模型的動(dòng)態(tài)組合功能。模型部署接口實(shí)現(xiàn)將模型注冊(cè)到模型庫并部署配置的功能。

    3 實(shí)例驗(yàn)證

    3.1 柵格新安江模型服務(wù)化封裝

    柵格新安江模型(Grid-Xin’anjiang Model,GXM)[4]是融合數(shù)字高程模型(digital elevation model,DEM)和新安江模型構(gòu)建的分布式水文模型。GXM將研究區(qū)域劃分為正交的單元網(wǎng)格,然后采用新安江模型計(jì)算每個(gè)網(wǎng)格單元的產(chǎn)流和三水源,最后依據(jù)單元網(wǎng)格的演算關(guān)系計(jì)算出口斷面流量。GXM按其功能可劃分的算法-模塊-模型服務(wù)組合結(jié)構(gòu)如圖8所示。

    圖8 柵格型新安江模型的模塊-算法拆分Fig.8 Module-algorithm decomposition of GXM model

    本文將相應(yīng)的模塊和算法進(jìn)行了服務(wù)化封裝和部署,然后依據(jù)GXM的計(jì)算流程,調(diào)用圖8中所需的算法服務(wù)組合成相關(guān)的模塊服務(wù),然后再調(diào)用組合的模塊服務(wù)構(gòu)建模型服務(wù)。算法-模塊-模型服務(wù)經(jīng)注冊(cè)部署后,形成的服務(wù)列表如圖9所示。

    圖9 柵格新安江模型組合配置Fig.9 Composition and deployment of GXM model

    3.2 模型服務(wù)化應(yīng)用

    皖南橫江流域位于新安江上游,是典型的南方濕潤山區(qū)氣候,其主要控制站屯溪水文站集水面積2 696.76 km2。屯溪以上流域?qū)偕絽^(qū)性河流,年降水量在1 500 mm以上,主要集中在5—9月,由于受地勢(shì)變化及土壤植被等因素的影響,夏季多發(fā)洪澇災(zāi)害。本文以新安江屯溪水文站以上流域?yàn)槔_展GXM服務(wù)化封裝的應(yīng)用分析。

    將GXM的算法-模塊-模型服務(wù)化封裝后注冊(cè)到中小河流洪水預(yù)報(bào)平臺(tái)模型庫,便可在門戶系統(tǒng)中查詢模型服務(wù),通過在用戶界面中輸入模型執(zhí)行所需參數(shù)和數(shù)據(jù)文件后,點(diǎn)擊“調(diào)用”按鈕,即可調(diào)用柵格新安江模型服務(wù)進(jìn)行相應(yīng)的預(yù)報(bào)。圖10為2016年6月20日15:00至21日15:00GXM模型預(yù)報(bào)的屯溪水文站斷面流量結(jié)果。

    圖10 柵格新安江模型服務(wù)調(diào)用與運(yùn)行結(jié)果Fig.10 Call and running results of GXM model service

    4 結(jié) 語

    本文以解決水文模型的異構(gòu)化、實(shí)現(xiàn)模型的共享應(yīng)用和組合配置為目標(biāo),進(jìn)行模型服務(wù)化封裝方法與應(yīng)用研究。提出了面向?qū)ο蟮姆?wù)化封裝和組合配置方法,定義了模型描述、操作和部署接口等封裝內(nèi)容,實(shí)現(xiàn)了水文模型的數(shù)據(jù)-算法-模塊-模型多粒度拆分解耦與服務(wù)化封裝,提升了業(yè)務(wù)需求驅(qū)動(dòng)的水文模型組合配置和模型共享能力。基于該方法設(shè)計(jì)了洪水預(yù)報(bào)模型服務(wù)框架,并應(yīng)用于中小河流洪水預(yù)報(bào)預(yù)警智能調(diào)度決策支持平臺(tái),驗(yàn)證了該方法的可行性和有效性。但是,目前模塊和模型的封裝及組合配置要采用人工方式進(jìn)行,后續(xù)應(yīng)研究基于工作流的模塊模型自動(dòng)組合配置方法,以進(jìn)一步提升模型的共享能力和服務(wù)能力。

    猜你喜歡
    服務(wù)化調(diào)用水文
    2022年《中國水文年報(bào)》發(fā)布
    制造企業(yè)服務(wù)化程度、服務(wù)化模式和服務(wù)化收益研究
    水文
    水文水資源管理
    核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    制造業(yè)服務(wù)化發(fā)展戰(zhàn)略研究
    水文
    基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
    制造服務(wù)化發(fā)展戰(zhàn)略
    探索| 霞浦县| 北安市| 肃宁县| 东乌珠穆沁旗| 榆社县| 南平市| 安吉县| 长兴县| 固始县| 苏州市| 托里县| 唐河县| 东方市| 宜昌市| 淮南市| 东丽区| 尼玛县| 义马市| 毕节市| 慈溪市| 望谟县| 新沂市| 新竹县| 雅江县| 招远市| 黄平县| 泰顺县| 乌苏市| 威宁| 黄梅县| 通许县| 光泽县| 衢州市| 永仁县| 高邮市| 曲靖市| 喀什市| 孝义市| 曲水县| 昌都县|