王海寧 ,周京春,王貴武
(1.云南師范大學,云南 昆明 650092;2.武漢大學測繪遙感信息工程國家重點實驗室,時空數據智能獲取技術與應用教育部工程研究中心,湖北武漢 430079;3.昆明市城市地下管線探測管理辦公室,云南昆明 650011)
隨著城市的快速發展,地下空間的利用變得越來越重要。為了摸清地下設施的情況,許多城市相繼開展了地下管線普查探測工作。地下管線的普查探測是一項系統、復雜的工程。由于城市地下管線種類多,數量大,需要調查的屬性多,加之管線本身還具有隱蔽性及不可見性,在數據收集、獲取、存儲的過程中,不可避免地會產生錯誤。因此,地下管線探測數據成果內業檢查的重要性已成為整個行業的共識。
由于地下管線探測數據不僅包括空間數據,還包括屬性數據,而且數據量極大,單純采用人工的檢查方法,無法做到檢查的全面性和時效性。現代計算機技術、GIS技術的發展及其海量數據的處理能力,使得管線數據的自動化檢查成為可能。因此,研制可調性、可定制性、可擴展性的管線數據檢查系統是保障數據成果完整性、可靠性和準確性的關鍵[1,2]。
檢查系統的總體設計思路是:采用模塊化結構設計,使系統達到可重用性、可擴充性、可修改性和易用性的目的[3];利用面向對象語言的接口特性,將管線檢查知識對象與檢查程序主體相分離;對知識對象采用插件式管理,通過可視化界面操作知識庫,動態地對知識對象進行插入、刪除和修改,而不必重新啟動檢查系統,使得系統隨著檢查業務的擴充而隨機擴展。
同時,為保證數據檢查更具人性化地操作,系統提供兩種檢查模式。第一種模式:適用于用戶有針對性地檢查某一項或某幾項問題,即單獨地操作某個檢查知識對象的手動檢查模式;第二種模式:用戶可根據管線數據檢查所需的關聯知識對象及個人的檢查習慣自定義檢查內容和檢查流程,即自定義流程式的檢查模式。圖1為整個系統的結構框架。

圖1 管線數據檢查系統的整體框架
系統采用目前比較主流的面向對象語言C#作為開發工具,用Microsoft Office Access數據庫對元數據進行保存,其中元數據表包括系統的配置表(如:自定義菜單表、插件接口配置表等)和管線檢查知識庫表(如:數值范圍表、編碼檢查表等)。
知識表達,是指面向計算機的知識描述或表示形式和方法。面向人的知識表示形式,目前還不能完全直接用于計算機,因此就需要研究適合于計算機的知識表示模式。具體來講,就是用某種約定的形式結構來描述知識,而且這種形式結構還要能夠轉換為機器的內部形式,使得計算機能方便地存儲、處理和利用[2]。
傳統的知識表達方法有很多,如語義網絡、對象、屬性、值三元組和框架及規則表示法等,雖然各有特點,但都普遍存在結構化不強,隨著對象或規則的增加,規則和對象之間的交互也因知識表達不能模塊化而變得非常復雜、難以管理等問題。面向對象技術的推出為知識的表達提供了一種新的手段。面向對象方法通過對象和消息來表現問題域中的事物及其關系,通過類和繼承來模擬人們的思維方式。在面向對象的知識系統中,把描述求解問題的屬性概念(知識)和智能行為(知識處理方法)模型化為對象,成為知識庫中的一個獨立知識單元,稱為知識對象(類)。通過它,能以統一的形式表達相關領域的各種知識,從而給用戶以統一的認識界面,便于用戶的理解和接受[4,5]。
目前,地下管線數據檢查的內容主要有:數據庫格式、結構檢查、數據邏輯檢查、拓撲關系檢查等。數據庫格式、結構檢查主要檢查管線數據庫中的數據表是否齊全、是否存在多余的表、表的字段名和數據類型是否正確、字段值的填寫格式是否符合規程的要求等;數據邏輯性檢查復雜多樣,主要包括:屬性值的邏輯一致性檢查,管線、管點要素邏輯結構的合理性、正確性等;拓撲關系的檢查內容主要包括:接邊檢查、管線碰撞檢查等。
根據地下管線數據檢查的內容及檢查項之間相互獨立又相互依賴的特點,系統中將每一個檢查項作為一個單獨的知識對象,將知識的處理方法封裝成一個類,同時將知識對象的知識庫存放于元數據庫中,以方便知識庫的更改和發展。以非空字段檢查為例,首先創建該檢查的類,然后將非空字段檢查的處理方法作為該類的成員函數,同時在元數據庫中構建非空字段檢查的知識表——該表有“ID”、“字段名稱”和布爾類型的“是否可以為空字段”三個字段,然后把該類編譯成DLL文件。由于非空字段檢查的知識庫是開放的,因此隨著檢查要求的變化,可以通過修改非空字段檢查的知識表很方便地改變某一字段是否可以為空。
由于系統將每一個檢查項都作為一個單獨的知識對象,而每一個知識對象能描述與求解一個獨立的領域子問題,因此知識對象外部的推理不是很多,主要是知識對象的內部推理,舉一個簡單的例子:



