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