徐永龍,李 斌,郭海朋,張像源,陳文杰,李曉亮
(1.長安大學 地質工程與測繪學院,陜西 西安 710054;2.中國地質環境監測院,北京 100081;3.天津市地質調查研究院,天津 300191)
數據字典驅動的地質數據采集系統設計與開發
徐永龍1,李 斌1,郭海朋2,張像源3,陳文杰3,李曉亮1
(1.長安大學 地質工程與測繪學院,陜西 西安 710054;2.中國地質環境監測院,北京 100081;3.天津市地質調查研究院,天津 300191)
地質環境信息化中,地質數據采集入庫系統需良好的可擴展性和復用性。設計開發一種由數據字典定制和驅動的地質數據采集系統,采用數據字典序列化與反序列化,解決系統錄入界面的自動生成和數據庫查詢功能的動態實現等關鍵技術問題,并在汾渭盆地和華北平原等地區的實際應用中得到驗證。數據字典驅動的地質數據采集系統開發周期短,易于維護,具有良好的可擴展性和通用性。
數據字典;地質環境信息化;數據采集系統;系統設計與開發
地質數據采集系統是將野外采集的地質環境相關數據進行標準化入庫的工具,是側重于地質專題屬性數據錄入的一種管理信息系統(MIS系統)。隨著我國地質環境信息化工作的不斷推進,許多地質環境監測業務部門開始使用數據采集系統,將所獲取的地質環境數據采集入庫,在提高工作效率的同時提升數據管理水平。但現有的數據采集系統延續了傳統MIS系統的構建模式[1],將程序功能、用戶界面與數據庫表緊密耦合,導致其開發過程繁瑣,可擴展性不強。在面對種類繁多、數據量大,且隨著數據庫表結構不斷更新和擴充的地質環境數據時,這種設計模式的缺陷和弊端更為突出,具體表現為:在系統開發過程中,傳統的數據采集系統為數據庫中的每一張表格設計對應的錄入界面,錄入界面與特定的表結構、字段一一綁定,并且將所有的查詢語句靜態地封裝在程序中,給開發人員帶來大量重復、繁瑣的工作,延長軟件的開發周期;在系統應用過程中,當用戶的數據庫表結構發生改變或者需要新增數據表時,由于程序與數據庫緊密耦合的構建模式導致系統不具備可擴展性,原有的系統無法復用,必須進行源碼級的修改或重寫,增加了系統應用和維護的成本。
由此可見,傳統的數據采集系統迫切地需要引入新的開發方式,實現系統程序與底層數據的分離,以從根本上解決其擴展性問題,實現地質環境數據采集錄入軟件的復用。本文針對這一實際問題,在分析現有地質數據采集入庫系統的局限與不足的基礎上,設計可擴展且可復用的數據字典驅動的地質數據采集系統結構,并對其開發實現的若干關鍵技術進行探討。
1.1 系統總體結構
數據字典驅動的地質數據采集系統的總體結構如圖1所示,與傳統數據采集系統的程序與數據層緊密綁定不同,它將數據字典從數據層抽象出來單獨作為一層,位于底層的用戶數據庫之上,把系統的應用程序和數據庫分離開來[2-3]。應用程序中的數據字典驅動模塊負責程序與數據字典的通信,向程序提供數據字典中的數據庫及表結構等信息,從而實現系統用戶界面(錄入界面和查詢界面)的自動生成及系統功能模塊中查詢語句(對數據庫的增、刪、改、查等操作)的動態構建,這就從底層根本性地解決了傳統數據采集系統的開發過分依賴數據庫表結構的問題。同時,數據字典位于應用程序外部字典庫,處于開放的環境中,當用戶的數據庫表結構發生改變或者需要新增數據表時,可由系統管理人員對數據字典作相應的修改或擴充,應用程序本身則無需變動,由此實現系統的擴展,進而達到系統復用的目的。