圖2 檢查系統的主界面
(1)知識對象的接口設計
根據上文描述的面向對象技術下的知識表達方式,在主程序中建立檢查規則的接口,因此每個知識對象(類)必須實現接口中的所有對象,起到了對檢查對象進行約束的作用,同時方便統一管理、方便調用。
接口偽碼如下:

(2)系統設置模塊的實現
系統設置模塊包括插件管理、數據檢查菜單設置、自定義流程三個部分。
①插件管理(見圖3):插件管理模塊能夠對知識對象進行動態管理,實現知識對象的“熱插拔”。當添加已編譯好的知識對象時,程序獲得DLL文件的名稱并讀取DLL文件獲得該知識對象的名稱,同時將DLL文件的名稱和知識對象的名稱信息加入到元數據的插件配置表中,并且將知識對象的名稱加載到插件加載設置表中。在插件配置表中分別有“動態鏈接庫名稱”和“知識規則名稱”兩個字段來對程序讀取的DLL文件名稱和知識對象的名稱進行保存,在插件加載設置表中設計了“ID”和“知識規則名稱”兩個字段對信息進行存儲。然后程序重新讀取插件加載設置表并將插件配置表中的知識對象名稱字段值重新加載到“數據檢查菜單”的下拉菜單中,實現知識對象的動態“插入”。同理,當刪除某一知識對象時,系統會刪除元數據庫中的關于該知識對象的相關信息,然后重新讀取DLL文件和相關的系統配置表。

圖3 插件管理界面
②數據檢查菜單設置模塊(見圖4):數據檢查菜單設置模塊用于改變數據檢查下拉菜單中檢查項的順序。數據檢查下拉菜單中檢查項的順序是通過“插件加載設置表”中的“ID”字段值實現的,選中某條知識對象,通過點擊“上移”或“下移”來減少或增加該知識對象的“ID”值,然后系統根據“插件加載設置表”中的“ID”字段值的順序重新加載菜單。

圖4 數據檢查菜單設置界面
③自定義流程模塊:自定義流程模塊實現了主界面中的“自定義流程檢查”下拉菜單的自定義和每個菜單對應的檢查項的自定義。點擊“自定義流程選項卡”彈出窗體如圖5,窗體右側顯示“插件管理”菜單下添加的所有知識對象,窗體中部顯示自定義菜單項,窗體左側顯示每一組自定義流程項名稱(將在自定義流程檢查菜單下顯示)。可以通過或按鈕選擇或移去自定義菜單項,通過“上移”或“下移”按鈕確定自定義菜單項進行檢查的先后順序,通過“添加”、“刪除”和“修改”按鈕添加修改或刪除流程項。
此外為了提高自定義流程數據檢查的速度和效率,應合理的調整自定義菜單項的順序。例:如圖5自定義流程“數據結構、格式檢查”對應檢查項順序依次為管線數據結構檢查、非空字段檢查和數值范圍檢查,如果管線數據結構檢查出錯誤,系統將停止后面兩項檢查,如果檢查通過,系統進入下一項檢查。

圖5 自定義流程界面
以排水流向檢查為例,排水流向檢查主要是檢查排水類管線中的水流方向是否合理(知識規則:水流是從管線井底標高較大的一端流向較小的一端)。首先輸入最大標高容限(即流向終點標高—流向起點標高的最大允許差值),然后根據管線中兩點的井底標高差值判斷管線線表中“流向”字段內容的合理性,檢查出的問題信息(記錄實體ID,所在的信息表,警告信息描述)以報表的形式表現,同時允許以Excel格式輸出檢查報表。在執行本條知識對象時會彈出一個“最大標高容限”的輸入窗口,可根據本地實際情況自行輸入,在本次檢查中輸入值為 30 cm。運行結果如圖6所示。

圖6 檢查結果
經實踐證明,本系統切實可行,能夠靈活應對管線探測成果數據檢查中出現的各種問題,檢查項可根據實際情況任意“熱插拔”和調整,整體檢查效果較好,保證了數據檢查的質量和效率。但當數據量過大時,個別知識對象的執行效率還待提高,如管線碰撞檢查,仍需結合空間分析做進一步的研究。
[1]黃鴻,龔健雅,鐘正.地下管線數據的智能化檢查研究[J].武漢大學學報·信息科學版,2007(08):731~734.
[2] 李丹農.城市地下管線數據的計算機監理檢查[J].城市勘測,2007(4):61~63.
[3]許婷.基于知識與規則的城市管線數據計算機監理校驗[J].四川測繪,2005(01).
[4] 廉師友.人工智能技術導論[M].西安:西安電子科技大學出版社,2002.
[5]徐勇,楊柯.一種面向對象知識庫的構造和維護[J].計算機工程,2000(09).