摘要:通過對模型庫系統的研究,建立并實現了B/S結構的基于Web的新疆融雪洪水預警模型庫系統。該系統將成熟的關系型數據庫系統技術與模型庫理論集成在一起,結合參數元理論,并充分利用面向對象技術,從根本上解決了模型的表示、模型的管理、模型的組合運行、模型數據的共享和交換及模型的復用等關鍵性問題。
關鍵詞:融雪洪水;模型庫系統;參數元;面向對象
中圖分類號:TP311.13文獻標志碼:A
文章編號:1001-3695(2008)03-0803-04
0引言
融雪洪水預警模型庫系統包括模型庫和模型庫管理系統。模型庫強調模型的存儲與表示、組織與應用,而模型庫管理系統則提供對模型的檢索、存取、更新、組合、運行等操作。目前模型庫系統主要研究領域仍然是有關模型表示和模型操縱的研究。在表現形式上,模型庫是各種模型的集合;在軟件內容上,模型庫則由許多面向對象的關系型數據庫組成。
國外模型管理理論的研究始于20世紀80年代。Blanning[1]首次提出了模型庫的概念,并設計了類似于數據庫查詢語言的模型庫查詢語言(model query language,MQL)來管理模型;Dolk等人[2]提出了基于框架和知識表達的模型抽象技術;Geoffrion[3]設計了一套結構化模型構造語言SML,首次將結構化程序設計思路植入模型生成問題;Muhana等人[4]又將系統論的概念用于模型庫管理系統;Liang Tingpeng[5]將推理知識學習方法融進了模型庫管理系統。國內自20世紀90年代以來,在GIS模型庫系統平臺、模型的標準化、模型的集成以及面向對象的模型庫等方面都進行了深入的研究。例如,李京等人[6]設計的基于C/S模式的模型庫管理系統,能夠較好地支持C/S模式的決策支持系統的開發和運行;黃躍進等人[7]采用框架來進行模型庫的構建和管理,便于模型的重建和組合;畢建濤等人[8]提出了模型方法元數據的概念;LI Chaofeng[9]從數學角度討論了使用元圖表示模型庫的方式,它是對基于圖形的表示方式的擴充與改進;薛安等人[10]研究并提出了元模型的結構和實現算法。目前,國內開發的模型庫系統多是基于C/S結構或單機系統的,而且模型的粒度較大,模型間的通信往往是通過數據文件或公用通信區的形式進行的,因此模型的運行效率較低,模型的組合也很困難。而一些基于靜態函數庫的系統往往可擴充性較差[6]。國內也有部分B/S結構的模型庫系統的運用[11~13],但不很成熟,未能解決模型標準化問題、模型庫與數據庫之間的數據交換等關鍵問題。
到目前為止,還沒有關于模型庫系統的統一標準,也尚未出現成熟的商品軟件,模型庫系統的開發均由研制者自行完成的。為了充分高效地利用已有的模型庫知識和融雪洪水模型,開發必要的新模型,以下幾點是必須考慮的:a)減少模型的重復構建幾率;b)有利于現有模型的充分利用和不同專業用戶的交流;c)有利于不同模型集成時模型的選擇;d)有利于不同數學表達的模型間的比較選擇;e)有利于用戶在使用時不必接觸大量的編程操作與了解模型參數作用機理;f)有利于發現與改進概念表達內涵已經發生變化的模型;g)最終有利于自然地理的定量化表達。
筆者在對基于3S技術的新疆融雪洪水預警決策支持系統課題的研究中建立并實現了B/S結構的新疆融雪洪水預警模型庫系統。該模型庫系統的設計充分利用關系型數據庫技術和面向對象技術,采用完全模塊化結構,實現模塊與系統完全獨立,規范化和標準化模型的輸入、輸出數據格式,同時也做到了數據輸入/輸出既可以是數據庫方式,也可以是文件方式;模型庫不僅包含融雪洪水預警模型和方法,還可以增加其他常用的洪水預報模型和方法;模型可被任意選擇、組合用于構建融雪洪水預警方案。
1模型庫系統發展過程
自20世紀70年代后期模型庫思想問世以來,對于模型的管理經歷了模型、模型軟件包和模型庫管理系統三個發展階段[14]。第一階段的模型彼此獨立,缺乏對模型的管理,各專業之間幾乎全無了解;第二階段缺乏對大批模型的有效管理,幾乎是對模型的全數學方法處理,各模型間沒有任何關系也沒有任何約束,不利于選擇需要的模型;第三階段初步實現了基于模型庫的模型管理,可以提供模型存儲和表示模式及模型運行的計算機系統。將眾多的預報模型按固定的、公開的結構形式組織起來,通過模型庫管理系統對各個模型進行有效的管理和使用。各模型之間的區別在于其理論結構,而共同的組織形式可使其成為一個共享的整體,任何技術人員均可利用模型庫開發洪水預警系統。從軟件角度來說,模型庫中各模型均是一個模型構件,可被重復使用并組裝成應用系統。它是決策支持系統的共享資源。
根據數據庫系統發展的經驗和前人對模型庫管理系統的研究表明,新一代模型庫管理系統應具有如下主要特征:模型要有比較統一的邏輯表示形式、有獨立于模型的求解方法、可以表示模型有關輔助信息,以便從模型庫中快速選取模型;具有組合運行能力,模型能夠與數據庫自由交換信息,可以快速增加和更新模型。從軟件技術和生產應用上,模型庫應具備復用性、獨立性、統一性和擴充性。
隨著Web技術的發展,B/S結構的系統優勢越來越被接受和廣泛地運用,開發B/S結構的模型庫系統無疑是對傳統的基于C/S結構的模型庫系統的擴展。
2基于參數元的融雪洪水預警模型庫系統
2.1模型與數據的集成
模型庫管理系統類似于關系型數據庫管理系統,是隨著決策支持系統的需要而發展起來的。在模型庫系統管理下,可以有效地對模型及其數據進行各種操作。從實踐上實現這樣一個系統有幾個關鍵問題需要研究,如模型的存儲形式、模型的選擇、模型數據規范格式、模型數據的共享和交換、模型的集成、模型與方法庫的接口、模型與數據庫的連接等。
融雪洪水預警模型庫系統的思想來源于數據庫的理論。數據庫是存儲在計算機內相關數據的有規則的集合,它們有結構地組織在數據庫內,具有較小的數據冗余度和較高的數據獨立性。對于數據庫,需要建立數據模型和考慮數據物理存儲方法,并建立其對應關系,使用戶能夠通過數據庫管理系統找到所要訪問的數據,而不必關心數據具體的存儲過程,也不必擔心存儲結構的改變而影響數據的訪問。模型庫與數據庫的區別是模型庫中存儲的并不是模型本身,它以參數元形式與其他元數據形式在數據庫中存在;模型庫是構架在數據庫之上的系統,具有方便操作的界面,通過建立索引與模型的各部分建立聯系。
因此本文使用了數學上參數元的概念。模型庫在系統中是一種邏輯存在關系,以參數元進行傳遞,達到從數據庫中存取信息的目的。所謂參數元方法,是在模型庫中,模型的參數不具有有效的數學意義和物理意義,模型被表示成模型外部變量參數(不包括常數與數學運算符)的符號化表示。符合條件的參數稱之為參數元,但它不等同于元數據。元數據是描述數據的數據,而參數元只是為描述模型在模型庫中存放的一種符號,它與模型參數在表現形式上一致。對模型庫的操作其實是對這些參數元的操作,但這是一種虛操作,元模型不以實際形式而存在,而以參數元的集合形式存在。在模型結構表中,每一條記錄都是一個元模型的虛擬表達形式,這樣在運行模型庫管理系統時,展現在用戶面前的模型是模型文本方式或其他方式。參數元本身不具有實際意義,但它可以通過表與表間字段的聯系,與參數數據庫或空間數據庫建立連接關系,以達到調用數據的目的。因此,參數元是關于模型庫的數據庫,參數數據庫是關于參數元的數據庫。與數據庫不同的是,這些參數元之間存在一種函數的依賴關系,模型的運行是在原模型基礎上,由程序調用參數元的索引,通過方法庫,調用空間數據庫對模型參數進行賦值,或者由用戶直接進行初始賦值,并在后臺運行模型得到結果。由模型庫管理系統對模型庫進行操作,每個元模型以多對多的關系與參數元建立聯系,而每個參數元以一對一的關系與數據庫保持聯系。這樣就可以保證模型庫與數據庫或者空間數據庫保持相對獨立,在模型運行時又可以與數據庫或者空間數據庫進行數據交換,從而有效地解決了模型與數據集成的問題。
2.2模型庫系統中的表及其關系
融雪洪水預警模型庫系統的開發完全代之于全關系型系統,幾乎包括模型庫系統應用具有的所有操作。其主要表結構與關系具體如下:
a)模型信息表(元模型表)。它是模型庫中最為關鍵的表,包括模型名稱信息、模型功能描述;模型分類信息,將模型按照項目規劃進行詳細的分類,便于利用模型庫進行類別查詢,也便于其他用戶清楚模型的使用范圍;模型管理信息,如模型開發者、模型程序編制者信息,每個模型入庫時間、適用條件等。
b)模型參數表(元數據表)。可以再細分成兩類表:(a)模型參數類型表,它規定模型之間、模型與外界之間進行信息交換的數據種類和格式定義,包括類型名稱、類型含義、該類型包含的參數名稱、參數格式定義、參數性質(輸入、輸出、輸入或輸出)等;(b)模型數據表,它規定每個模型用到哪些參數類型,建立與第一類表之間一對多的映射,同時對模型類型的參數格式的定義更詳細和具體。
c)模型運行表(實例數據表)。它是元模型表和元數據表的具體化,包括兩類實例表,即對模型信息表進行實例化和對模型參數表進行實例化。這樣不同的模型或者模型組合賦予不同的輸入、輸出參數值,就形成不同的模型實例。
d)參數詞典表。不同的模型需要不同的參數數據、參數名稱的規范和統一,每種參數所代表精確的物理意義,是保證模型數據接口統一、數據共享的基礎,也是用戶準確理解模型參數意義的前提。對于國內用戶,更為關鍵的一點是對獲得容易混淆的物理概念參數時顯得極為有利,如漢語中入滲、下滲、滲流、滲透與英文中leaching、penetrate、infiltration、seepage、sink、ooze等概念,在常用工具詞典中界限不清,而參數詞典則起到了一部專業辭海的作用。系統的模型參數借鑒了美國的SWAT[15](soil and water assessment tool)模型的參數表。
2.3模型庫系統的表結構設計
根據實際,由模型庫中五類不同用途的表在融雪洪水預警模型庫中建立了九個關系型表。
a)模型信息表:存儲模型英文簡稱、中文名稱、模型功能描述信息、模型適用條件范圍、模型作者、模型類型等。
b)模型數據接口類型文件表:存儲接口類型文件名、接口類型文件的擴展名、接口類型文件的含義、接口類型文件數據格式、接口類型文件性質等。
c)模型數據接口類型文件表:存儲模型的英文簡稱、接口類型文件的擴展名、模型數據接口文件名稱、模型數據接口數據格式、模型數據接口文件性質等。
d)模型計算管理表:存儲模型計算管理流水號、模型計算管理名稱等。
e)模型計算過程表:存儲模型計算管理流水號、模型計算過程次序編號、模型英文簡稱、數據站點編號、模型計算過程所需的數據接口文件等。
f)模型計算過程數據接口文件表:存儲模型計算過程標志、模型計算管理流水號、模型計算過程的數據接口文件名稱、數據接口文件的詳細數據、詳細數據的數據行數等。該表既提供模型計算的參數數據來源,也保存模型計算的結果,而計算結果又可以作為下一個模型計算的參數數據來源。
g)模型參數詞典表:存儲參數的英文簡稱、類型、英文全稱、中文全稱、含義、物理單位、默認值、參考來源等。
h)站點名稱編號表:該表存儲站點名稱、編號、位置、信息等。
i)數據文件上傳表:存儲數據文件名稱、類型、數據保存的文件夾、數據文件上傳時間等。
其中:表a)屬于元模型表;b)c)屬于元數據表;d)~f)屬于實例數據表;g)屬于元參數詞典表;h)i)屬于相關輔助表。
3融雪洪水預警模型庫參數格式定義
融雪洪水預警模型庫系統的輸入/輸出參數類型經分析可以歸納成兩類:
a)參數格式(模型起始狀態參數和運算結果參數)。每一行參數分為兩部分:第一部分為參數中文含義和物理量單位,再加冒號;第二部分為參數名稱和參數值,參數名稱必須在參數詞典中有定義,在參數詞典中能夠查詢到該參數的詳細信息。參數值可以是數值、字符,甚至是柵格圖像文件,后跟分號表示一個參數定義結束。例如:
積雪穩定下滲率(mm/s)=0.3;
融雪初始溫度(℃):SMTMP=0.50;
單元柵格平均海拔高度(m):HAHRU=2321.0;
單元柵格水流流向:FDM=FDM.TIF;
……
b)模型時間間隔參數格式(等時段連續間隔參數數據)。參數數據分成兩塊,第一塊是對參數的說明,占單獨的一行。此行又分為四部分:第一部分為參數中文含義和物理量單位,后面跟冒號;從第二部分開始依次是參數名稱、記錄行數、記錄列數,最后加分號表示一行結束。第二塊是詳細的數據值,有多少記錄數就有多少行數值。每行數值的列數由記錄列數決定,但是第一列數據必須是時間,每行結束后加分號。例如:
流域出口斷面總流量(m2/s):RTW 6 2;
JTH002 200503121230 268;
JTH002 200503121430 272;
JTH002 200503121630 270;
……
對上述兩類參數格式,無論是輸入還是輸出參數都將保存在一起,而不必分成輸入和輸出兩部分。目前許多系統是將其分開的,這給數據共享帶來諸多不便。系統通過模型參數操作類來訪問讀寫參數數據,用戶需要按規范格式書寫參數數據,系統將模型運行的結果按規范格式寫入參數數據中,供其他模型調用,很好地解決了模型庫和數據庫的數據交換問題。不僅如此,用戶還可以根據需求將模型參數導出到惟一的參數文件中,參數文件名稱由模型運行表記錄中的字段惟一決定,并將此參數文件通過HTTP協議下載到客戶端;反之亦成立,極大地方便用戶使用。
4融雪洪水預警模型庫系統的類設計
面向對象技術利用抽象來降低系統的復雜性[16],是一種有效解決問題的方法。在全面分析融雪洪水預警模型庫系統后,歸納出系統需求的六個基本類:模型類、方法類、模型參數操作類、GIS柵格圖像操作類、數據文件傳輸類、系統維護類,它們共同組成一個模型包。在此思想的指導下,開發B/S結構的融雪洪水預警模型庫系統變得容易了。
1)模型類它是系統中最重要的設計,關鍵要做到模型類的標準化,即封裝在模型類的數據成員值和模型處理后的結果值由模型參數操作類來處理,模型處理過程放入模型類的方法成員中。這使開發人員擺脫了繁瑣的數據存取和更多的細節問題,系統的實現僅僅是如何實行實例化類的問題。系統的每一個模型對應一個模型類,模型類名稱要與模型信息表中的模型名稱完全一致,在模型庫系統中運行實例化的模型就變成運行名稱相同的由模型類產生的對象,由此建立模型與模型庫的聯系。
2)方法類包含洪水預報模型常用的方法,供其他類尤其是模型類使用。它不與模型參數關聯。
3)模型參數操作類它用來解決模型與模型參數之間的數據交換問題,實際上也解決了模型庫與數據庫之間數據交換的難題。因此模型庫和數據庫可以相互獨立,帶來模型數據共享、模型任意組合、模型擴充、模型與其他GIS軟件集成等諸多便利。
4)GIS柵格圖像操作類在融雪洪水預警模型庫系統中有一類非常特殊的參數數據與眾不同,它是GIS柵格圖像數據。GIS軟件多用GeoTIFF圖像文件存儲柵格圖像的屬性數據,已成為模型必不可少的參數。在GIS軟件中處理和顯示圖像文件易如反掌,在基于C/S結構的系統中也可以利用GIS軟件的控件對其進行操作。然而,B/S結構下的Web方式很難利用GIS軟件的控件操作柵格圖像數據,所以,系統開發出對圖像數據的提取、修改、保存、產生含有新屬性數據的柵格圖像文件、圖像格式轉換(如TIFF格式與JPEG格式的轉換等)等一系列操作方法,將這些方法封裝在GIS圖像數據操作類中。
5)數據文件傳輸類客戶端的用戶希望將本地參數數據交給服務端的模型庫系統作為模型的輸入參數,或者將服務端模型庫系統運行后的輸出參數數據導出為參數文件保存到本地,均離不開數據文件的上傳和下載,利用HTTP協議開發數據文件傳輸和導入、導出數據庫方法并封裝成類。
6)系統維護類主要從加密、功能控制、用戶權限等來保證系統的安全性,提高融雪洪水預警模型庫系統的安全性。
類的開發采用跨平臺并且有生產力的Java語言,其優點眾所周知,不再詳述。
5模型庫管理機制
由于模型庫往往比較龐大,并且要求可動態生成對象,另外還要求支持分布式環境中決策支持模型的遠程調用,或者是基于Web方式下的運行。不能將模型直接組合作為獨立存在的類打包在模型庫下,通過生成特定的對象直接來使用,必須采用一定的策略對模型庫進行管理。這里,采用OOP思想中的工廠模式來管理和生成模型,稱為模型工廠(model factory)。通過模型工廠方法,可以將模型對象的創建和使用分離[17,18]。
將模型工廠的思想應用到模型庫管理上,首先要定義一個模型接口(ModelInterface)和一個模型工廠類(ModelFactory)。模型庫中的所有模型必須是模型接口ModelInterface的實現,即Java語法規定的所有模型必須實現ModelInterface接口中定義的一系列方法。當調用ModelFactory來產生模型時,生成的不是一個具體模型對象,而是產生一個ModelInterface的對象,通過這個接口對象當中的方法來操縱模型。因此,對不同模型的調用是一種動態管理過程,所執行的操作是不一樣的。其模型調用的過程如圖1所示。
6融雪洪水預警模型庫系統的結構
融雪洪水預警模型是洪水預報模型的一種。洪水預報模型是隨著計算機技術應用和發展而產生的一種對流域上發生的水文過程進行模擬的技術。融雪洪水預警模型庫系統中的融雪洪水徑流模型根據其模擬對象主要分為以下幾種,每一種類模型又有許多不同的子模型:柵格融雪模型,分布式計算單元柵格融雪量;柵格產流模型,分布式計算單元柵格產流量;柵格匯流模型,在各單元柵格產流量的基礎上計算區域(子流域)融雪水量在出口斷面形成的地面徑流流量,完全采用分布式空間水文分析技術實現。
整個融雪洪水預警模型的計算基于水量平衡,由柵格融雪到柵格產流再到柵格匯流。
融雪洪水預警模型庫系統的實現完全采用B/S結構和跨平臺技術,服務端采用Oracle 9i關系型數據庫對模型庫系統進行管理,系統開發采用JSP與JavaBean相結合的技術,系統對模型庫和數據庫的操作利用JDBC技術,Web服務由Tomcat支持。模型庫系統的結構圖如圖2所示。
7結束語
總之,融雪洪水預警模型庫系統不再是一個單純的提供選擇模型的系統,也不再僅是一個描述性系統而變成了容易實現的全關系型的系統。它可以將工作細化到參數元級,通過已經封裝的類,調用參數對應的數據庫文件或按系統要求格式制訂的參數數據,并將模型運行結果展示在用戶面前,以驗證用戶模型選擇的正確性或應用于項目的使用。同時,Web新技術的出現,為模型庫系統的設計和實現提供了新的思路。系統從根本上解決了模型的表示、管理、組合運行,模型數據的共享和交換,模型的重用等關鍵性問題,并給出了實現方法。與傳統模型庫系統最大的不同是該模型庫系統實現了B/S結構下的管理和運行。
參考文獻:
[1]BLANNING R W.Issues in the design of relational model management systems[C]//Proc of National Computer Conference.1983:395-401.
[2]DOLK D K,KOTTEMANN J E.Model integration and a theory of models[J].Decision Support System,1993,9(1):51-63.
[3]GEOFFRION A E.The formal aspects of structured modeling[J].Operation Research,
1989,37(1): 36-421.
[4]MUHANA W A,PICK R A.Composite models in SYMMS[J].IEEE Computer Society,1988,3
(843):418-427.
[5]LIANG Tingpeng.Analogical reasoning and casebased learning in model management systems[J].Desision Support Systems,1993(10): 137160.
[6]李京,孫穎博,劉智深,等.模型庫管理系統的設計和實現[J].軟件學報,1998,9(8):613-618.
[7]黃躍進,反偉勝,朱云龍.空間決策支持系統模型庫系統研究[J].信息與控制,2000,29(3): 219-225.
[8]畢建濤,吳洪橋,曹彥榮,等.資源與環境信息系統中模型方法元數據及其集成[J].地球信息科學,200
2,4(2):1116.
[9]LI Chaofeng.A New representation of model base[J].Journal of South Central University for Nationalities,2002,21(1):56-59.
[10]薛安,馬藹乃,倪晉仁.模型與GIS集成理論初步研究[J].應用基礎與工程科學學報,2002,10
(2):134142.
[11]余志文,劉申,柯銳鵬.基于Web的面向對象模型庫系統[J].地球信息科學,2003,3
(1):7377.
[12]周公樂,工錦地,唐世浩,等.基于Web的遙感模型庫建設中的關鍵技術研究[J].遙感信息,2004,1:38-41.
[13]張振興,王翠茄,劉建峰,等.基于Web服務的模型庫系統的研究與實現[J].華北電力大學學報, 2003,30(4):78-81.
[14]陳文偉.決策支持系統及其開發[M].北京:清華大學出版社,1994.
[15]NEITSCH S L,AMOID J G,KINITY J R,et al.Soil and water assessment tool theoretical documentation[R].Texas:Agricultural Research Service,2001:467-490.
[16]TIMOTHY C L.面向對象軟件工程[M].張紅光,溫遇華,徐巧麗,等譯.北京:機械工業出版社,2003.
[17]王冰,琚春華.面向對象DSS模型庫設計[J].計算機時代,2005(6):1517.
[18]鄒小天.基于J2EE的模型庫系統開發研究[J].武漢理工大學學報,2005,27(12):115117.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”