圖1 數據字典驅動的地質數據采集系統總體結構
1.2 數據字典設計
數據字典是地質數據采集系統的核心,是連接系統應用程序與數據庫的紐帶。數據字典由多個數據表(字典表)組成,這些表記錄了數據庫表的全部信息[4-5],包括表、字段及表間約束等信息。字典表以二維表的形式獨立存儲于系統外部的數據字典庫中,其存儲結構較為靈活,根據特定的需求而定。數據字典在系統中起到為系統運行提供支撐信息的作用,系統根據數據字典表內容創建數據庫表、動態生成錄入界面并創建查詢語句,這是數據字典設計的要點和依據。為便于更新和維護,本文將滿足地質數據采集系統使用的最基本信息匯總在一張字典表中,其表結構如表1所示,該數據字典表結構由22個字段組成,主要反映3方面的內容:①表的基本信息,如表名、表代碼、表所屬專業類型等;②表的約束信息,如表的主鍵、外鍵、父表名稱等;③表的字段信息,如字段名稱、數據類型、字段長度、重要程度、取值范圍等。

表1 地質數據采集系統數據字典表結構設計
需要說明的是,盡管數據字典表的表結構是動態的,可以根據具體情況進行修改,但其具體內容的填寫應該遵循地質環境信息化相關標準和規范[6-7],以保證地質環境數據管理的標準化。數據字典表結構建立后,用戶只需按照其結構填寫要采集錄入的數據表的相關信息,即使在使用過程中表結構發生了變化,也只需在數據字典表中作相應的修改即可。
傳統數據采集系統界面和功能都與數據表結構靜態綁定的實現方式不同,數據字典驅動的數據采集系統的用戶界面和程序功能都是根據數據字典動態實現的,以保證數據采集系統的可擴展性和通用性。通過深入研究,本文解決其動態實現過程中的3個關鍵技術問題。
2.1 數據字典表序列化與反序列化
序列化是將程序中的對象轉化為字節序列存儲到計算機文件的過程,反序列化是序列化的逆向過程。由于程序在運行過程中需要實時查詢數據字典庫,獲取其中字典表的信息,而這樣頻繁的實時查詢會導致系統效率的降低和性能的下降。出于系統效率和性能考慮,在系統首次運行時,將數據字典表中的數據庫表結構信息一次性查詢出來,轉化為相應的表結構對象,再序列化為用戶計算機中的一系列XML文檔。每個XML文檔分別存儲一個數據表的相關信息,包括表名稱、代碼、主鍵,以及該表所有字段的信息;系統在隨后的運行中,通過反序列化指定的XML文檔獲取其中的表結構對象,不必再查詢數據字典庫。實踐表明,應用程序反序列化本地XML文檔來獲取數據表結構對象的效率要優于實時查詢數據字典表的效率。
數據字典序列化與反序列化在數據字典驅動模塊中實現,其中較為關鍵的一步是組織好表結構對象的數據結構。合理地組織該數據結構,便于數據庫表結構相關信息的提取,從而有利于程序界面和功能的實現。本文給出數據表結構對象(TableInfo)及其中包含的字段信息(FieldInfo)的數據結構,其類圖如圖2所示。在.NET平臺中,將對象序列化為XML文檔及其反序列化可利用XmlSerializer類中的相關功能來實現,其他編程平臺也提供類似的方法,具體實現細節在此不作詳述。

