【摘要】數據轉換一直是震害預測專題研究工作的過程中一個不可避免的問題,尤其是Excel數據與GIS空間數據之間的轉換。由于兩個平臺對數據表達方法上的差異以及項目需求的不同,一般常規方法都很難滿足數據的無損轉換。本文通過分析多種數據轉換平臺在數據轉換方面的優勢與不足,結合震害預測專題研究工作具體項目需求,探討一種基于文件流、VBA和OLE技術的Excel數據與GIS空間數據轉換方法,實踐證明該方法簡單、有效,數據損失率低。
【關鍵詞】ExcelGIS數據轉換數據接口
一、引言
在進行震害預測專題研究工作的過程中,對Excel數據文件的充分利用可以降低項目成本,避免數據的重復采集,縮短項目周期,提高現有數據的利用率。在數據更新過程中有Excel數據文件數百個,其全部轉換到GIS空間數據庫,數據處理全部人工去處理難度較大,并且數據的準確性以及完整性難以保證。通過對數據轉換方式與地震行業數據格式的分析,在C#.NET中,利用文件流、VBA和OLE技術實現Excel數據與GIS空間數據格式之間的轉換接口,減少人工數據轉換帶來的錯誤和誤差。
二、地震行業數據轉換方式分析
震害預測專題數據匯總完成后大部分是以Excel格式數據文件形式整理成冊,通過Ftp服務器或者網絡工作站的形式上傳至服務器。傳統的數據處理方式采用人工編輯導入相應的GIS文件數據庫中,此種方式無疑增加了數據導入過程中產生誤差的幾率,增加數據錄入的麻煩。為避免誤差幾率的增加和數據錄入的麻煩,借鑒ADO技術在Excel與Access之間的數據轉換和VB.NET在AutoCAD與GIS數據轉換接口中的方式,最終通過C#. NET平臺運用自定義Txt文件數據流結合Office辦公軟件提供的VBA接口和OLE技術實現Excel文件與GIS數據庫數據轉換。
三、兩種數據分析與技術路線
3.1兩種數據分析
以GIS空間數據的格式中的Shapefile為例進行說明,Shapefile是ArcView GIS 3.x的原生數據格式,屬于簡單要素類,用點、線、多邊形存儲要素的形狀,具有簡單、快速顯示的優點。Shapefile是空間信息和屬性信息分離存儲,所以稱之為“基于文件”,其由*.shp、*.shx、*.dbf三個主要文件組成。*.shp:存儲的是幾何要素的空間信息,即XY坐標;*.shx:存儲的是有關*.shp存儲的索引信息;*. dbf:存儲地理數據的屬性信息的dBase表。
以地震行業統計的點數據Excel文件為例,Excel工作表中包括若干屬性列,其對應Shapefile中的*.dbf文件,即存儲地理數據的屬性信息;最后兩列為X、Y經緯度坐標,其對應的Shapefile中的*.shp和*.shx文件,即存儲地理數據的是空間信息。
通過對兩種數據分析不難發現只要做到Excel每條記錄與Shapefile文件每個點的屬性信息與空間信息的一一對應,即可完成兩種數據的無縫轉換。
3.2技術路線
Excel數據與GIS空間數據轉換技術的研究方法是采用MVC設計模式,即“模型建立—算法研究—系統實現”的思路來組織的。首先按照城市震害系統需求規范建立的GIS空間數據模型搜集廊坊地區的各種屬性和空間數據,例如醫院、學校、小區、4S店、公園、立交橋、公司等企事業單位的Excel數據文件,其次通過C#.NET結合VBA接口與OLE技術編程實現對廊坊地區空間、屬性數據“剝離—重組”(圖1所示)———即利用C#.NET與Office辦公軟件提供的VBA接口將Excel文件中的屬性數據與空間信息進行剝離生成自定義Txt文件;然后將生成的自定義Txt文件通過OLE技術形成由*.shp、*.shx、*.dbf三個主要文件組成的GIS空間數據Shapefile文件。轉換分兩個階段,依次為Excel-Txt轉換和Txt-Shapefile轉換。轉換過程的關鍵是Excel每條記錄到Shapefile文件每個點的空間信息與屬性信息的一一對應,最后完成廊坊增量式空間數據信息更新,提高城市震害預系統的數據處理和更新速度。
3.2.1數據準備
由于地震行業數據匯總的Excel文件較多,提交的數據比較亂,為保證Excel數據與GIS空間數據Shapefile文件的無損轉換,需要對Excel數據在坐標屬性字段上重點檢查。由于空間信息數據是依賴坐標信息進行轉換的,坐標信息關系到轉換后Shapefile數據對應的具體位置,因此轉換前的Excel數據必須都要有坐標屬性字段,且坐標信息正確無誤。
3.2.2Excel-Txt轉換
此階段的目的是實現對Excel數據的空間信息與屬性信息剝離,按照空間信息屬性字段的值提取“Point”信息,逐行存儲到臨時文件Point.Coo中,按照其他屬性信息字段的值提取“Property”信息,逐行存儲到臨時文件Property.Att中,即可建立Excel數據到GIS空間數據Shapefile文件兩者關系。
3.2.3Txt-Shapefile轉換
此階段的目的是實現Point.Coo和Property.Att文件中的空間信息與屬性信息存儲到GIS空間數據Shapefile文件中。首先創建一個新的Shapfile工作空間,其次將 Point.Coo和Property.Att中的信息通過數據流對象轉化并存儲到Shapfile工作空間中進行保存。通過上述兩個階段的轉換,數據即完成了Excel數據到GIS空間數據平臺的轉換。
四、小結
當然,通過幾個項目的實踐,對這兩種數據轉換過程中的一些實際問題也有了更深層次的了解與把握,為便于其他項目借鑒,主要總結了如下幾點。(1)Excel-Txt轉換模版中,對Excel文件數據格式要求較為嚴格,在以后的數據匯總中需要形成一套比較完整的數據模板,這樣就能避免轉換前的大量數據檢查工作,確保轉換后的空間信息正確,有利于各個地區間數據整合。(2)在基于Excel的點空間信息文件與GIS空間數據Shapfile的數據轉換過程中以IO數據流文件作為橋梁,小數據量的數據轉換對系統的影響不大,若遇到海量數據轉換需改進中間介質。(3)現在僅完成了基于Excel的點空間信息文件與GIS空間數據Shapfile的數據轉換,基于其他幾何信息的Excel的空間信息文件模板有待確定,最終可借鑒點信息的轉換思路進行轉換。
參考文獻
[1]殷志杰.一種基于VB的Excel與Access間的數據轉換技術[J].科學論壇
[2]伍云,張東. XML與關系數據庫的數據轉換接口的實現[J].電腦開發與應用,2007
[3]陳立,羅傳文,余向勇,趙慶丹,孫海洪.基于AE和C_的帽兒山CAD用圖到GIS數據轉換[J].森林工程,2010
[4]馬永昌,李建民.基于VB.NET的AutoCAD數據轉換技術研究及應用[J].測繪與空間地理信息,2010
[5]宋丙劍,張艷軍.記事本、Excel在Mapsource和Mapgis數據轉換中的應用探討[J].礦山測量,2008