陳 勝
(湖南省第三測繪院,湖南 長沙 410118)
MapGIS是武漢中地數碼科技有限公司推出的專業GIS軟件,在國土資源管理、地質勘探等領域使用極其廣泛,尤以MapGIS6.7為甚,其采用了自定義的數據格式,包括點(WT)、線(WL)、面(WP)等格式,由于歷史原因,這些數據一般采用1954北京坐標系、1980西安坐標系。根據原國土資源部、原國家測繪地理信息局的要求,2018年7月1日起全面使用2000國家大地坐標系,急需將這些存量數據進行坐標轉換。
為解決MapGIS數據格式轉換問題,研究者提出了多種解決方案,主要有使用MapGIS軟件、基于MapGIS二次開發兩類方法。
(1)采用的MapGIS軟件的功能進行坐標轉換。主要優點:數據格式準確。主要缺點:操作煩瑣;需要輸入轉換參數,不利于參數保密。
(2)MapGIS軟件作為專業的GIS平臺,提供了強大的二次開發SDK,黃宗維[1]等人基于MapGIS SDK對坐標轉換方法進行了研究。主要優點:數據格式準確;轉換流程可定制;軟件可以內置轉換參數。主要缺點:軟件內置參數易被破解。
以上兩種方法均需要安裝MapGIS軟件,都有軟件部署難度大、成本高、轉換速度慢等缺點。
筆者通過剖析MapGIS軟件數據文件格式,采用C++語言,使用Visual Studio 2005開發了數據坐標轉換軟件。
(1)遍歷指定目錄及其子目錄包含的點、線、面文件,形成文件清單。(2)從插入的硬件加密鎖中讀取密文,并解密為轉換參數。(3)將單個文件一次性讀入,形成內存文件,并校驗文件信息。(4)數據坐標轉換,轉換流程為原高斯平面坐標→原大地坐標→原空間三維坐標→新空間三維坐標→新大地坐標→新高斯平面坐標。(5)將新的空間參考信息寫入內存文件。(6)將轉換后的內存文件按原目錄結構寫入同名文件。坐標轉換流程如圖1所示。

圖1 軟件流程圖
使用前將坐標轉換參數采用非對稱加密算法加密后寫入硬件加密鎖。使用時插入硬件加密鎖,坐標轉換軟件從硬件加密鎖讀取密文,解密得出各項參數進行坐標轉換。
軟件運行界面如圖2所示。

圖2 軟件運行界面
軟件操作流程如下:指定原始數據目錄;指定結果保存目錄;設置中央子午線;設置帶號;數據轉換。
MapGIS數據文件主要包括點、線、面三種。其中點文件的幾何數據只包含點,由單個坐標表示;線文件的幾何數據為線格式,由坐標串表示;區文件包含線、結點。三種文件結構基本一致,包括文件頭、數據區頭、數據區三部分,本文只介紹坐標相關內容。
文件頭從文件起始位置開始,包含文件頭標識、橢球類型、中央子午線等。數據讀取時首先讀文件頭,通過文件頭中數據區頭的起始位置讀取數據區頭。
數據區頭位于文件頭之后,通過這些信息找到各數據區位置獲取數據。文件存在多個數據區頭,第0個數據區頭包含點和線信息,第4個數據區頭包含結點信息。每個數據頭10字節,其中0~3 數據區的起始位置;4~7 數據區總字節數。
數據區一般位于數據區頭文件之后,包括存儲點、線、結點等各種數據。
(1)點文件。每個點據長度為93字節,第7~14字節為X坐標,第15~22字節為Y坐標。(2)線文件。每個線數據長度為57字節。第8~11字節為線的頂點數量。第12~15字節為該線的頂點坐標存儲位置偏移量。每個頂點長度為16字節,前8字節為X坐標,后8字節為Y坐標。(3)面文件。面文件包含線數據和結點數據,線數據格式與線文件一致。每個結點數據長度為55字節,第0~7字節為X坐標,第8~15字節為Y坐標。
軟件不依賴MapGIS,直接對數據文件進行讀寫,轉換速度快,在配備I7-7700 CPU的PC上測試轉換速度約為1 300 MB/min,遠遠高于MapGIS軟件。轉換后數據按原有目錄結構保存,后期數據整理工作量小,也節約了昂貴的采購費用。將坐標轉換參數加密后保存于硬件加密鎖,實現軟件和參數的分離,實現了參數保密。部署簡單,操作方便,只需要一個100 KB的可執行文件即可完成全部功能。使用時插入正確的硬件加密鎖,打開軟件即能進行坐標轉換,基本不需要培訓。