圖2 數據表結構TableInfo對象的數據結構
2.2 錄入界面的自動生成
錄入界面的自動生成是指數據采集系統運行時,根據數據字典驅動模塊提供的數據表字段信息,自動調用相應的錄入控件來搭建錄入表單界面。自動生成錄入界面不僅免除了在界面設計階段為所有數據表逐一設計錄入表單界面的大量繁瑣工作[8],也使系統具備了可擴展和復用的條件。
自動生成錄入界面的技術流程如圖3所示。通過反序列化XML文檔獲取指定數據表的結構信息TableInfo對象(其結構見圖2);再遍歷TableInfo對象中的包含該表所有字段信息的FieldInfos屬性,獲取每個字段信息FieldInfo對象的數據類型DataType屬性;根據字段的數據類型實例化對應的錄入控件(例如,文本型字段使用文本框輸入控件,數值型字段使用整數或小數輸入控件),并將錄入控件加載到錄入界面容器中進行顯示,直到加載完所有字段對應的錄入控件為止。從該實現流程可以看出,錄入界面中數據項的順序和FieldInfos中字段信息FieldInfo對象的順序是對應的,因此,在系統運行過程中,可以調整FieldInfo的順序以改變錄入界面中數據項的順序,實現錄入界面數據項順序的定制。

圖3 自動生成錄入界面的流程
2.3 查詢語句的動態創建
數據庫系統對數據庫的操作,如查詢、新增、修改、刪除等,都是通過標準的查詢語句(即SQL語句)實現。傳統的數據采集系統無法擴展的一個重要原因就在于,它的查詢語句都是與特定的表結構、字段綁定,靜態地寫入程序中[9]。動態創建查詢語句的基本思路是:在系統運行過程中,根據用戶要執行的操作,通過序列化獲取操作對象表的字段信息,動態地組合出查詢語句并執行該語句的操作[10-13]。在數據采集系統中,最常用操作是在數據庫中新增一條數據的INSERT操作。相比刪(DELETE)、改(UPDATE)、查(SELECT)等操作語句的構建,INSERT操作語句的動態創建較為復雜。本文以INSERT操作語句的創建過程為例對查詢語句的動態創建進行說明。
如式(1)所示,一條標準的INSERT操作的SQL語句由4部分組成,包括INSERT INTO關鍵字、表名(table_name)、字段名(field1,field2,…)以及與字段名對應的字段值(value1,value2,…)。
INSERT INTO table_name (field1, field2, …) VALUES ( value1, value2, …)
(1)
動態創建查詢語句,就是要動態地獲取式(1)中各組成部分的實際取值過程,具體步驟如下:
1)根據用戶要操作的數據表獲取表名,替代式(1)中的table_name;
2)根據表名反序列化相應的數據表結構XML文檔,獲取表結構對象TableInfo,通過其FieldInfos屬性獲取該表的所有字段名稱,替代式(1)中的field1,field2,…;
3)根據字段名稱,獲取錄入界面中對應的錄入控件中的值,賦給式(1)中的value1, value2, …即可。
數據字典驅動的地質數據采集系統的設計思想及其實現技術已被應用于全國地面沉降數據采集系統的開發。該系統是在.NET平臺中采用CJHJ語言開發完成,其界面如圖4所示。
系統數據字典涵蓋了地面沉降災害相關的多種專業領域的數據表信息,具有數據錄入與修改、查詢顯示、導入導出、數據庫備份與恢復以及用戶界面定制等數據采集入庫相關的實用功能。經測試和試用表明,數據字典驅動的全國地面沉降數據采集系統具有便于擴展、簡潔易用等特點。目前,系統作為地面沉降相關調查與監測數據標準化入庫和規范化管理的實用工具,已在我國地面沉降災害較為嚴重的汾渭盆地、華北平原等地區的地質環境監測相關業務單位推廣使用。

