盛震宇,馮 鈞
(河海大學計算機與信息學院,南京211100)
遙感衛星的發展和遙感影像分辨率的提高使得通過遙感手段獲得的數據量呈幾何級數增長[1],而且會隨著衛星技術、傳感器技術的發展持續快速地增長[2]。利用衛星遙感數據可以實現對水文信息的大范圍,全天候連續不斷的動態監測。水利部提出建設水利遙感中心,對涉水衛星遙感數據進行統一管理,提高涉水衛星遙感數據的共享與利用率。由于遙感影像中的信息必須由專業軟件解析,需要為其建立元數據才便于管理者獲取信息[3]。元數據存儲于XML文檔中,缺乏統一的管理模式,所以需要一種元數據可視化方法,使得管理者直觀地利用友好的可視化界面增強機器與用戶的交互能力,以便更好地處理元數據及掌握水利信息,并使用戶的操作簡便舒適。從某個方面來說,界面對于用戶而言就是整個軟件系統[4]。據統計,在一個應用程序中平均48%的代碼用于用戶界面,大約50%的執行時間用于執行用戶界面程序[5]。并且隨著軟件系統規模的不斷擴大,開發界面所耗費的時間和成本也將成倍增加[6]。因此,高效地開發可視化界面是提高軟件開發效率的關鍵。
目前為止,可視化界面生成領域已經有了一些研究,如文獻[6-9]。這些文獻所采用數據可視化方法均取得一定效果。但是,它們缺乏樣式庫信息,不能將界面生成和輸入驗證集成到一起。同時,如果采用XML描述界面元素,方法過于靈活,缺乏統一的描述標準。
本文針對水利元數據的可視化需求提出了一種元數據可視化方法,以XML Schema作為可視界面描述語言,以XIC模型作為界面生成框架,能夠實現界面元素的精確定位和布局,并將界面生成與輸入驗證集成在一起。
XML是可擴展標記語言(Extensible Markup Language)的簡稱。它是國際組織 W3C為適應WWW的應用將SGML(Standard Generalized Markup Language)標準進行簡化形成的標記語言[10]。它既具有強大的自我描述能力,又具有適合網絡應用的可擴展性。DTD和XML Schema都是用來約束和規范XML文檔的,但是通常認為XML Schema很快就會替代DTD在大多數的網絡應用程序中被廣泛使用[11]。因為XML Schema針對將來的額外內容是可擴展的,其內容比DTD豐富,作用也更大。XML Schema是以XML語言編寫而成的,支持數據類型,支持名稱空間(Namespaces)等[12]。它可以對XML數據進行更好的描述與約束。
遙感影像元數據用于描述數據集的內容、質量、表示方式、空間參考系、管理方式以及其他特征信息,是實現遙感影像的共享與應用的關鍵[13-14]。本系統所采用遙感影像元數據體系是基于ISO19115地理信息元數據標準的結構與內容,參考我國地理信息元數據標準基礎上,針對遙感影像數據類型與應用方向,運用統一建模語言(UML)與數據字典,對遙感影像元數據的結構與元素進行描述和定義,而形成的遙感影像數據庫元數據體系。在遙感影像元數據中主要分為5大項:描述信息、空間信息、數據源信息、生產過程信息、分發信息[15]。本文中的遙感元數據由XML文檔存儲,這是為了便于修改。
鑒于 XML Schema的優越性,本文以 XML Schema作為遙感元數據可視界面描述語言,形成一套規范的界面描述方式,并在規范的同時靈活地修改XML Schema元素。同時,由于XML Schema具有驗證XML文檔的功能,以其作為界面描述語言可以很好的將界面生成及數據驗證集成起來。
水利元數據分為3層:元數據子集、元數據實體和元數據元素。其中元數據元素是元數據的最基本單元,元數據實體是同類元數據的集合,元數據子集是相互關聯的元數據實體或元數據元素的集合。標準規定了元數據又分為兩級,一級元數據是唯一標識一個數據集(數據集、數據集系列、要素和屬性)所需要最少的元數據實體和元素。其特征涉及數據集的坐標范圍、關鍵詞、單位與發行情況。該級元數據主要用于對外發布,服務對象為非專業人員,便于他們了解和檢索數據集,它描述的信息為一般數據的基礎特征。二級元數據是一個相對較為完整的數據集,該級元數據將一級元數據中的元數據內容做進一步細化,服務對象為專業人員,主要反映以測區為單位的數據更新的基本信息、數據質量信息和空間數據表示信息。數據更新是指在基礎地理數據更新業務完成后進行數據集更新,反映數據集和元數據更新的歷史,是以測區為最小描述單位。
本文針對水利元數據可視化方法抽象出了XIC模型,X(XMLSchema)是元數據描述模型,I(Interface)是界面展示模型,C(Code)是界面在機器中的表示模型。圖1所示的是水利元數據可視化模型體系結構。
圖1中,根據水利元數據的需求關系,將其分解成相應的數據模型、功能模型和界面模型。功能模型由功能需求所決定,通常使用UML類圖來描述,并通過分析用戶的界面需求來確定界面功能、界面框架、界面之間的關系以及界面與數據關系的需求。系統的框架結構由功能模型與界面模型共同形成。界面數據描述抽象為數據模型,由數據流圖來描述,主要用來確定界面中的數據需求,數據之間的關系以及界面對數據的約束。系統中的數據對象由功能模型和數據模型共同形成。界面模型由界面模板表達描述,主要處理界面元素的可視化顯示和界面布局問題,需要考慮具體界面表示語言的特征,加以合適的描述。

