熊志強(qiáng)+肖騰飛
摘 要:對(duì)GPS高程曲面擬合的研究有很多,通常人們實(shí)現(xiàn)GPS高程曲面擬合都是用單一的編程語言。而文章則介紹結(jié)合兩種編程語言更加方便地實(shí)現(xiàn)GPS高程二次曲面擬合。
關(guān)鍵詞:GPS高程;二次曲面擬合;MATLAB;c語言
1 概述
隨著GNSS技術(shù)的發(fā)展,GPS高程測量也更加受到重視,但GPS直接測出的為地面點(diǎn)的大地高,與水準(zhǔn)高之間存在高程異常,因此,若想直接利用GPS測定水準(zhǔn)高,需要擬合出當(dāng)?shù)氐乃拼蟮厮疁?zhǔn)面,通常采用二次曲面擬合,用編程實(shí)現(xiàn)。而編程語言較多,利用MATLAB和c語言各自的優(yōu)勢(shì)相結(jié)合實(shí)現(xiàn)二次曲面擬合會(huì)更加便捷。
2 GPS高程及二次曲面擬合原理
在實(shí)際應(yīng)用中,地面點(diǎn)的高程采用正常高系統(tǒng)。地面點(diǎn)的正常高H_r是地面點(diǎn)沿鉛垂線至似大地水準(zhǔn)面的距離。這種高程是通過水準(zhǔn)測量來確定的。地面點(diǎn)的大地高H是地面點(diǎn)沿鉛垂線至參考橢球面的距離。這就有必要找出GPS點(diǎn)H與Hr的關(guān)系,并用一定的方法將H轉(zhuǎn)換為Hr。似大地水準(zhǔn)面至橢球面間的高差ζ,叫做高程異常。如果知道了各GPS點(diǎn)的高程異常ζ值,則可由各GPS點(diǎn)的大地高H求得各點(diǎn)的正常高Hr。
當(dāng)GPS點(diǎn)布設(shè)成一定區(qū)域面時(shí),可以應(yīng)用數(shù)學(xué)曲面擬合法求待定點(diǎn)的正常高。其原理是,根據(jù)測區(qū)中已知點(diǎn)的平面坐標(biāo)x,y和ζ值,擬合出測區(qū)似大地水準(zhǔn)面,再內(nèi)插出待求點(diǎn)的ζ,從而求出待求點(diǎn)的正常高。設(shè)點(diǎn)的ζ與平面坐標(biāo)x,y有以下關(guān)系: ζ=f(x,y)+ ε,式中f(x,y)為ζ中趨勢(shì)值,ε為誤差。設(shè)
f(x,y)=a0+a1x+a2y+a3x2+a4y2+a5xy+… (1)
寫成矩陣形式有:ζ=XB+ε (2)
式中ζ=[ζ1 ζ2…ζn]T,B=[a1 a2…an]T,ε=[ε1 ε2…εn]T。
X=1 x1 y1 x12 …1 x2 y2 x22 …1 xn yn xn2 … (3)
對(duì)每個(gè)已知點(diǎn),都可列數(shù)以上方程,在ε的平方和最小的條件下,解出各ai,再按式(2)求出待求點(diǎn)的ζ,從而求出Hr。對(duì)于二次曲面擬合,由式(1)可知,只需求出六個(gè)參數(shù)即可確定函數(shù)f(x,y),便可根據(jù)坐標(biāo)求出待求點(diǎn)的高程異常,從而求出正常高。
3 MATLAB和c語言的優(yōu)勢(shì)
MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)與數(shù)學(xué)中常用的形式相似。例如,矩陣方程Ax=b在MATLAB中被寫成A*x=b,若要通過A、b求x,只需寫x=A\b即可,完全不需要對(duì)矩陣的乘法和求逆進(jìn)行編程。因此用MATLAB解決計(jì)算問題比用其它語言簡捷得多。進(jìn)行GPS高程二次曲面擬合則主要為矩陣的運(yùn)算,根據(jù)(2)式,在MATLAB中即可很方便地求出曲面擬合的各參數(shù)。
用MATLAB求解出擬合參數(shù)后,便可用C語言進(jìn)行編程,求出各待求點(diǎn)的正常高。使用C語言有很大的優(yōu)勢(shì)。C語言使用方便靈活。比起其它許多高級(jí)語言簡練,因此輸入程序時(shí)工作量少。C語言用函數(shù)作為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化。利用C語言編寫高程擬合程序,只需定義一個(gè)主函數(shù)和一個(gè)求高程異常的函數(shù)即可。在擬合區(qū)域改變后,只需改變擬合參數(shù)的值即可同樣求出待求點(diǎn)的正常高,所以利用C語言求正常高十分方便。
4 流程及程序設(shè)計(jì)
為使利用MATLAB和C語言結(jié)合進(jìn)行GPS高程擬合更加清晰,現(xiàn)寫出流程圖:
為驗(yàn)證可行性,以某一測區(qū)數(shù)據(jù)為例進(jìn)行試驗(yàn)。選用六個(gè)已知點(diǎn)坐標(biāo)求解出六個(gè)擬合參數(shù),然后擬合出二次曲面。
經(jīng)過編程計(jì)算,擬合出的二次曲面為(式中單位均為m):
f(x,y)=-40.880-1.285×10-3x+6.300×10-4y+1.210×10-6x2-6.760×10-7y2+1.47×10-6xy (4)
將(4)式中的擬合參數(shù)輸入C語言代碼中,即可求出待求點(diǎn)的正常高。
5 結(jié)論
結(jié)果表明,利用MATLAB結(jié)合C語言可以更加方便地實(shí)現(xiàn)區(qū)域GPS高程二次曲面擬合,利用MATLAB求解擬合參數(shù)不需要對(duì)矩陣的乘法和求逆進(jìn)行編程。利用C語言根據(jù)擬合參數(shù)求正常高也十分簡捷,對(duì)于不同的測區(qū),只需用不同的擬合參數(shù)即可,只需更改參數(shù)值而無需更改代碼。所以利用MATLAB結(jié)合C語言進(jìn)行GPS高程曲面擬合在實(shí)際測量工作中會(huì)更加便捷,有很大的實(shí)用價(jià)值。
參考文獻(xiàn)
[1]徐紹銓,張華海.GPS測量原理及應(yīng)用[M].武漢:武漢大學(xué)出版社,2008.
[2]魏鑫.MATLAB R2014a從入門到精通[M].北京:電子工業(yè)出版社,2015.
[3]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2010.
[4]劉磊.用MATLAB實(shí)現(xiàn)GPS水準(zhǔn)高程擬合[J].城市建設(shè)理論研究,2013(14).
[5]劉誼,汪民主,汪金花.GPS高程二次曲面擬合及其程序[J].礦山測量,2004,6(2).