宋冬萍
摘要:本文根據三種方式深入探討了帶屬性的MapInfo數據的坐標轉換方法:一種通過VC和MapX編程調入“.tab”文件,快速實現了坐標系之間的一系列轉換;一種通過AutoCAD Map 3D軟件實現四參數轉換;一種在.prj文件中定義坐標系,通過改變投影來進行轉換。這三種方式最終都以WGS-84坐標轉換為BJ54坐標為例子進行了驗證,取得良好結果。
關鍵詞:MapInfo數據; 坐標轉換; 七參數; 四參數; MapX ; AutoCAD Map 3D
中圖分類號: C37文獻標識碼: A
前言
在MapInfo的.prj文件中已經定義了300多種坐標系,但是其中并沒有我國現有的常用坐標系,更沒有我國地方獨立坐標系的定義[1,2]。
隨著MapInfo軟件在我國的深入利用,在該軟件中會經常涉及到我國常用坐標系(北京54和西安80)和地方獨立坐標系,這就需要我們對其進行定義和坐標轉換。本文通過三種方法對MapInfo數據的坐標轉換做了一些研究。
1 Mapinfo數據坐標轉換方法設計
1.1基于VC和MapX平臺坐標轉換的設計
1)首先把.gst地圖加載進來;
2)根據函數進行圖元統計和分類,本文只針對線圖元和點圖元;
3)新建圖層,用于添加轉換后的圖元,設置該圖層的坐標系為轉換后的坐標系,并且把原來的屬性字段復制進來;
4)獲取線圖元節點個數,然后獲得節點坐標;
5)獲得節點坐標后進行坐標轉換,轉換時,應注意獲得一個節點轉換一個,把轉換后的節點坐標以追加的方式添加在一個“點坐標.txt”文件中,把圖元的屬性值也添加在里面。
6)在坐標轉換完成后,從“點坐標.txt”文件中讀取各個圖元的節點坐標,把讀取的節點坐標賦予給點對象,再把點對象賦給點集對象:當一個圖元上的節點坐標全部讀取后,把點集對象轉換為圖元添加到新建的圖層上,并且把相應的屬性值賦給新添加的圖元。
1.2基于AutoCAD Map 3D的坐標轉換設計
首先把.tab文件導入到AutoCAD Map 3D,然后根據已知的X、Y平移量、旋轉角度、縮放比例,運用命令進行轉換,步驟如下:
1)平移:在命令行鍵入MOVE命令后命令行顯示:“Select objects:”,選定全部圖素,然后命令行顯示:“Specify base point or [Displacement]
2) 旋轉:在命令行鍵入rotate命令;然后命令行顯示:“Select objects:”,選定全部圖素;接著命令行顯示:“Specify base point:”,此時選擇平移時的基點后回車;最后命令行顯示:“Specify rotation angle or [Copy/Reference] <0>:”此時鍵入旋轉角度后回車。
3) 縮放:在命令行鍵入scale命令,命令行顯示:“Select objects:”,選定全部圖素;然后命令行顯示:“XX found”,按下回車鍵;接著命令行顯示:“Specify base point:”,此時選擇平移時的基點后回車;最后命令行顯示:“Specify scale factor or [Copy/Reference] <1.0000>:”,鍵入縮放比例后回車。
最后,再把DWG文件導出為“.tab”文件,導出時注意選擇屬性,這樣屬性數據就不會丟失。
1.3 利用.prj進行轉換
以WGS84坐標轉換為BJ54坐標為例進行說明,步驟如下:
1)通過軟件求出BJ54坐標系轉換到WGS-84坐標系的七參數;
2)在.prj文件中定義出BJ54坐標系,然后保存;
3)在MapInfo中打開已知的.tab文件;
4)點“文件”選擇下拉菜單中的“另存副本為”,彈出“另存表為”的對話框;
5)在“另存表為”的對話框中更改表的名稱,點“投影”彈出“選擇投影”對話框,在該對話框中選擇自己定義的坐標系,最后點“另存表為”對話框中的保存即可。
2 實例分析
為了對上述坐標轉換程序和方法進行檢驗,本文采用實際的10個控制點坐標數據導入到Mapinfo中生成5條線段來參與轉換。
2.1基于VC和MapX方法的實例分析
本實例采用10個控制點數據,根據已知的軟件先求出七參數:208.555452540641、187.953989974842、75.695433324101、-1.626742、6.228388、-3.559023、0.402897421344201,這七個參數分別為X、Y、Z的平移參數和旋轉參數、尺度參數,把這七個參數輸入到如圖1的界面中,進行轉換,轉換的結果以與已知的數據相比較結果如表1所示。
表1 轉換數據與已知數據比較
通過以上的比較可知,利用本程序進行轉換求得轉換后坐標數據與已知的坐標數據之間的差值都處于厘米級,并且各個線段的屬性沒有改變,在對圖形精度要求不高的條件下,這樣的轉換精度是完全可以接受的
2.2基于AutoCAD Map 3D 方法的實例分析
本實例采用10個控制點數據,根據已知的軟件先求出四參數:40.6833491024723、-117.703797824564 、1.00000187185103 、2.301,這四個參數分別為X、Y的平移參數、尺度參數和旋轉參數(以秒為單位),利用這四個參數和AutoCAD Map 3D下的轉換步驟進行轉換,轉換的結果與已知的數據相比較結果如表2所示:
表2 轉換數據與已知數據比較
通過以上的比較可知,利用AutoCAD Map 3D進行轉換求得轉換后坐標數據與已知的坐標數據之間的差值都處于分米級,并且各個線段的屬性沒有改變,在對圖形精度要求不高的條件下,這樣的轉換精度是完全可以接受的。
2.3利用.prj進行轉換的實例分析
本實例采用10個控制點數據,轉換的結果與已知的數據相比較結果如表3所示:
表3 轉換數據與已知數據比較
通過以上的比較可知,利用.prj進行轉換求得轉換后坐標數據與已知的坐標數據之間的差值都處于分米級,并且各個線段的屬性沒有改變,在對圖形精度要求不高的條件下,這樣的轉換精度是完全可以接受的。
3 結論
通過以上的實驗結果及分析可以得出結論:在保持數據屬性不變的情況下,利用VC和MapX可以進行一些精度要求較高的、簡單的線性地圖的坐標轉換,利用AutoCAD Map 3D可以進行分米級精度的地圖的坐標轉換,利用.prj文件可以快速地進行分米級精度的地圖的坐標轉換。
參考文獻
[1] 何興燕.基于MapInfo的福州地區坐標系定義與轉換[J].露天采礦技術,2007, 02:36~37.
[2]石永樂,梁宏奇,李國林.AutoCAD繪圖中的坐標轉換[J].礦山測量,2006,(2).