圖1 XIC模型
元數據的可視化首先需要根據XIC模型確定元數據的XML Schema表述,然后根據可視化界面生成引擎來生成相應的界面代碼,最后將界面代碼解析為可視界面。用戶在得到界面后便可以進行輸入,輸入完成后還需要進行輸入驗證并返回驗證結果。
XML Schema對界面的描述主要分成3個部分:界面框架描述、數據對象描述、控件樣式描述。
(1)界面框架描述
元數據的最終可視界面由HTML語言編寫,HTML與XML語言都屬于標記語言,它們的文檔對象模型都呈現樹狀,因此有一個很好的對應關系。在XML Schema中以根節點作為系統的描述性節點,其中定義了系統信息。第1層子節點用來描述子系統信息,第2層子節點用來描述各可視界面的信息,第3層子節點用來描述界面信息。XML Schema支持自定義屬性,所以用戶可以定義一些特殊的界面屬性,增強其可擴展性。XML Schema所描述的系統的邏輯結構如圖2。

圖2 系統邏輯結構
XML Schema中設置了多個屬性用來對界面加以控制,其中包括對內容及顯示形式的控制。Version屬性描述版本聲明,Encoding屬性描述字符編碼格式。<xs:schema>標簽用來定義文檔根元素,根元素里面嵌套基本元素、簡單或復合類型。為了增強可視化界面描述的擴展性,我們在XML Schema文檔中自定義了一些元素,例如:xmlns:title屬性用于描述文檔名;xmlns:keywords屬性描述關鍵詞;xmlns:annotation屬性描述文檔注釋;xmlns:pattern屬性描述了引用模板樣式等。文檔所用的XML Schema與XML語言語法一致,因此可以使用XPath或XQuery等查詢定位。
(2)數據對象描述
在界面展示的過程中存在用戶的交互,為了防止越界信息的錄入,我們對數據對象有專門的描述。XML Schema中Type屬性定義了這些數據對象的數據類型,包括基本類型和高級類型等。如枚舉類型由<xs:simpleType>標簽定義。如下所示:

