郭江峰,劉芳霞
(1.陜西省氣象局,西安 710014;2.陜西省氣象信息中心,西安 710014)
探測(cè)環(huán)境是為避開(kāi)各種干擾,保證氣象探測(cè)設(shè)施準(zhǔn)確獲取氣象探測(cè)信息所需的最小距離構(gòu)成的環(huán)境空間[1]。為了確保觀測(cè)數(shù)據(jù)的代表性,需對(duì)觀測(cè)場(chǎng)四周的障礙物、干擾源等可能影響氣象探測(cè)環(huán)境的因素進(jìn)行測(cè)算,判斷該障礙物是否符合要求[2]。新建、遷移觀測(cè)場(chǎng)或觀測(cè)場(chǎng)四周的障礙物發(fā)生明顯變化時(shí),應(yīng)測(cè)定障礙物的方位角和高度角,繪制地平圈障礙物遮蔽圖[3]。需要測(cè)量的數(shù)據(jù)有:觀測(cè)場(chǎng)經(jīng)緯度、海拔高度、四周障礙物方位角、仰角、距離及各方位照片等。通常這些數(shù)據(jù)需要使用專用測(cè)量?jī)x器如全站儀或經(jīng)緯儀、相機(jī)、測(cè)距儀、皮尺、指南針、GPS定位儀等,測(cè)算流程較為繁瑣和復(fù)雜。
目前大部分移動(dòng)終端如智能手機(jī)、平板電腦均內(nèi)置了GPS、陀螺儀、加速度計(jì)等傳感器[4],可利用移動(dòng)終端對(duì)障礙物參數(shù)進(jìn)行測(cè)量,開(kāi)展氣象探測(cè)環(huán)境的初步評(píng)估。本文以智能手機(jī)為例,探討移動(dòng)終端探測(cè)環(huán)境測(cè)量軟件的設(shè)計(jì)思路和實(shí)現(xiàn)。
大部分智能手機(jī)自帶位置測(cè)量功能,可使用GPS(北斗)、網(wǎng)絡(luò)、基站等方式進(jìn)行定位。其中GPS使用環(huán)繞地球的GPS衛(wèi)星提供的信息來(lái)計(jì)算當(dāng)前所處的位置[4],定位的精度高于網(wǎng)絡(luò)和基站定位方式。為了保證經(jīng)緯度測(cè)量的精確度,軟件使用GPS進(jìn)行定位,實(shí)時(shí)獲取測(cè)量點(diǎn)的經(jīng)緯度、海拔高度。
障礙物是觀測(cè)場(chǎng)以外高于觀測(cè)場(chǎng)地平面1 m以上的建筑物、構(gòu)筑物、樹(shù)木、作物等物體[1]。障礙物遮蔽仰角是從觀測(cè)場(chǎng)圍欄距障礙物最近點(diǎn)的地面向該障礙物可見(jiàn)的最高點(diǎn)看去,視線與視線在觀測(cè)場(chǎng)所在地面投影所形成的夾角[1]。按照氣象探測(cè)環(huán)境保護(hù)規(guī)范,障礙物遮擋仰角使用全站儀在觀測(cè)場(chǎng)圍欄距離障礙物最近的地面直接測(cè)量障礙物最高的仰角值。
在智能手機(jī)中,通過(guò)內(nèi)置的加速度傳感器、磁力傳感器、陀螺儀,能夠取得手機(jī)在相對(duì)于地球坐標(biāo)系繞坐標(biāo)軸的旋轉(zhuǎn)量,其中俯仰角是手機(jī)繞x軸旋轉(zhuǎn)角(用rx表示),偏航角是手機(jī)繞y軸旋轉(zhuǎn)角(用ry表示),翻滾角是手機(jī)在z軸旋轉(zhuǎn)角(用rz表示)。這三個(gè)角度用于表示設(shè)備在三維空間中的姿態(tài)(見(jiàn)圖1)。
圖1 手機(jī)姿態(tài)
在測(cè)量時(shí),手機(jī)置于觀測(cè)場(chǎng)圍欄邊O點(diǎn)(圖2),當(dāng)后置攝像頭對(duì)準(zhǔn)障礙物最高點(diǎn)A時(shí),手機(jī)在三維空間繞x、y、z坐標(biāo)軸的旋轉(zhuǎn)角度即表示A點(diǎn)相對(duì)于O點(diǎn)的仰角、方位角和手機(jī)底邊的水平度。手機(jī)繞z軸的旋轉(zhuǎn)角rz表示設(shè)備的水平度,當(dāng)rz為0°時(shí)表示手機(jī)底邊與水平面平行,手機(jī)繞y軸的旋轉(zhuǎn)角ry為障礙物方位角,根據(jù)手機(jī)繞x軸的旋轉(zhuǎn)角rx,可以求算出A點(diǎn)的仰角α及高度距離比h/d:
α=rx-90°,
h/d=tanα。
圖2 障礙物遮擋仰角測(cè)量
通過(guò)編寫(xiě)程序讀取加速度傳感器、磁力傳感器等數(shù)據(jù),計(jì)算手機(jī)繞x、y、z軸的旋轉(zhuǎn)量,即可計(jì)算出障礙物的仰角、方位角、高度距離比。
智能手機(jī)內(nèi)置有距離傳感器,但其有效工作范圍極短,并不適合障礙物距離的測(cè)量。水平距離可通過(guò)GPS測(cè)量觀測(cè)點(diǎn)O和障礙物距觀測(cè)點(diǎn)的最近點(diǎn)C的經(jīng)緯度數(shù)據(jù)進(jìn)行估算。設(shè)O點(diǎn)的經(jīng)緯度為(φ1,λ1),C點(diǎn)的經(jīng)緯度為(φ2,λ2),地球半徑為R,則OC間的距離d為:
受GPS精度限制,使用經(jīng)緯度計(jì)算距離的測(cè)量誤差較大,此方法僅適合大致估算,要取得精確數(shù)據(jù),還是需要使用皮尺或激光測(cè)距儀完成。
以Android系統(tǒng)為例,介紹氣象探測(cè)環(huán)境測(cè)量軟件的開(kāi)發(fā)。程序使用Android Studio開(kāi)發(fā)環(huán)境,JAVA語(yǔ)言開(kāi)發(fā)。
程序啟動(dòng)后,強(qiáng)制手機(jī)為橫屏狀態(tài),啟動(dòng)攝像頭進(jìn)入攝像預(yù)覽狀態(tài),開(kāi)啟GPS、加速度傳感器、陀螺儀、磁力傳感器,讀取經(jīng)緯度和手機(jī)在三維空間繞x、y、z軸旋轉(zhuǎn)角,計(jì)算障礙物仰角、方位角,手機(jī)水平度,數(shù)據(jù)和攝像頭圖像疊加顯示。圖像、仰角、方位角數(shù)據(jù)隨著手機(jī)姿態(tài)變化實(shí)時(shí)更新。主界面如圖3所示。
圖3 主程序界面
需要注意的是,移動(dòng)終端對(duì)圖像、存儲(chǔ)卡等數(shù)據(jù)的訪問(wèn)有嚴(yán)格的權(quán)限控制,在程序中需申請(qǐng)攝像頭、GPS、存儲(chǔ)卡訪問(wèn)權(quán)限。程序啟動(dòng)時(shí),首先需要檢查攝像頭、加速度傳感器、磁力傳感器、GPS、存儲(chǔ)卡的狀態(tài),防止硬件不支持或無(wú)權(quán)限引起的程序崩潰。
攝像頭數(shù)據(jù)利用了系統(tǒng)Camera類實(shí)現(xiàn)。新建一個(gè)繼承SurfaceView的類,實(shí)現(xiàn)SurfaceHolder.Callback接口,在接口成員surfaceCreated中調(diào)用Camera.open方法打開(kāi)后置攝像頭,顯示拍攝預(yù)覽畫(huà)面。在拍攝畫(huà)面上以屏幕中心為原點(diǎn)繪制坐標(biāo)軸,以便于測(cè)量時(shí)對(duì)準(zhǔn)目標(biāo)物。
程序初始化時(shí),啟動(dòng)手機(jī)GPS,設(shè)置定位精度等參數(shù),監(jiān)聽(tīng)GPS狀態(tài)并搜索定位衛(wèi)星。定位成功后讀取經(jīng)緯度、海拔高度數(shù)據(jù)傳入疊加顯示模塊,當(dāng)數(shù)據(jù)位置數(shù)據(jù)發(fā)生變化時(shí)更新顯示。
通過(guò)調(diào)用getSystemService函數(shù)取得傳感器管理對(duì)象SensorManager,對(duì)加速度傳感器、陀螺儀、磁力傳感器進(jìn)行初始化并進(jìn)行監(jiān)聽(tīng)。當(dāng)數(shù)據(jù)發(fā)生改變時(shí),調(diào)用getRotationMatrix方法,根據(jù)采集到的加速度傳感器、陀螺儀、磁力傳感器數(shù)據(jù)分量,計(jì)算手機(jī)在三維空間的姿態(tài),即繞x、y、z軸的旋轉(zhuǎn)角rx,ry,rz。根據(jù)rx計(jì)算出障礙物仰角,ry為方位角,rz為設(shè)備的水平度。
在測(cè)量過(guò)程中,對(duì)攝像頭圖像、屏幕坐標(biāo)軸、仰角、方位角、水平度、經(jīng)緯度、海拔高度進(jìn)行實(shí)時(shí)采集疊加顯示,以達(dá)到即拍即測(cè)的目的。新建一個(gè)繼承View的類,在OnDraw方法中利用Canvas類的繪圖函數(shù),在屏幕上標(biāo)注測(cè)量數(shù)據(jù),實(shí)現(xiàn)圖像數(shù)據(jù)、測(cè)量數(shù)據(jù)的疊加實(shí)時(shí)顯示。
為了方便記錄,當(dāng)用點(diǎn)擊屏幕上拍照按鈕時(shí),程序調(diào)用Camera.takePicture方法完成對(duì)障礙物的拍照,并在所拍圖像上標(biāo)注經(jīng)緯度、仰角、方位角信息,存入系統(tǒng)相冊(cè),點(diǎn)擊相冊(cè)按鈕對(duì)保存的數(shù)據(jù)進(jìn)行查看。
相對(duì)專用設(shè)備測(cè)量,移動(dòng)終端氣象探測(cè)環(huán)境測(cè)量程序具有攜帶方便、操作簡(jiǎn)單、普及率高等優(yōu)點(diǎn),程序已在部分臺(tái)站遷站初選中使用。需要注意的是,由于不同移動(dòng)終端傳感器精度標(biāo)準(zhǔn)不一,與專用儀測(cè)量存在一定誤差,僅適用于初步測(cè)量,正式探測(cè)環(huán)境評(píng)估中仍需按照規(guī)范使用經(jīng)緯儀等專用儀器測(cè)量。