圖4 全國地面沉降數據采集系統主界面
數據字典驅動式的設計模式實現了應用程序開發與數據庫表結構分離的開發方式,提升軟件開發的效率,縮短軟件的開發周期,同時實現軟件的復用。實際應用表明,較傳統數據采集系統而言,數據字典驅動的地質數據采集系統具有以下特點:
1) 以數據字典為核心,系統數據庫及數據表由系統根據數據字典自動生成,數據表及表間關系的維護由系統自動完成,無需人為干預;
2) 系統的數據錄入界面根據數據字典動態生成,不受數據庫表結構變化的限制,并可按照用戶使用習慣進行界面定制;
3) 系統具有良好的擴展性和通用性。數據庫表結構發生變化時,只需在數據字典中作相應的更新,系統程序無需修改,便于維護和通用。
[1]王德廣,張軍卒,李文. 基于數據字典的通用查詢平臺的設計[J]. 科學技術與工程, 2009, 9(19): 5849-5853.
[2]郭勝輝,孫玉芳. 基于數據字典庫的信息系統的設計[J]. 計算機學報,2000, 23(4): 414-418.
[3]曾青石,張像源,陳輝. 基于3S技術的地質災害野外調查數字采集系統的研究[J]. 水文地質工程地質,2008(1): 121-125.
[4]韓志軍,汪興慶,吳沖龍. 野外數據采集系統數據字典的研制[J]. 地球科學—中國地質大學學報,1999, 24(5): 539-541.
[5]D PANTAZIS, B CORNELIS, R BILLEN, et al. Establishment of a geographic data dictionary: a case study of UrbIS 2, the Brussels regional government GIS[J]. Computers, Environment and Urban Systems, 2002, 26(1): 3-17.
[6]中華人民共和國國家質量監督檢驗檢疫局,中國國家標準化管理委員會.GB/T 9649.20-2009 地質礦產術語分類代碼表—水文地質學[S].北京:中國標準出版社,2009.
[7]中華人民共和國國家質量監督檢驗檢疫局,中國國家標準化管理委員會.GB/T 9649.21-2009 地質礦產術語分類代碼表—工程地質學[S].北京:中國標準出版社,2009.
[8]梁偉晟,李磊. 基于表單的業務系統界面邏輯模型獲取的研究[J]. 計算機工程,2007, 33(5): 56-58.
[9]何珍文,吳沖龍,張夏林,等. 數據庫應用程序中通用動態查詢實現方法研究[J]. 計算機工程,2002, 28(11): 92-94.
[10]張像源,曾青石,陳輝. 地質災害野外調查數據采集系統數據模型研究[J]. 水文地質工程地質,2007(5): 98-101.
[11]Tr?tteberg H. Model-based user interface design[D]. Trondheim: Norwegian University of Science and Technology, 2002.
[12]郭范春. 基礎地理信息數據庫管理系統的研建[J]. 測繪工程,2013, 22(3): 80-82.
[13]王明孝,張之孔.基于組合模型的高程擬合方法及精度分析[J].測繪工程,2013,22(2):1-4.
[責任編輯:張德福]
Design and development of data-dictionary-driven geo-environment data acquisition system
XU Yong-long1, LI Bin1, GUO Hai-peng2, ZHANG Xiang-yuan3, CHEN Wen-jie3, LI Xiao-liang1
(1.College of Geological Engineering and Geomatics, Chang’an University, Xian 710054, China; 2.China Institute of Geo-Environment Monitoring, Beijing 100081, China; 3.Tianjin Institute of Geological Survey, Tianjin 300191, China)
Aiming at the extensibility and reuse problems in current geo-environment data acquisition systems, it designs and develops a data dictionary driven geo-environment data acquisition system with the data-dictionary serialization and deserialization used to generate the user interface automatically and implement the function dynamically. The system is verified through its application to Fen-wei Basin and North China Plain areas. The data-dictionary driven geo-environment data acquisition system decreases the development cycle, which is easy to maintain with good extensibility and universality.
data dictionary; geo-environment informatization; data acquisition system; system design and development
2013-11-06
國家自然科學基金重點項目(41130753); 全國地面沉降監測與防治綜合研究與信息系統建設工作項目(12120113011700); 中央高校基本科研業務費專項資金資助項目(CHD2011TD019)
徐永龍(1985-),男,博士研究生.
TP311
:A
:1006-7949(2014)10-0041-04