<xs:simpleType>標簽定義了枚舉類型數據對象的信息。<xs:restriction>標簽用來定義簡單類型值的類型,base屬性定義了類型。<xs:enumeration>標簽定義了枚舉項,其中的value屬性定義了值,id屬性作為其唯一標識。<xs:限定>標簽對簡單類型做了限定,value屬性具體描述了限定形式。一些復雜的數據類型也可以由<xs:complexType>標簽定義,其基本格式與框架定義相似。其中<xs:sequence>標簽定義了該類型中元素出現的順序。
(3)控件樣式描述
為了使可視化效果更好,還需要對界面控件進行美化,即對控件樣式加以描述??丶臉邮接勺远x屬性styledefine:style定義,該屬性描述格式與HTML語言中CSS的定義類似。除了用樣式屬性定義外,在界面節點中引入了模板屬性,該屬性的值為模板庫中的模板編號,控件的樣式也可以直接用模板中的定義方式來限定。樣式模板采用XML語言描述,將所有的描述文檔組織起來就成為了樣式模板庫。
當對水利元數據用XML Schema描述后,就可以根據可視化界面生成引擎生成相應界面的代碼,最后由相應的代碼編譯器就可以轉換成相應界面。所以我們的核心問題是如何生成界面代碼。由于水利部中采用B/S架構設計了數據交換系統,因此其最終界面代碼為HTML語言。我們所設計的方案適用于將XML Schema轉換為HTML,當然也可以是其他同類型的標記語言。元數據可視界面與元數據XML的對應關系如圖3所示。

圖3 元數據可視界面與元數據文檔轉換關系
(1)界面框架及控件的生成流程
系統第一步讀取XML Schema文件,定位到待生成界面的根節點,然后按照深度優先遍歷的順序訪問其下每一個子節點,根據子節點的類型映射生成相應的控件。在映射生成過程中,若訪問到<xs:element>類型節點,則生成輸入框控件;若訪問到<xs:simpleType>類型節點,則生成列表控件;若訪問到<xs:complexType>類型節點,則生成表格控件。其中的幾個具體方法如下:
①增加一個界面元素的方法

②刪除一個界面元素的方法

③創建一個界面元素的方法

(2)控件樣式設置
界面框架及控件生成后,就需要對界面和控件樣式按照樣式需求做處理。我們采用模板描述界面元素的樣式屬性,里面對不同控件的不同屬性做了限制,它由XML語言編寫,一份模板定義如下:

模板中的元素定義方式與CSS類似,patten標簽下的第一層子元素定義了各種控件的樣式,其中的屬性length、width定義了該控件的長和寬,align定義了文本對齊方式。font標簽定義了字體的屬性,color定義了字體的顏色,size定義了大小、face定義了字體等。在界面節點中模板屬性定義了界面中控件的模板編號,此時只要按照對應模板中的定義修改控件的樣式即可。為了使界面生成更加靈活,在XML Schema中也加入了style屬性用于直接描述控件的樣式。若既引用了模板,又定義了style屬性,則先按模板樣式設置各控件的屬性,再按照style屬性單獨修改某些控件的樣式。
之所以使用XML Schema作為可視界面描述模板,是因為XML Schema可以直接驗證XML文檔。我們對界面交互的數據均由XML文檔存儲,這樣就可以方便的用Schema去驗證。具體方法如下:當界面生成后,用戶在界面上輸入信息,然后由系統根據生成該界面的XML Schema的格式將用戶填寫的信息封裝成一個XML文檔。這樣所產生的XML文檔的結構與生成界面的 Schema結構一致,可以用XML Schema直接進行驗證,不需要再編寫專門的驗證程序。這樣就方便地實現了界面生成和數據驗證的集成。
使用XML Schema作為界面描述語言的另一個好處就是便于界面的復用。因為在軟件系統中很多情況下的代碼是相似甚至相同的,所以復用技術一直是軟件開發的關鍵,這里的復用當然也包括了界面代碼的復用。XML Schema可以采用XML的查詢語言XPath、XQuery等,快速的定位相同或相似的代碼段,并將它們提取出來用于開發。如圖4,我們將界面的框架文檔與樣式文檔分別建庫,在使用時,先去相應的庫查詢有無可利用的文檔或文檔片段,如果有就可以直接利用;否則再建立新的文檔。這樣就可以大大提高可視化效率。

圖4 界面復用
基于XML Schema的水利元數據可視化界面生成系統主要包括應用業務解析模塊、XML Schema生成模塊、Schema管理模塊、可視界面生成模塊、數據驗證模塊、Schema文檔庫及界面模板庫。系統各模塊間的連接方式如圖5所示。首先,我們需要根據遙感影像的需求設計出包含元數據子集、元數據實體和元數據元素的元數據文檔。然后將元數據文檔轉換為可視界面的XML Schema,再由Schema轉換為可視界面代碼。各模塊作用如下:

