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