何清
(安徽省地質環(huán)境監(jiān)測總站,安徽合肥 230001)
遙感技術與計算機技術的日益成熟,大大推動了測繪技術的不斷進步,測繪已融入各行各業(yè)[1-2]。測繪對象范疇的不斷擴大、觀測工具的多樣化和處理手段的智能化導致觀測數(shù)據呈現(xiàn)多源化的特征。這些數(shù)據的來源、結構、類型完全不同,形成了海量的多源異構數(shù)據[3]。面對數(shù)據源類型復雜、比例尺和投影多樣、數(shù)據量巨大、結構各異的測繪數(shù)據,測繪單位不僅需要對數(shù)據進行安全高效的存儲,還需要考慮對已有的數(shù)據如何進行有效管理與利用,避免數(shù)據資源的浪費[4]。傳統(tǒng)的數(shù)據存儲與管理技術已無法滿足測繪發(fā)展需求[5],構建對多源異構數(shù)據的一體化管理平臺迫在眉睫。
傳統(tǒng)的系統(tǒng)開發(fā)方式是通過COM 技術實現(xiàn)系統(tǒng)與AutoCAD 等應用程序之間的通信[6-8],因此系統(tǒng)的運行依賴AutoCAD 等商業(yè)軟件的支持。隨著計算機技術的發(fā)展,開源軟件在操作系統(tǒng)、數(shù)據庫等多個方面的應用逐漸發(fā)展成熟[9-10],通過對開源組件庫的調用,可幫助系統(tǒng)擺脫對商業(yè)軟件的依賴,有效提高系統(tǒng)的運行效率。而Teigha.NET[11]是一套面向對象的支持多平臺、多版本、多格式的CAD 文件的開源類庫,可脫離AutoCAD 環(huán)境實現(xiàn)讀寫操作、繪制渲染和轉換輸出等。基于此,本研究以C/S為基本結構,采用了C#語言[12]、PostgreSQL 數(shù)據庫、MapWinGIS 二次開發(fā)和Teigha.NET二次開發(fā)等多種開發(fā)手段,調用開源類庫以脫離AutoCAD 等商業(yè)軟件環(huán)境,設計和實現(xiàn)了多源異構測繪數(shù)據管理系統(tǒng)。系統(tǒng)實現(xiàn)了數(shù)據的高效存儲、共享和處理,大大提升了數(shù)據的利用效率,為多源異構數(shù)據的有效管理提供參考。
針對測繪數(shù)據的海量性、多源性、異構性的特點,系統(tǒng)致力于構建一種多源異構數(shù)據統(tǒng)一整合方法。通過研究開發(fā),可以便捷地對空間數(shù)據進行坐標變換和格式轉換,實現(xiàn)測繪空間數(shù)據與屬性數(shù)據的高效管理,大大提高數(shù)據的利用效率,為各項工作提供科學合理準確的數(shù)據綜合分析。
根據系統(tǒng)功能建設目標需求,將整個系統(tǒng)的層次結構分為應用層、平臺層和數(shù)據層三個層次,其結構框圖如圖1 所示。三層系統(tǒng)結構具有較強的靈活性、可拓展性,符合綜合發(fā)展的趨勢,滿足系統(tǒng)的功能需求[13-14]。
圖1 系統(tǒng)結構框圖Figure 1.System structure
系統(tǒng)以Visual Studio.NET[15-16]作為軟件的集成開發(fā)環(huán)境,以面向對象的C#為開發(fā)語言,采用模型-視圖-邏輯控制器的三層軟件架構,構成整個系統(tǒng)應用功能模塊的集成支撐。
考慮到存儲和處理海量的DWG格式數(shù)據文件的需求,并考慮到DWG 文件格式的不公開性,Teigha for.dwg 支持DWG 的多個版本,能直接讀取DWG文件獲取數(shù)據,基于此可進一步實現(xiàn)坐標的變換和文件格式轉換,在此基礎上所開發(fā)的程序可完全脫離AutoCAD 平臺運行,提高數(shù)據的處理效率,具有較高的安全性。Teigha.NET 是基于Teigha for.dwg 創(chuàng)建的操作DWG 文件的.NET 庫,可在微軟的.NET 開發(fā)平臺下使用,具有較高的開發(fā)效率和強大的功能。
MapWinGIS是一套二次開發(fā)組件庫,其核心庫是一個名為MapWinGIS 的ActiveX 控件,可以利用這個ActiveX 組件在系統(tǒng)中添加GIS 的相關功能,例如:地圖顯示、繪圖、存儲GIS 數(shù)據以及一些簡單的地圖操作,有助于實現(xiàn)數(shù)據的可視化,決策者可根據地圖數(shù)據做到統(tǒng)籌全局、及時決策。MapWinGIS是一個相當高效的開源地圖引擎,數(shù)據瀏覽漫游速度很快,開發(fā)環(huán)境友好,封裝接口對象完善,是GIS 程序開發(fā)的較好選擇。
1.4.1 基于Teigha.NET的CAD測繪數(shù)據坐標轉換技術
DWG 文件坐標變換的目的是實現(xiàn)文件內每個塊實體的坐標變換,每個塊實體包含一個或多個實體,所以DWG文件坐標變換的實質是每個實體坐標變換的實現(xiàn)[17]。
系統(tǒng)中DWG文件的坐標轉換模塊是基于Teigha.Net 開發(fā)實現(xiàn)的。相較于傳統(tǒng)的逐塊轉換的方法[18],系統(tǒng)采用了逐點轉換的方法,大大提高了坐標轉換效率和精度。系統(tǒng)可依次遍歷圖形中的所有實體,讀取各個實體的所有節(jié)點的位置屬性,并對各點的坐標逐一進行坐標轉換。模塊主要進行不同坐標基準下高斯投影坐標系之間的轉換或相同坐標基準下的高斯換帶計算。轉換模型采用的是布爾莎七參數(shù)模型或四參數(shù)模型。進行坐標變換后,模塊會將變換后的坐標值重新賦值給該點的位置屬性,從而達到轉換完成圖形中的所有實體,這種轉換方法的精度只取決于轉換參數(shù)的求取誤差,不存在額外的精度損失。
1.4.2 基于Teigha.NET實現(xiàn)CAD數(shù)據與shp數(shù)據的轉換
利用Teigha.NET 類庫,可讀取選定的DWG 文件,并將DWG 文件中所含的各類數(shù)據信息以對象的形式保存在一個數(shù)據庫中。通過遍歷DWG 數(shù)據庫,將實體歸于點、線、面,并讀取對應實體的擴展數(shù)據、坐標等屬性信息,并輸出到相應的數(shù)據表,分別輸出到shapefile 點、線、面類型文件中。這種轉換方式,不會造成屬性信息的丟失,極大地減輕了后期數(shù)據處理工作。轉換結果如圖2所示。
圖2 DWG轉shp結果圖Figure 2.Transformation result from DWG to shp
系統(tǒng)數(shù)據庫作為頂層數(shù)據庫,為保證數(shù)據的安全性,針對不同的賬戶信息設置了不同的權限,主要實現(xiàn)存儲和管理賬號信息、用戶權限、文件上傳等基本功能,它隱藏了數(shù)據庫內部復雜而又多樣化的數(shù)據存儲結構,作為用戶訪問數(shù)據庫中測繪空間數(shù)據的橋梁,直接面向用戶。系統(tǒng)數(shù)據庫的結構如圖3所示。
圖3 系統(tǒng)數(shù)據庫結構Figure 3.System database structure
由于測繪數(shù)據種類繁雜,包含地形圖、影像圖、控制點資料等多種類型測繪空間數(shù)據,數(shù)據格式各異,時序各不相同,覆蓋的范圍也不一樣。為整合、存儲多元異構的測繪空間數(shù)據,系統(tǒng)建立元數(shù)據庫[19]用于保存文件的屬性信息,元數(shù)據的數(shù)據結構如圖4所示。在元數(shù)據庫中建立“文件公有信息”和“文件私有信息”兩類表格。文件公有信息表用于存儲不同類型數(shù)據的公共屬性,可以間接提高大規(guī)模數(shù)據檢索的性能。文件私有信息表用于存儲不同類型數(shù)據特有的屬性信息,在文件公有屬性的基礎上對不同類型數(shù)據的私有屬性進行補充,確保文件屬性的完整性。
圖4 元數(shù)據庫結構Figure 4.Meta-database structure
為解決二進制數(shù)據文件的存儲問題,系統(tǒng)建立文件數(shù)據庫,其數(shù)據庫結構如圖5 所示。文件數(shù)據庫采用分段存儲的方式對二進制文件進行存儲,將文件轉化為二進制數(shù)據流,再以固定長度進行分割存儲,這種方式既提高了文件輸入、輸出的速度,也避免了造成數(shù)據庫膨脹。
圖5 文件數(shù)據庫結構Figure 5.File database structure
系統(tǒng)采用了PostgreSQL 數(shù)據庫、MapWinGIS 二次開發(fā)和Teigha.NET二次開發(fā)等混合開發(fā)模式,構建了“多源異構測繪數(shù)據管理平臺”,實現(xiàn)了信息化管理平臺與PostgreSQL數(shù)據庫的無縫對接。
系統(tǒng)具有以下功能:
(1)文件管理。文件的上傳與下載、數(shù)據的備份與還原功能,實現(xiàn)了礦區(qū)數(shù)據的集中統(tǒng)一管理與檢索查詢。
(2)圖表顯示??梢詫hp 數(shù)據和CAD 數(shù)據瀏覽與導航。在“數(shù)據顯示”窗口中劃分了多個視圖,各種類型數(shù)據可同時加載顯示。
(3)圖形編輯。提供基本的圖形編輯與繪畫功能,主要包含線打斷、線延伸、線修剪、添加文本等。由于測繪數(shù)據中DWG 圖形數(shù)據量通常很大,極易導致數(shù)據更新時制圖卡頓。因此為解決該問題,系統(tǒng)實現(xiàn)了DWG圖形的局部導出更新功能。
(4)查詢統(tǒng)計分析??刹樵凕c坐標、兩點距離及方位、線長、實體面積、實體擴展屬性等,輔助用戶進行圖形的統(tǒng)計與分析。
(5)定制報表。用于將指定圖形數(shù)據定制成.dat格式的文件。系統(tǒng)可將指定點、高程點、界址點、控制點、復合線和等高線生成數(shù)據文件。
(6)坐標變換。主要進行不同坐標基準下高斯投影坐標系之間的轉換或相同坐標基準下的高斯換帶計算。
(7)文件轉換。對DWG 文件與shp 文件格式進行相互轉換,同時實現(xiàn)控制點、高程點、野外測點等DAT數(shù)據的展繪。
(8)質量檢查。包括屬性完整性檢查、重復實體檢查、實體相交關系檢查和實體封閉性檢查功能,用于在數(shù)據入庫前對CAD圖形進行數(shù)據質量檢查。
(9)用戶管理。存儲用戶信息、訪問記錄以及信息化管理平臺的后臺信息,實現(xiàn)數(shù)據的安全訪問。
系統(tǒng)以Visual Studio.NET 作為軟件的集成開發(fā)環(huán)境,采用面向對象的C#開發(fā)語言,PostgreSQL 數(shù)據庫開發(fā)手段,構建了測繪數(shù)據管理系統(tǒng),實現(xiàn)了信息化管理平臺與PostgreSQL 數(shù)據庫的無縫對接?;陂_源的MapWinGIS 和Teigha.NET 二次開發(fā),使得系統(tǒng)功能實現(xiàn)可脫離AutoCAD 平臺,運用軟件工程技術以及內存管理等方法很好地解決了測繪空間數(shù)據信息化管理平臺兼容性與信息安全問題。針對不同空間基準、不同格式的各類測繪空間多源異構數(shù)據,構建各類測繪空間多源異構數(shù)據的數(shù)據結構轉換方法,并實現(xiàn)關系數(shù)據庫對測繪空間多源異構數(shù)據的高效管理,大大提高了數(shù)據的利用效率,為各項工作提供科學合理準確的數(shù)據綜合分析。