圖5 元數據可視界面生成系統
應用業務解析模塊主要是根據用戶需求,按照XIC模型建立相應的水利元數據描述模型,再由XML Schema生成模塊生成相應的Schema文檔并存儲在Schema文檔庫中。
XML Schema管理模塊主要用于對Schema文檔庫里面的Schema信息進行增刪改查等,同時,它負責根據界面生成需求提供相應的Schema文檔。查詢XML Schema時,系統將會根據用戶輸入的名稱或關鍵字利用XPath或XQuery查詢語句進行查詢,方便地定位到XML Schema文檔或片段。
可視界面生成模塊接收從Schema管理模塊傳送來的Schema,然后根據其中的樣式信息到樣式模板庫中提取相應的模板,對HTML代碼進行完善,最終生成完整的可視界面(界面代碼)。在界面與用戶交互后,將用戶輸入信息與界面信息一同發送給驗證模塊。
數據驗證模塊將界面的填寫信息根據其XML Schema的結構生成一份XML文檔并驗證,將驗證結果顯示在界面上,返回給用戶。
利用本文所述方法實現的元數據管理界面實例如圖6所示,輸入驗證實例如圖7所示。

圖6 界面生成實例

圖7 界面驗證實例
本文所提出的基于XML Schema的水利元數據可視化方法,首先對水利元數據做了設計,然后利用XML Schema作為可視界面描述語言,根據XIC模型實現界面的自動生成,同時提出了相應的界面生成算法。本文的這種方法可以較為規范的實現元數據可視化并解決界面代碼的復用問題。同時,由于以XML Schema作為界面描述語言,對于用戶通過界面輸入的數據也可以方便的進行驗證。下一步的研究工作將是把Web服務組合技術引入到本文所提出的方法中,提供適當的接口給其他系統,實現可視界面生成技術的共享。
[1]黎陽.遙感信息與知識共享平臺的研究[J].計算機工程,2009,35(15):244-246,249.
[2]謝冰川.分布式海量遙感影像編目檢索機制[J].計算機工程,2010,36(20):281-282,285.
[3]石立堅,王其茂,郭茂華.海洋災害遙感元數據及數據系統設計[J].遙感信息,2010,24(3):117-121.
[4]黃洪,林輝,王奔.一種圖形用戶界面的XML描述方法與工具開發[J].計算機應用與軟件,2011,28(10):198-202.
[5]馮文堂,胡強,萬建成.基于XML的界面自動生成[J].計算機應用研究,2006,23(9):75-77.
[6]侯彥娥,黨蘭學,魏丹.Web用戶界面動態生成工具的設計與實現[J].河南大學學報(自然科學版),2011,41(6):641-644.
[7]楊鶴標,侯仁剛,田青華.支持界面自動生成的模型研究[J].計算機工程,2010,36(3):79-82.
[8]郭愛平,張立群,羅莉.基于MVC模式的界面自動生成[J].計算機工程與設計,2007,28(19):4793-4795.
[9]朱永華,吳俊杰,張倩.支持數據綁定的用戶界面自動生成模型[J].計算機工程,2011,37(23):52-53,59.
[10]張濤,于雪芹,危雙豐.基于XML Schema的地理信息元數據模式及存儲映射研究[J].測繪科學,2007,32(4):113-115.
[11]張劍妹,陶世群.DTD模式下的XML結構完整性約束[J].小型微型計算機系統,2009,30(11):2233-2237.
[12]曹靜,樊景博,劉愛軍.基于XML Schema的數據庫間信息交換技術[J].科學技術與工程,2010,10(24):6060-6062,6074.
[13]王英芬.元數據模式組織網絡信息資源研究[J].農業圖書情報刊,2009,21(11):50-52.
[14]郭容寰.基礎地理信息元數據的管理和應用[J].測繪與空間地理信息,2007,30(3):75-78.
[15]王華斌.海量遙感影像數據存儲管理技術研究與實現[J].測繪科學,2008,33(6):153,156-157.