雷順文 雷順明
(廣東興粵工程勘測有限公司, 廣東 韶關(guān) 512023)
目前,高程測量方式主要有水準(zhǔn)測量[1]、三角高程測量[2]、合成干涉雷達(dá)測高[3]、氣壓高程測量[4],全球?qū)Ш叫l(wèi)星系統(tǒng)(global navigation satellite system,GNSS)高程測量[5]、衛(wèi)星測高[6]等。盡管地面高程、高差測量方法較多,但用戶一般都需借助專業(yè)設(shè)備,且自身具備一定的專業(yè)理論及儀器操作和數(shù)據(jù)處理能力。此外,基于GNSS技術(shù)的手機(jī)應(yīng)用程序(application program,App)單點(diǎn)定位精度差,其高程測量精度為米級,無法滿足數(shù)字國土、數(shù)字城市對樓高、塔高、山高等物體的測量精度需求。公元前1世紀(jì)出版的我國古代算經(jīng)之一《周髀》,闡述了“陳子測日”的測高原理與測量方法,由于髀高、影長和兩點(diǎn)測距等測量值受環(huán)境和測量手段等因素限制,加之未考慮地球曲率對測高的影響[7-9],并未在實(shí)踐中被推廣應(yīng)用。
因此,本文首先基于“陳子測日”幾何原理,分別推導(dǎo)出利用高度角代替髀高及其影長的平面測高數(shù)學(xué)模型和顧及地球曲率影響的曲面測高數(shù)學(xué)模型;然后,介紹了微信小程序開發(fā)平臺,和“陳子測日”測高微信小程序的功能、程序設(shè)計(jì)流程等;最后,通過實(shí)驗(yàn)證明了該手機(jī)微信小程序,能快速獲得測點(diǎn)至手機(jī)的高差和水平距離。
古代數(shù)學(xué)家劉徽將“陳子測日”的方法稱為“重差術(shù)”[9],并在其《重差》一卷,把“陳子測日”的方法運(yùn)用在了大地測量之上。該方法采用測量髀的影長,需日光照射,且測站間需同步進(jìn)行觀測,測量方式制約因素較多、測量精度差。考慮到當(dāng)前主流智能手機(jī)一般內(nèi)嵌微機(jī)電系統(tǒng)(micro electro-mechanical system,MEMS)傾角傳感器[10],因此,本節(jié)將推導(dǎo)高度角代替髀高及其影長的測高模型。
如圖1所示,假設(shè)以點(diǎn)C為坐標(biāo)原點(diǎn),沿線GC為X軸,垂直于GC水平向右為Y軸,建立平面坐標(biāo)系。
圖1 “陳子測日”幾何原理
D點(diǎn)為目標(biāo)點(diǎn),其垂直高度為x+h;h為桿高或測站儀高;G點(diǎn)為目標(biāo)點(diǎn)D在測站平面上的投影;E點(diǎn)和F點(diǎn)為同一水平面上的兩測站點(diǎn);d為站間距離;y和q分別為測站F和測站E至目標(biāo)D的水平距離;α和β分別表示相應(yīng)測站至目標(biāo)D點(diǎn)的仰角。由圖1得到
整理得
(3)
又y=xctgβ,故
(4)
在測站E和測站F分別測得目標(biāo)D的高度角α、β,和站間平距d,根據(jù)式(3)和式(4)即可分別算出目標(biāo)點(diǎn)D至測站F的高差x和水平距離y。
如圖2所示,以點(diǎn)O為地心,R為地球曲率半徑,則
(5)
式中,hCE為地球曲率對高差的影響[11-12],表示為
(6)
圖2 顧及地球曲率的測高幾何模型
當(dāng)A、C兩點(diǎn)間的水平距離S小于10 km時(shí),S對應(yīng)的圓心角約5′,故可認(rèn)為AC近似垂直于DE,因此,△ACD、△BCD可視為直角三角形,則式(5)中的xDC為
(7)
將式(6)和式(7)代入式(5),即
(8)
將式(4)代入式(8)得
(9)
本文使用微信小程序[13]開發(fā)平臺進(jìn)行開發(fā),小程序是基于模型-視圖-控制器(model-view-controller,MVC)設(shè)計(jì)模式和網(wǎng)絡(luò)設(shè)計(jì)規(guī)范的一種全新的連接用戶與服務(wù)的方式,使用前端超文本標(biāo)記語言(hyper text markup language, HTML)、層疊樣式表(cascading style sheets,CSS)語言以及爪哇描述語言(JavaScript,JS)搭建的編程環(huán)境。
小程序開發(fā)部分采用微信小程序開發(fā)框架(MINA)構(gòu)建。MINA框架支持整合微信客戶端提供的文件系統(tǒng)、網(wǎng)絡(luò)通信、任務(wù)管理、數(shù)據(jù)安全等基礎(chǔ)功能,同時(shí),對上層提供一整套JS應(yīng)用程序編程接口(application programming interface,API),方便開發(fā)者迅速構(gòu)建應(yīng)用小程序[14]。
本微信小程序的主要功能是進(jìn)行目標(biāo)高差和平距測算。
通過修改項(xiàng)目中默認(rèn)創(chuàng)建的app.js、app.json、app.wxss三個(gè)文件進(jìn)行定義,搭建圖形用戶界面(graphical user interface,GUI)和功能控件,調(diào)用手機(jī)自帶MEMS傾角傳感器、陀螺儀測量的各向角度等信息,計(jì)算測點(diǎn)高差。其具體GUI如圖3所示。
圖3 小程序操作界面
如圖3所示,通過使用手機(jī)自帶攝像頭進(jìn)行目標(biāo)高度角測量,以鏡頭中心十字光圈為基準(zhǔn)點(diǎn)進(jìn)行瞄準(zhǔn)工作。屏幕下方顯示方向、方向值、傾角及點(diǎn)位經(jīng)緯度等信息。【啟動】按鈕的響應(yīng)事件為調(diào)用內(nèi)部函數(shù),對方向值等信息進(jìn)行實(shí)時(shí)采集、更新和顯示;【獲取數(shù)據(jù)】則為開始進(jìn)行測高的控制指令,獲取瞬時(shí)目標(biāo)高度角;【記錄為α1】和【記錄為α2】分別記錄操作者在兩測站上測得目標(biāo)的高度角。如數(shù)據(jù)采集成功,系統(tǒng)將提示“采集數(shù)據(jù)成功”;通過點(diǎn)擊【停止】按鈕,停止測量。
通過鋼尺量距等方法獲取站間距離,并通過【輸入距離】文本框?qū)懭霐?shù)據(jù);最后通過【計(jì)算高差】按鈕調(diào)用高差計(jì)算模塊,獲取相應(yīng)地物高差和平距。其App具體技術(shù)流程如圖4所示。
圖4 “陳子測日”測高技術(shù)流程圖
本次實(shí)驗(yàn)選址于圖書館廣場,采用徠卡TS06高精度全站儀的免棱鏡測高方式,對各測站至目標(biāo)點(diǎn)的高差和平距進(jìn)行測量,并作為真值;“陳子測日”微信小程序運(yùn)行平臺為華為P10plus,內(nèi)置Android 7.0操作系統(tǒng)。
如圖5所示,在1,2,3,…,9共9個(gè)測站上,分別使用徠卡TS06全站儀和手機(jī)微信測高小程序?qū)點(diǎn)進(jìn)行測量。各測站位置事先由鋼尺測定布設(shè),相鄰兩測站站間相距約為5 m。全站儀觀測各測站至A點(diǎn)的平距、高差及垂直角;每一測站上在保持與全站儀相同儀高條件下,“陳子測日”微信測高小程序依次采集各測站至A點(diǎn)的高度角,且每站自動觀測記錄100次高度角值,觀測時(shí)長約3 s。各測站全站儀儀高互差控制在2 cm以內(nèi)。
圖5 實(shí)驗(yàn)示意圖
徠卡TS06全站儀豎盤指標(biāo)差檢定值為+1″;華為P10Plus手機(jī)內(nèi)置MEMS傾角傳感器傾角系統(tǒng)誤差檢定值為-48′58″。對所有手機(jī)高度角觀測數(shù)據(jù)進(jìn)行系統(tǒng)誤差改正。
取全站儀相鄰站間觀測高差的平均值作為此測段(如1,2測站)目標(biāo)高真值?!瓣愖訙y日”手機(jī)微信測高小程序每站自動采集了目標(biāo)A的100次高度角值,相鄰站間按觀測值記錄順序,依次組合為100組觀測數(shù)據(jù)對,利用式(4)分別計(jì)算目標(biāo)高差,然后采用內(nèi)符合和外符合方式[15]進(jìn)行精度分析與評定。
3.2.1內(nèi)符合
(a)直方圖
在每測站上用本微信小程序進(jìn)行100次高度角測量,用時(shí)較短,人眼瞄準(zhǔn)目標(biāo)上下晃動次數(shù)少,因此,殘差圖大多呈現(xiàn)為一次下降或上升的曲線;同時(shí),由直方圖可知?dú)埐畛逝既徽`差特性。此外,單歷元測量獲取的測段3~4高差內(nèi)符合中誤差為0.636 m。
3.2.2外符合
相較于內(nèi)符合,外符合殘差直方圖依然表現(xiàn)為以偶然誤差為主,兩者統(tǒng)計(jì)特性一致,但殘差圖對比可知,算術(shù)平均值與全站儀觀測高差均值存在約0.75 m的系統(tǒng)誤差。此外,單歷元測量獲取的測段3~4高差外符合中誤差為1.525 m。
(a)直方圖
通過測段單次高度角觀測值計(jì)算目標(biāo)高差的精度分析,可知其內(nèi)符合和外符合精度均較差??紤]到手機(jī)內(nèi)置MEMS傾角傳感器和陀螺儀的數(shù)據(jù)輸出頻率高,每秒鐘可快速輸出幾十甚至上百赫茲的角度傾斜感應(yīng)值,以及在同精度觀測條件下,通過增加觀測值次數(shù),可提高觀測精度。因此,采用各測點(diǎn)100次高度角觀測值的平均值來計(jì)算各測段高差,并分別與全站儀觀測測段高差的平均值對比。由表1可知,“陳子測日”微信小程序各測段測量高差、平距與全站儀觀測值之差絕對值均小于0.2 m,且殘差都呈現(xiàn)偶然誤差特性,其中誤差分別為0.152 m和0.149 m。因此,“陳子測日”微信小程序能夠在短時(shí)間內(nèi)通過獲取大量觀測數(shù)據(jù),提高手機(jī)傾角觀測精度,進(jìn)而提高高差和平距的測量精度。
表1 “陳子測日”小程序測量結(jié)果對比 單位:m
本文使用微信小程序開發(fā)平臺,基于“陳子測日”測高原理,實(shí)現(xiàn)了JS自主開發(fā)手機(jī)測高測量小程序。實(shí)踐操作中,要注意選擇測段平整的區(qū)域,且站間相距不宜過短。相比“陳子測日”測髀高和影長方式,本算法無須兩測站同步觀測,也無須陽光直射。實(shí)驗(yàn)測試結(jié)果表明,普通手機(jī)用戶在無須具備測繪專業(yè)理論知識和測量儀器設(shè)備操作技能的情況下,通過簡單的手機(jī)操作,即可獲得較高精度的高差和平距觀測值,作業(yè)效率高,操作便捷,具有一定的實(shí)踐應(yīng)用價(jià)值。