張晗
摘要:本文深入研究了數(shù)字地圖數(shù)據(jù)質(zhì)量檢查系統(tǒng)的關鍵技術,從數(shù)據(jù)結構的設計出發(fā),設計了地圖中間數(shù)據(jù)格式、模型文件格式和錯誤文件格式;設計了一種圖形化構件檢查方法,提取基本驗收單元,實現(xiàn)多源、多類型地圖數(shù)據(jù)的多單元組合驗收;構建了規(guī)則對象接口、模型對象接口、地圖繪制對象接口,提高了系統(tǒng)的兼容性和可移植性,解決了數(shù)字地圖數(shù)據(jù)質(zhì)量檢查系統(tǒng)開發(fā)設計中的一些關鍵技術。
關鍵詞:數(shù)字地圖;數(shù)據(jù)質(zhì)量;檢查系統(tǒng);關鍵技術
數(shù)字地圖是現(xiàn)代軍事的眼睛,是軍事決策的重要依據(jù),其質(zhì)量要求精益求精,各要素必須準確、合理、實時顯示。因不同比例尺、類型、地區(qū)地圖數(shù)據(jù)在要素表達、分類分級、位置關系、屬性信息等方面的制圖要求存在較大差異,所以這些數(shù)據(jù)的質(zhì)量控制需根據(jù)其特點,快速、及時、準確地變改檢查項目,以確保數(shù)據(jù)質(zhì)量。
一、數(shù)字地圖質(zhì)量檢查內(nèi)容
1、完整性檢查。完整性檢查是指空間數(shù)據(jù)在范圍、內(nèi)容、結構等方面是否冗余或遺漏。檢查內(nèi)容包括數(shù)據(jù)內(nèi)容是否完整,有無遺漏和重復,圖幅各項數(shù)據(jù)是否齊全;要素層、要素項是否有遺漏,是否缺少或重復。
2、拓撲檢查。拓撲數(shù)據(jù)結構中,地圖要素被抽象為結點、鏈、面域基本拓撲元素。結點是鏈的連接點或端點,鏈是兩結點間的一條有序弧段,面域由若干條鏈構成的一個閉合多邊形。
3、屬性信息檢查。屬性數(shù)據(jù)說明空間實體數(shù)據(jù)的幾何類型、分類等級、數(shù)據(jù)特征、質(zhì)量描述、地理名稱、更新日期等。屬性誤差檢查包括空間數(shù)據(jù)對應的屬性數(shù)據(jù)中要素分類與代碼的正確性、要素屬性值的正確性與空間數(shù)據(jù)連接關系的正確性等。
4、元數(shù)據(jù)檢查。元數(shù)據(jù)是數(shù)據(jù)的數(shù)據(jù),軍標交換格式數(shù)據(jù)的元數(shù)據(jù)是后綴名為.sms的文本文件,文件存儲格式為“序號-鍵名-值”,是數(shù)字地圖的說明性文檔,同時也是空間數(shù)據(jù)的索引,在符號化軍標格式數(shù)據(jù)時,起到指針作用。
軍標交換格式的元數(shù)據(jù),除保證數(shù)據(jù)格式正確,還可根據(jù)項目值分為6類:無需檢查、固定值、范圍取值、計算值、圖名對比值、其他值。如產(chǎn)品生產(chǎn)單位是固定值,填寫數(shù)據(jù)的生產(chǎn)單位;圖名是圖名對比值,根據(jù)圖名圖號列表獲取相應的圖名;圖廓角點經(jīng)度范圍經(jīng)軟件自動計算,無需檢查;中央經(jīng)線屬于計算值,經(jīng)計算獲得。
5、接邊檢查。數(shù)字地圖按標準分幅規(guī)則采集,采集更新時,由于資料等原因,圖廓線兩側(cè)數(shù)據(jù)存在不匹配問題。為了保證數(shù)據(jù)的完整性、正確性,在分幅作業(yè)完成時,需接邊,主要是幾何位置和屬性的接邊。
二、系統(tǒng)開發(fā)框架設計
系統(tǒng)采用組件化、模塊化設計思想,根據(jù)系統(tǒng)功能構成,分為基本結構層、組織管理層、運行層、應用層,每層結構包含若干模塊以提供不同服務,每個模塊相互獨立,并提供標準接口以實現(xiàn)其功能運算。
采用模塊化功能結構劃分有助于實現(xiàn)檢查的結構化,即檢查項目與檢查數(shù)據(jù)間的獨立性。當?shù)貓D數(shù)據(jù)來源發(fā)生變化時,只需更改地圖數(shù)據(jù)管理模塊中的接口,無需更改檢查模型和方案中的相關內(nèi)容,提高了數(shù)據(jù)檢查的通用性,并且通過數(shù)據(jù)接口能實現(xiàn)軟件的二次開發(fā),增強系統(tǒng)可擴展性。
三、系統(tǒng)開發(fā)關鍵技術
1、數(shù)據(jù)格式的設計。在數(shù)字地圖實際生產(chǎn)中,最常用軟件包括MapStation 3.0、MappingStar、Geoway等軟件,這些軟件數(shù)據(jù)格式不同,如MapStation基于MicroStation軟件開發(fā),數(shù)據(jù)格式為dgn格式,在該格式中,只能執(zhí)行一些簡單的查詢和檢查,無法進行更深層次的拓撲和屬性檢查,最終需轉(zhuǎn)換為交換格式數(shù)據(jù)。
為提高檢查系統(tǒng)的通用性,必須檢查交換格式數(shù)據(jù)。因此,系統(tǒng)需導入交換格式數(shù)據(jù),將其轉(zhuǎn)換為與系統(tǒng)無關的中間格式數(shù)據(jù),最后輸出誤差文件,以便在MapStation 3.0等制圖軟件中定位改正。系統(tǒng)中涉及的自定義數(shù)據(jù)格式包括地圖中間數(shù)據(jù)格式(*.CUS)、錯誤信息文件格式(*.whe)等。
①地圖中間數(shù)據(jù)格式。它由文件頭和要素層數(shù)據(jù)組成,文件頭包含文件地圖圖幅的基本信息,分層數(shù)據(jù)存儲每要素層的屬性字段、要素位置坐標、屬性信息等。
②錯誤信息文件格式。錯誤文件根據(jù)檢查方案、檢查模型、錯誤信息三層嵌套,依次存儲每個檢查模型下的錯誤列表。
2、圖形化規(guī)則、模型、方案結構設計。圖形化規(guī)則、模型、方案三層結構設計是對傳統(tǒng)三層結構的優(yōu)化改進,采用人機交互方式,將圖形化檢查規(guī)則按一定邏輯關系連線,從而實現(xiàn)檢查模型的建模,進一步創(chuàng)建檢查方案的過程。
在系統(tǒng)中,規(guī)則分為基本、擴展規(guī)則,其中,基本規(guī)則是系統(tǒng)中最小的檢查單元,每個基本規(guī)則都是一個動態(tài)鏈接庫(dll),通過調(diào)用預先定義接口來實現(xiàn)地圖數(shù)據(jù)最基本的檢查功能;擴展規(guī)則是一個新的規(guī)則,它概括、打包和封裝了模型的功能,是對基本規(guī)則功能的增強擴展,用于完成復雜的檢查功能,提高規(guī)則的重用性,降低模型構建難度。擴展、基本規(guī)則共同構成一個規(guī)則庫,它們相互獨立,實現(xiàn)各自的檢查功能,如提取面邊緣、屬性過濾、微小距離、懸掛結點等。在該系統(tǒng)中,規(guī)則由圖形化模塊組件表示。
模型是一系列具有邏輯順序的規(guī)則集合,是對檢查內(nèi)容與過程的格式化描述,用于完成特定要求的數(shù)據(jù)檢查內(nèi)容,如等高線相交、居民地用水等。該模型獨立于檢查數(shù)據(jù),具有通用性,可實現(xiàn)地圖數(shù)據(jù)的結構化檢查,在系統(tǒng)中,它通常由一系列圖形模塊組成,這些圖形模塊通過有方向線段連接。
檢查方案是一系列檢查模型的集合,可針對特定任務定制不同檢查方案,而且方案支持檢查項目的新建、修改和刪除等。
3、關鍵對象接口模型構建。系統(tǒng)實現(xiàn)中的重要對象包括規(guī)則對象、模型對象、地圖繪制對象,這些對象貫穿于系統(tǒng)運行的全過程,通過接口實現(xiàn)相互調(diào)用和運行。
1)規(guī)則對象接口構建。規(guī)則對象(CBaseManagerRuleObj)包括以下用于外界調(diào)用的重要接口函數(shù):
①SetParameters(void):設置處理參數(shù),在dll中彈出對話框,在對話框中設置各種參數(shù),最后輸出相應參數(shù),返回最終設置結果,保存在CStirng中,最終保存到文件中。
②DataManager(ArrayElemObj*pResultArray):處理數(shù)據(jù)時,通過此步驟檢查數(shù)據(jù)流,檢查后數(shù)據(jù)將輸出到下一個規(guī)則進行操作,它包含許多重載方式,以應對多個不同輸入?yún)?shù)。
③SetExternParams(LPVOID pParams,int nFlag):設置處理參數(shù),nFlag外部參數(shù)類型,暫時包括0:圖層指針;1:圖層屬性列表;2:要素地圖指針,其他類型根據(jù)需要添加。
2)模型對象接口構建。模型對象(CBaseManagerModelObj)調(diào)用一系列規(guī)則功能接口,在此基礎上提供一系列在數(shù)據(jù)檢查中需調(diào)用的重要接口,包括:
①SetExternParams(LPVOID pParams,int nFlag):設置處理參數(shù),nFlag外部參數(shù)類型,暫時包括0:圖層指針;1:圖層屬性列表,其他類型根據(jù)需要添加。
②GetLayerResult():獲取入口規(guī)則篩選結果。
③GetManagerResult():獲取中間規(guī)則篩選結果。
④GetAdvancedResult():獲取擴展規(guī)則處理結果。
⑤GetRuleResult():遞歸計算以獲得整個擴展規(guī)則處理的最終結果。
⑥D(zhuǎn)ataManager():獲得模型運算結果。
3)地圖繪制對象接口構建。地圖繪制對象(CMapDrawerObj)實現(xiàn)了地圖數(shù)據(jù)的符號化顯示,為用戶直觀查看地圖集誤差信息提供了依據(jù),而且通過地圖繪制對象的接口能實現(xiàn)更多的顯示效果。具體接口為:
①DrawElemObj(CDC*pDC,CElemObj*pObj):繪制地圖要素數(shù)據(jù)。
②DrawLayer(CDC*pDC,CElemLayer*pLay er):繪制圖層數(shù)據(jù)。
③DrawMap(CDC*pDC,CElemMap*pMap):繪制地圖數(shù)據(jù)。
④DrawDynamicFocus(CDC*pDC):動態(tài)繪制聚焦窗口。
四、系統(tǒng)模塊的實現(xiàn)
系統(tǒng)采用圖形化組件設計方法,其中方案定制驗收模塊是整個系統(tǒng)的核心,主要完成檢查方案的定制和地圖數(shù)據(jù)的檢查驗收。如圖1所示,該模塊的運行界面包括四部分:主工具面板、菜單控制面板、工作視圖、注釋顯示窗口,主工具面板列出了各種可用的檢查規(guī)則、模型和方案列表;菜單控制面板包含系統(tǒng)的功能菜單;工作視圖用于制作模型和擴展規(guī)則;注釋顯示窗口顯示各種規(guī)則和模型名稱、實現(xiàn)功能和輸出結果等。錯誤輸出和定位模塊主要功能是格式化輸出檢查到的錯誤信息,并以動態(tài)可視化方式顯示在視圖窗口中,用戶可進行地圖操作、屬性查詢、自定義標注、距離面積量測等,以便用戶及時發(fā)現(xiàn)和改正錯誤。
參考文獻:
[1]李韜.數(shù)字地圖成果質(zhì)量評價分析與量化方法探討[J].海洋測繪,2015(03).
[2]岳耀.數(shù)字地圖數(shù)據(jù)質(zhì)量檢查系統(tǒng)關鍵技術研究[J].測繪,2016(06).