石吉寶,張俊,鄧芳
(成都市勘察測繪研究院,四川成都 610081)
基于規(guī)則的組件式數(shù)據(jù)監(jiān)理系統(tǒng)設(shè)計
石吉寶?,張俊,鄧芳
(成都市勘察測繪研究院,四川成都 610081)
從分析數(shù)據(jù)錯誤入手,詳盡闡述了基于AutoCAD平臺的組件式數(shù)據(jù)監(jiān)理系統(tǒng)設(shè)計方法,數(shù)據(jù)規(guī)則設(shè)計原則,最后,舉例說明了程序的實現(xiàn)過程以及程序執(zhí)行的效果。
規(guī)則;組件;拓撲錯誤;AutoCAD
數(shù)據(jù)是GIS的靈魂,一個好的GIS系統(tǒng)必須要有好的數(shù)據(jù)質(zhì)量作為支撐。GIS數(shù)據(jù)的生產(chǎn)過程包括數(shù)據(jù)采集、數(shù)據(jù)處理和數(shù)據(jù)入庫等幾個部分。數(shù)據(jù)質(zhì)量完全取決于每個生產(chǎn)環(huán)節(jié)的質(zhì)量控制。一直以來人們對數(shù)據(jù)質(zhì)量的控制都非常重視,但是隨著技術(shù)不斷發(fā)展進步,傳統(tǒng)的人工檢查已經(jīng)遠遠不能滿足需要了。計算機程序檢查的方式順勢而生,并且展現(xiàn)出了不可比擬的優(yōu)勢。但是很多質(zhì)量檢查程序都是針對具體的數(shù)據(jù)而編寫的,依據(jù)一定的數(shù)據(jù)規(guī)則設(shè)計一套數(shù)據(jù)監(jiān)理軟件十分必要。
目前我國絕大部分數(shù)據(jù)生產(chǎn)單位使用的都是AutoCAD軟件,而且?guī)缀跛械腉IS軟件也都接受Auto-CAD數(shù)據(jù)格式的數(shù)據(jù),所以本數(shù)據(jù)監(jiān)理軟件系統(tǒng)都是基于AutoCAD平臺。
2.1 CAD數(shù)據(jù)描述
在CAD的數(shù)據(jù)模型中,點、線、面等幾何要素以二進制形式保存于文件中,相關(guān)的注記、顏色、線形等屬性也與幾何數(shù)據(jù)放在一起。CAD的數(shù)據(jù)模型是一種開放式的數(shù)據(jù)模型,該模型具有強大的繪圖功能和矢量圖形處理的能力,廣泛應(yīng)用于工業(yè)設(shè)計、機械設(shè)計、建筑設(shè)計、城市規(guī)劃之中。
CAD的數(shù)據(jù)組織是按照如下形式進行的,文件→圖層→圖元。由于每個數(shù)據(jù)生產(chǎn)人員的水平和責(zé)任心都不一樣,CAD的開放式數(shù)據(jù)模型再加上這樣的組織方式不可避免會造成各種不同的錯誤。而這些錯誤將會對我們后期的數(shù)據(jù)處理和入庫帶來巨大的麻煩。
2.2 數(shù)據(jù)錯誤類型分析
按照數(shù)據(jù)錯誤的類型來分,錯誤大致可以分為屬性錯誤、邏輯錯誤和拓撲錯誤三類。
屬性錯誤:屬性錯誤是指圖元的相關(guān)屬性沒有按照數(shù)據(jù)規(guī)則中規(guī)定賦予而產(chǎn)生的錯誤。這種錯誤多因數(shù)據(jù)生產(chǎn)人員工作疏忽或數(shù)據(jù)生產(chǎn)軟件設(shè)計不完善造成的,這種錯誤在傳統(tǒng)的數(shù)據(jù)檢查中很難發(fā)現(xiàn)。
邏輯錯誤:邏輯錯誤是指圖元本身存在邏輯上或者圖元的存在與現(xiàn)實邏輯不符的錯誤,這種錯誤與屬性錯誤可能會有重疊,即同一錯誤既是邏輯錯誤又是屬性錯誤。這種錯誤在傳統(tǒng)的數(shù)據(jù)檢查方法中基本是不能發(fā)現(xiàn)的,但是這種錯誤確往往會對數(shù)據(jù)入庫環(huán)節(jié)造成致命的后果。
拓撲錯誤:顧名思義拓撲錯誤是指圖元與圖元直接存在的錯誤。這種錯誤在傳統(tǒng)的數(shù)據(jù)檢查中,對于很明顯的錯誤可以發(fā)現(xiàn)但是對那些不明顯的錯誤,卻毫無辦法。
3.1 系統(tǒng)設(shè)計
系統(tǒng)設(shè)計必須堅持開放性原則、可擴展性原則和易用性原則等。要做到這些原則,系統(tǒng)設(shè)計時完全按照.net的組件設(shè)計模式進行,保證系統(tǒng)上的松耦合性從而達到系統(tǒng)可以任意擴展。系統(tǒng)設(shè)計主要包含了基礎(chǔ)類包、數(shù)據(jù)錯誤類包、錯誤檢查類包、用戶界面類包。這些組件都是盡量減少聯(lián)系、保持獨立為軟件維護打下很好的基礎(chǔ)。
(1)基礎(chǔ)類包
基礎(chǔ)類包中包括數(shù)據(jù)檢查輔助類、數(shù)據(jù)檢查輸出場景類和實體包裝類。
數(shù)據(jù)檢查輔助類:提供輔助計算功能,如獲取實體的要素代碼、計算面積、距離等。
數(shù)據(jù)檢查輸出場景類:主要提供數(shù)據(jù)檢查錯誤的保存操作。系統(tǒng)提供了一Access數(shù)據(jù)庫記錄數(shù)據(jù)檢查錯誤的數(shù)據(jù)輸出場景類——AcessDataCheckContext (提供檢查錯誤保存到Access數(shù)據(jù)庫的操作)。類對象如圖1所示。
圖1 數(shù)據(jù)檢查錯誤輸出類關(guān)系示意圖
實體包裝類:提供對CAD中的點、線實體包裝,使其采用統(tǒng)一的接口實現(xiàn)對點、線實體的操作處理。系統(tǒng)中提供了pointAdaptor和PolylineAdaptor,類對象關(guān)系如圖2所示。
圖2 實體包裝類對象示意圖
(2)數(shù)據(jù)錯誤類包
系統(tǒng)中定義了設(shè)計的所有錯誤類型,而且部分可以修改的錯誤還定義了錯誤修改方法,系統(tǒng)中定義的所有錯誤類都派生于抽象類ErrorObject,在抽象類中定義了錯誤對象的一些方法,所有錯誤類型都繼承這些方法。
(3)錯誤檢查類包
系統(tǒng)設(shè)計了針對每種數(shù)據(jù)錯誤類型的檢查方法。這些針對每種錯誤類型的數(shù)據(jù)檢查類都派生于Data-Check這個基類。每一個檢查類都相互獨立。
(4)用戶界面類包
提供數(shù)據(jù)檢查參數(shù)配置、檢查類型選擇、錯誤瀏覽、檢查進度瀏覽等幾個用戶界面。
3.2 規(guī)則設(shè)計
規(guī)則:所謂規(guī)則是指利用數(shù)據(jù)庫定義了每個要素在數(shù)據(jù)表現(xiàn)上的原則要求,是程序設(shè)計的基礎(chǔ)。
本系統(tǒng)中主要定義了3大類規(guī)則,分別是要素特性規(guī)則、要素拓撲規(guī)則和要素值域規(guī)則。
(1)要素特性規(guī)則
要素規(guī)則中定義了所有要素在CAD的文件中所有特性,包括編碼、顏色、圖層等。具體的要素規(guī)則表數(shù)據(jù)結(jié)構(gòu)見表1。
要素規(guī)則表數(shù)據(jù)結(jié)構(gòu) 表1
(2)要素拓撲規(guī)則
在進行要素的拓撲規(guī)則定義時,考慮到基本所有要素都需要進行拓撲規(guī)則檢查,所以將那些不需要進行拓撲規(guī)則檢查的要素記錄在規(guī)則表中。這樣可以有效增大數(shù)據(jù)庫的檢索速度,提高檢查效率。在拓撲定義中定義了重復(fù)對象、微短線、微小面、線面相交、面面相交、面裂縫等拓撲規(guī)則。拓撲檢查例外表如圖3所示。
圖3 拓撲檢查例外表示意圖
(3)要素值域規(guī)則
要素的值域規(guī)則指的是所有要素的屬性字段的值域范圍,定義這些規(guī)則可以保證要素的屬性正確性。要素的值域規(guī)則定義了單一值域規(guī)則和范圍值域規(guī)則。值域規(guī)則中定義了值域類型表、值域表、單一值值域表、范圍值值域表和適用代碼表,從這些表名不難看出值域類型表是指定義了單一值和范圍值兩種類型的表,而值域表定義了所有有值域的要素的屬性字段名稱和該字段的值域類型,單一值值域表定義了所有單一值的取值,范圍值值域表中定義了所有范圍指的取值范圍,適用代碼表中定義的與所有值域編號相對應(yīng)的要素編碼。單一值值域表和范圍值值域表如圖4所示。
圖4 單一值與范圍值值域表圖
3.3 系統(tǒng)實現(xiàn)
系統(tǒng)是采用Visual studio C#2008+Object ARX在AutoCAD 2006平臺下進行二次開發(fā)。系統(tǒng)總體運行流程示意圖如圖5所示。
圖5 系統(tǒng)總體運行流程示意圖
系統(tǒng)首先指定一個檢查規(guī)則,由用戶選擇需要檢查的類型。系統(tǒng)在設(shè)計時充分考慮了使用的方便性,可以由用戶選擇檢查所有類型錯誤、檢查某種類型錯誤或者多文件批量處理等方式。檢查到要素錯誤按類型寫入錯誤數(shù)據(jù)庫,并且提供了瀏覽錯誤并定位到要素和自動修改要素錯誤的功能。最后可以輸出數(shù)據(jù)質(zhì)量報告。
下面就多邊形相交檢查給出具體實現(xiàn)代碼,效果如圖6所示。
圖6 多邊形相交檢查示例
該軟件經(jīng)過測試證明,可以有效地進行CAD圖形數(shù)據(jù)的屬性檢查和拓撲檢查。錯誤檢查率能達到92%以上,錯誤檢查正確率保證在98%以上,該軟件可以高效高質(zhì)量地進行數(shù)據(jù)檢查工作。本軟件將進一步優(yōu)化拓撲檢查算法,來提高程序運行效率,在GIS數(shù)據(jù)建庫的數(shù)據(jù)監(jiān)理中發(fā)揮更大作用。
[1]張彥彥,周衛(wèi),郝思寶.基于AutoCAD二次開發(fā)的矢量地形數(shù)據(jù)檢查.現(xiàn)代測繪,第29卷第6期,2006.11
[2]石吉寶等.基于規(guī)則的組件式數(shù)據(jù)監(jiān)理系統(tǒng)的詳細設(shè)計. 2008.4
Design of Data Supervision System of Components Based on Regular
Shi JiBao,Zhang Jun,Deng Fang
(Chengdu Institute Of Survey and Investigation,Chengdu 610081,China)
This paper analyzes the data error,and introduces in detail the method of design of data supervision system based on regular and the design principle of data regular.Finally,it illustrates the implementation process and effects of program.
Regular;Components;Topology error;AutoCAD
1672-8262(2010)02-38-03
P208
B
2009—09—18
石吉寶(1977—),男,工程師,主要從事GIS方向的應(yīng)用與研究工作。