朱向榮
(1. 武警黃金第八支隊,新疆 烏魯木齊 830057)
手持式GPS儀點位數(shù)據(jù)的批量導入方法
朱向榮1
(1. 武警黃金第八支隊,新疆 烏魯木齊 830057)
以Garmin's 72手持式GPS儀為例,討論了點位數(shù)據(jù)向GPS儀批量導入的原理,并給出了利用Excel表格進行計算并輸出GPS交換格式文件的具體解決方案。本方法具有數(shù)據(jù)處理自動化、精度可靠的特點,適合物化探測量中大批量點位數(shù)據(jù)的處理。
GPS;點位數(shù)據(jù);導入;交換格式文件
目前,在地勘單位手持式GPS儀已成為標準配置,尤其在大面積物化探測量中利用其進行測點的放樣定位具有相當大的優(yōu)勢。但針對圖上設(shè)計點位如何快速導入GPS儀這個問題,各個單位方法不盡相同。本人結(jié)合實際,總結(jié)出了利用Excel表格進行計算并輸出Mapsource軟件的GPS交換格式文件的具體解決方案。
1.1 手持式GPS儀工作原理
利用手持式GPS儀進行導航定位時,其內(nèi)部對衛(wèi)星信號的解算采用的是WGS84坐標系統(tǒng),成果是經(jīng)緯度及海拔高程,再通過用戶設(shè)置的改正參數(shù)將其反算至用戶坐標系統(tǒng)進行保存(一般地勘工作中均設(shè)置成高斯平面直角坐標進行保存)。在Garmin's 72配套軟件Mapsource中,設(shè)置好與手持GPS儀一致的參數(shù)后,就可進行計算機與GPS儀的數(shù)據(jù)交換。通過對交換格式文件的分析,本人注意到,其中的點位坐標數(shù)據(jù)均為GPS儀內(nèi)部運算數(shù)據(jù),即以(°)為單位的WGS84經(jīng)緯度坐標。這就意味著,用戶要將用戶坐標系統(tǒng)中高斯平面直角坐標導入GPS儀,除采用在GPS儀上手動輸入坐標外,必須先將其根據(jù)設(shè)置的改正參數(shù)換算到WGS84經(jīng)緯度坐標,然后編成交換文件導入GPS儀。前者速度慢、容易出錯,后者雖能批量導入數(shù)據(jù),但對不了解坐標系統(tǒng)轉(zhuǎn)換原理的普通用戶來說是一件很麻煩的事。
1.2 不同坐標系統(tǒng)與WGS84的轉(zhuǎn)換原理[1]
當前地質(zhì)工作中常用的地理底圖其坐標系統(tǒng)基本有兩種:54北京坐標系或80西安坐標系。將WGS84坐標系與這兩種坐標系進行轉(zhuǎn)換的標準程序一般需要5個環(huán)節(jié):①高斯平面直角坐標系到大地坐標系→②大地坐標系到地心坐標系→③地心坐標系到地心坐標系→④地心坐標系到大地坐標系→⑤大地坐標系到高斯平面直角坐標系(具體到本文所要解決的問題,執(zhí)行到第④環(huán)節(jié)即可)[2-6]。
②環(huán)節(jié)的轉(zhuǎn)換公式如下[3,7]:
其中,(X,Y,Z)為地面點空間直角坐標;(B,L,H)為其大地坐標;N為卯酉圈曲率半徑;e為第一偏心率。
③環(huán)節(jié)的簡化公式(不考慮旋轉(zhuǎn)及尺度因子變化)如下:
其中,(XS,YS,ZS)為地面點在WGS84坐標系下的空間直角坐標;(XT,YT,ZT)為其在用戶坐標系下的空間直角坐標;(dX,dY,dZ)為兩套空間直角坐標之差(即GPS儀中所需設(shè)定的改正參數(shù))。
④環(huán)節(jié)的轉(zhuǎn)換公式如下[3]:
其中,a為參考橢球長半軸;b為參考橢球短半軸;e'為第二偏心率,其他符號同②環(huán)節(jié)。
1.3 GPS交換格式文件
GPS交換格式文件是Mapsource所能識別的一種擴展名為“.gpx”的文本文件,可將其分為兩部分:第一部分可不作改動,在所有交換文件中均可直接利用;第二部分才是具體測點信息,須根據(jù)具體測點數(shù)據(jù)編制。
第一部分內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="MapSource 6.5" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"><metadata><link href="http:// www.garmin.com"><text>Garmin International</text></ link><time>2013-05-17T13:24:00Z</time><bounds maxlat="48.15" maxlon="88.05" minlat="48.14" minlon="88.05"/></metadata>
第二部分格式如下:
<wpt lat="北 緯" lon="東 經(jīng)" ><ele>高 程</ ele><name>點號</name><sym>Waypoint</sym></wpt>
<wpt lat="北緯" lon="東經(jīng)"><name>點號</ name><sym>Waypoint</sym></wpt>
分析GPS交換格式文件結(jié)構(gòu)發(fā)現(xiàn),只要算出測點的經(jīng)緯度坐標,然后按其第二部分格式進行排列輸出即可,而這樣的功能在Excel表格中利用VBA編程可輕松實現(xiàn)。如圖1所示,在Excel表格中建立起固定格式的模板,將以上交換文件的第一部分內(nèi)容復制到“K3”單元格中;在“L2”至“L5”中依次輸入以下內(nèi)容:CGCS2000、西安80、北京54、WGS84;在“M2”、“M3”中分別輸入:是、否;在“K1”中輸入:=IF(J3="是",1,2);在“K2”中輸入:=COUNT(B4:B65536);在“K4”中輸入:";在“L1”中輸入:=IF(B2="CGCS2000",1,IF(B2="西安80",2,IF(B2="北京54",4,5)));對“B2”設(shè)置數(shù)據(jù)有效性為:來源于“L2:L5”的序列;對“J3”設(shè)置數(shù)據(jù)有效性為:來源于“M2:M3”的序列;賦予表中按鈕相應(yīng)代碼。至此模板制作完成。
圖1 GPS儀上傳數(shù)據(jù)輸出表
將確定好的相關(guān)改正參數(shù)輸入表中,然后將用戶坐標系內(nèi)的測點設(shè)計數(shù)據(jù)復制到從“A4”開始的相應(yīng)單元格,按動“輸出”按鈕即可批量完成從用戶直角坐標到WGS84經(jīng)緯度的計算及GPS交換格式文件的生成。
按鈕代碼如下:
Private Sub 清空()
Range("A4:D65536").Select
Selection.ClearContents
Range("A3").Select
MsgBox "計算數(shù)據(jù)已清空!", 48
End Sub
Private Sub輸出()
Dim M1 As Double,M2 As Double,M5 As Double,M6 As Double,M7 As Double
Dim M8 As Double,M9 As Double,M10 As Double, F3 As Integer
Dim N As Double, N2 As Double
Q = Range("G3")
T = Range("H3")
P = Range("I3")
S = Range("K2")
N = Range("F3")
F1 = Range("K4")
F2 = Range("K1")
F3 = Range("L1")
Dim Path1 As String, Path2 As String
Path1 = ActiveWorkbook.FullName
Path2 = Range("E3") & "號GPS儀上傳數(shù)據(jù).gpx"
Open Path2 For Output As #1
F = Range("K3")
Print #1, F
For I = 1 To S
Range("A3").Select
M = ActiveCell.Offset(I, 0).Range("A1")
M1 = ActiveCell.Offset(I, 1).Range("A1")
M2 = ActiveCell.Offset(I, 2).Range("A1")
M5 = ActiveCell.Offset(I, 3).Range("A1")
M6 = B(M1, M2, N, F3, 0, 0)
M7 = L(M1, M2, N, F3, 0, 0)
If F3 = 5 Then
M3=Round(WorksheetFunction.Degrees(HD(M6)), 8)
M4=Round(WorksheetFunction.Degrees(HD(M7)), 8)
Else
M8 = KX(M6, M7, M5, F3) + Q
M9 = KY(M6, M7, M5, F3) + T
M10 = KZ(M6, M7, M5, F3) + P
M3=Round(WorksheetFunction.Degrees (HD(DB(M8, M9, M10, 5))), 8)
M4=Round(WorksheetFunction.Degrees (HD(DL(M8, M9, M10, 5))), 8)
End If
If M5 = 0 Then
If F2 = 1 Then
F = "<wpt lat=" & F1 & M3 & F1 & " lon=" & F1 & M4 & F1 & "><name>" & "s" & M & "</name>" & "<sym>Waypoint</sym></wpt>"
Else
F = "<wpt lat=" & F1 & M3 & F1 & " lon=" & F1 & M4 & F1 & "><name>" & M & "</name>" & "<sym>Waypoint</sym></wpt>"
End If
Else
If F2 = 1 Then
F = "<wpt lat=" & F1 & M3 & F1 & " lon=" & F1 & M4 & F1 & " ><ele> " & M5 & "</ele><name>" & "s" & M & "</name>" & "<sym>Waypoint</sym></wpt>"
Else
F = "<wpt lat=" & F1 & M3 & F1 & " lon=" & F1 & M4 & F1 & " ><ele> " & M5 & "</ele><name>" & M & "</name>" & "<sym>Waypoint</sym></wpt>"
End If
End If
Print #1, F
Next I
F = "</gpx>"
Print #1, F
Close #1
MsgBox "恭喜您,GPS儀上傳數(shù)據(jù)已成功導出至默認文件位置!", 48
End Sub
本法在我部某區(qū)礦調(diào)任務(wù)中得到了驗證。該項任務(wù)共設(shè)計水系沉積物測量采樣點位4 000多點。每天每個作業(yè)組在MapGIS圖上劃分作業(yè)范圍后,將該范圍內(nèi)的設(shè)計點位的點號、平面坐標等屬性輸出為文本并導入Excel表格,然后利用此模板轉(zhuǎn)換成GPS交換格式文件導入GPS儀。此法極大地提高了工作效率,避免了外業(yè)人員手動輸入坐標容易出錯的可能,減輕了作業(yè)人員的勞動強度。從使用效果來說,本方法具有數(shù)據(jù)處理自動化、精度可靠的特點,對作業(yè)人員的要求不高、操作簡易,適合地勘單位物化探測量中大批量點位數(shù)據(jù)的處理。
[1] 朱向榮.手持GPS儀改正參數(shù)的內(nèi)業(yè)確定方法[J].地理空間信息,2014,12(4):136-138
[2] 朱向榮.基于Excel VBA的高斯投影計算解決方案[J].礦山測量,2012(1):43-45
[3] 國家測繪局職業(yè)技能鑒定指導中心.測繪綜合能力[M].北京:測繪出版社,2009
[4] 崔明理.控制測量手冊[M].太原:山西科學技術(shù)出版社,1999
[5] 覃輝.測量程序與新型全站儀的應(yīng)用[M].北京:機械工業(yè)出版社,2006
[6] 羅冰.GPS手持機坐標系統(tǒng)轉(zhuǎn)換參數(shù)的簡易解算方法[J].地礦測繪,2003,19(2)∶37-38
[7] 朱向榮.基于Excel VBA的常用測量計算問題解決方案[J].地理空間信息,2013,11(5):131-133
P245
B
1672-4623(2014)05-0107-03
10.3969/j.issn.1672-4623.2014.05.039
朱向榮 ,工程師,主要從事工程測量工作。
2013-07-30。