秦超,姜良君,蔡永香
(長(zhǎng)江大學(xué)地球科學(xué)學(xué)院,湖北荊州 434023)
基于Android的移動(dòng)終端GPS測(cè)量系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)
秦超?,姜良君,蔡永香
(長(zhǎng)江大學(xué)地球科學(xué)學(xué)院,湖北荊州 434023)
本文針對(duì)手機(jī)GPS功能進(jìn)行移動(dòng)應(yīng)用開(kāi)發(fā),設(shè)計(jì)并實(shí)現(xiàn)了基于Android平臺(tái)的移動(dòng)終端GPS測(cè)量系統(tǒng)。在分析學(xué)生野外測(cè)量實(shí)習(xí)需求的基礎(chǔ)上,對(duì)系統(tǒng)進(jìn)行了功能模塊劃分;在系統(tǒng)的程序模塊詳細(xì)設(shè)計(jì)中,著重探討了數(shù)據(jù)庫(kù)的設(shè)計(jì)與地塊長(zhǎng)度/面積計(jì)算方法。測(cè)試結(jié)果表明,該系統(tǒng)已能替代GPS手持終端,滿足野外測(cè)量實(shí)習(xí)的需要。
Android;移動(dòng)終端;GPS測(cè)量
第三代移動(dòng)通訊(3G)技術(shù)為移動(dòng)終端用戶帶來(lái)了更快的數(shù)據(jù)傳輸率,也為電信網(wǎng)絡(luò)與計(jì)算機(jī)網(wǎng)絡(luò)的融合提供了支持。隨著3G網(wǎng)絡(luò)的使用,移動(dòng)終端不僅是通訊網(wǎng)絡(luò)的終端,也將成為互聯(lián)網(wǎng)的終端[1]。因此,移動(dòng)終端的應(yīng)用和需要的服務(wù)將會(huì)有很大的發(fā)展空間。Google于2007年11月5日推出了基于Linux平臺(tái)的移動(dòng)終端系統(tǒng)軟件平臺(tái)——Android,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件[2],并融合了GPS技術(shù),支持GPS的應(yīng)用開(kāi)發(fā)。
GPS的出現(xiàn)為測(cè)量技術(shù)帶來(lái)了一場(chǎng)深刻的技術(shù)革命。利用GPS的定位功能,對(duì)于任何點(diǎn)狀、線狀、面狀地物,都可以通過(guò)GPS的定位功能獲取其地理坐標(biāo)數(shù)據(jù),通過(guò)地圖投影方法,可計(jì)算出線狀地物的長(zhǎng)度,面狀地物的面積等。以前學(xué)生野外測(cè)量實(shí)習(xí)時(shí),常用的是手持GPS,這是一種專用的測(cè)量設(shè)備,需要專門購(gòu)置和攜帶。而隨著智能手機(jī)的發(fā)展和普及,學(xué)生基本上是人手一部,因此在基于Android平臺(tái)的移動(dòng)終端上開(kāi)發(fā)GPS測(cè)量系統(tǒng),可使得手機(jī)用戶隨時(shí)利用手機(jī)進(jìn)行測(cè)量定位,操作方便、便于攜帶,具有很強(qiáng)的實(shí)用性。
因此,本文利用智能手機(jī)自帶的GPS定位功能,通過(guò)獲取測(cè)量點(diǎn)的地理坐標(biāo)數(shù)據(jù),進(jìn)行點(diǎn)、線、面地物的空間位置測(cè)量,通過(guò)地圖投影方法,計(jì)算出線狀地物的長(zhǎng)度或面狀地物的面積及周長(zhǎng),并能夠?qū)⒔Y(jié)果可視化的顯示在屏幕上。
野外測(cè)量實(shí)際上包括獨(dú)立點(diǎn)位測(cè)量、線狀地物或面狀地物的連續(xù)測(cè)量,測(cè)量數(shù)據(jù)存儲(chǔ)、查看、顯示與更新,地物面積、長(zhǎng)度的計(jì)算等。因此,基于Android的GPS測(cè)量系統(tǒng)主要功能模塊可以劃分為:獨(dú)立點(diǎn)位測(cè)量、地物點(diǎn)的動(dòng)態(tài)定位測(cè)量、測(cè)量結(jié)果顯示與更新、地物面積(或長(zhǎng)度)測(cè)量。
(1)獨(dú)立點(diǎn)位測(cè)量:測(cè)量時(shí)對(duì)獨(dú)立點(diǎn)逐一定位,獲取其地理坐標(biāo)。其屬性信息,如地物名稱、所屬圖層類型、所屬圖層名稱、測(cè)量點(diǎn)位置序號(hào)等,可事先在室內(nèi)輸入系統(tǒng)。
(2)地物點(diǎn)的動(dòng)態(tài)定位測(cè)量:在線狀邊界測(cè)量時(shí)采用,通過(guò)設(shè)置定位間距(或者定位時(shí)間間隔),隨著設(shè)備的移動(dòng)每隔設(shè)定的間距(或時(shí)間)自動(dòng)采集一次定位數(shù)據(jù);而對(duì)于開(kāi)始點(diǎn)、結(jié)束點(diǎn)以及轉(zhuǎn)角點(diǎn)等這些特殊的點(diǎn)位,可通過(guò)點(diǎn)擊特殊點(diǎn)定位按鈕定位獲?。挥脩魡螕敉V苟ㄎ话粹o后,定位過(guò)程結(jié)束。其相關(guān)屬性信息,如地物名稱、所屬圖層類型、所屬圖層名稱等可手工輸入系統(tǒng)。
(3)測(cè)量結(jié)果顯示與更新:測(cè)量結(jié)果存入數(shù)據(jù)庫(kù)后,可按一定條件查詢查看,結(jié)果以列表方式,或圖形可視化的方式顯示,列表顯示順序與測(cè)量數(shù)據(jù)的創(chuàng)建順序一致;可以向數(shù)據(jù)庫(kù)中添加定位數(shù)據(jù)記錄或者從數(shù)據(jù)庫(kù)中刪除定位數(shù)據(jù)記錄,并給出更新提示。
(4)地物長(zhǎng)度(或面積)測(cè)量:通過(guò)地圖投影方法,將地物經(jīng)緯度坐標(biāo)投影為平面坐標(biāo),從而計(jì)算出線狀地物的長(zhǎng)度或者面狀地物的面積及周長(zhǎng),并將結(jié)果以對(duì)話框的形式反饋給用戶。
整個(gè)系統(tǒng)的功能是通過(guò)系統(tǒng)主模塊、地物信息輸入模塊、獨(dú)立點(diǎn)定位模塊、動(dòng)態(tài)定位模塊、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)查看與更新模塊、面積/長(zhǎng)度測(cè)量模塊以及圖形顯示等程序模塊來(lái)實(shí)現(xiàn)(如圖1所示)。
(1)系統(tǒng)主模塊是整個(gè)系統(tǒng)的入口。它實(shí)現(xiàn)的功能包括顯示程序主界面、打開(kāi)/創(chuàng)建數(shù)據(jù)庫(kù)、查看所有圖層、刪除數(shù)據(jù)庫(kù),查看幫助信息,該模塊基于類Welcome來(lái)實(shí)現(xiàn)。
(2)地物信息輸入模塊負(fù)責(zé)地物屬性信息的輸入,同時(shí)打開(kāi)獨(dú)立點(diǎn)定位模塊、動(dòng)態(tài)定位模塊和增加測(cè)量點(diǎn)模塊,該模塊基于類InputObject來(lái)實(shí)現(xiàn)。
圖1 系統(tǒng)程序模塊圖
(3)系統(tǒng)設(shè)計(jì)了一個(gè)數(shù)據(jù)存儲(chǔ)模塊來(lái)管理定位數(shù)據(jù),它負(fù)責(zé)創(chuàng)建和打開(kāi)存放定位數(shù)據(jù)的存儲(chǔ)系統(tǒng),并向其他模塊提供數(shù)據(jù)訪問(wèn)接口。該模塊基于類DataStorage來(lái)實(shí)現(xiàn)。
(4)獨(dú)立點(diǎn)定位模塊,獲取獨(dú)立點(diǎn)的GPS絕對(duì)定位數(shù)據(jù),從中提取經(jīng)、緯度,并將定位數(shù)據(jù)保存至數(shù)據(jù)庫(kù)。該模塊基于類StLocate來(lái)實(shí)現(xiàn)。
(5)動(dòng)態(tài)定位模塊,完成地塊邊界的連續(xù)測(cè)量和特殊點(diǎn)位的定點(diǎn)測(cè)量。用戶可以選擇動(dòng)態(tài)顯示測(cè)量點(diǎn)經(jīng)緯度或動(dòng)態(tài)顯示地物地理位置來(lái)進(jìn)行動(dòng)態(tài)定位。定位開(kāi)始后,當(dāng)GPS設(shè)備每移動(dòng)用戶所設(shè)的距離(或時(shí)間),該模塊就會(huì)自動(dòng)獲取所在點(diǎn)的經(jīng)緯度并將其加入到對(duì)應(yīng)地物;同時(shí),用戶可根據(jù)需要在特殊點(diǎn)位處點(diǎn)擊按鈕獲取其地理數(shù)據(jù);最后將該地物保存至數(shù)據(jù)庫(kù)。動(dòng)態(tài)定位模塊基于類DyLocate或DyShowMap來(lái)實(shí)現(xiàn)。
(6)數(shù)據(jù)查看模塊,根據(jù)圖層名稱、地物名稱等在數(shù)據(jù)庫(kù)中查詢記錄,并以順序列表的方式顯示給用戶。該模塊基于類ListLayer、ListObject和ListPoint來(lái)實(shí)現(xiàn)。
(7)圖形顯示模塊,對(duì)查看的地物以可視化的方式顯示其地理分布特征。該模塊基于類ShowMap來(lái)實(shí)現(xiàn)。
(8)面積/長(zhǎng)度測(cè)量模塊,對(duì)查看的地物計(jì)算長(zhǎng)度和面積。該模塊基于類ListObject實(shí)現(xiàn)。
(9)數(shù)據(jù)更新模塊,對(duì)查看地物進(jìn)行數(shù)據(jù)添加或者某些數(shù)據(jù)的刪除。該模塊是由類AddPoint及其他部分來(lái)實(shí)現(xiàn)的。
整個(gè)系統(tǒng)程序模塊的詳細(xì)設(shè)計(jì)中,數(shù)據(jù)庫(kù)的設(shè)計(jì)和長(zhǎng)度/面積計(jì)算方法設(shè)計(jì)是最關(guān)鍵的部分,下面對(duì)這兩個(gè)部分進(jìn)行詳細(xì)說(shuō)明。
3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)
本系統(tǒng)使用的是Android平臺(tái)集成的嵌入式關(guān)系型數(shù)據(jù)庫(kù)——SQLite數(shù)據(jù)庫(kù),這是一款輕型的數(shù)據(jù)庫(kù),其設(shè)計(jì)目標(biāo)是嵌入式應(yīng)用,目前已在很多嵌入式產(chǎn)品中使用。它占用資源非常的低,在嵌入式設(shè)備中,只需要幾百K的內(nèi)存,支持Windows/Linux/Unix等主流的操作系統(tǒng),同時(shí)能夠與很多程序語(yǔ)言相結(jié)合。和Mysql、PostgreSQL這兩款世界著名的開(kāi)源數(shù)據(jù)庫(kù)管理系統(tǒng)相比,它的處理速度比他們都快[3]。
在本數(shù)據(jù)庫(kù)中創(chuàng)建了三個(gè)表Layer、Object和Point,分別用來(lái)存儲(chǔ)圖層記錄、地物記錄和測(cè)量點(diǎn)記錄。表Layer與表Object通過(guò)字段layer_name連接,一個(gè)圖層由一個(gè)或多個(gè)對(duì)應(yīng)類型的地物組成;表Object與表Point通過(guò)字段object_name連接,一個(gè)地物由一個(gè)或多個(gè)測(cè)量點(diǎn)組成。他們的結(jié)構(gòu)分別如表1、表2、表3所示(表中粗體標(biāo)識(shí)字段為該表的主鍵)。
表Layer的結(jié)構(gòu) 表1
表Object的結(jié)構(gòu) 表2
表Point的結(jié)構(gòu) 表3
如圖2所示,本系統(tǒng)抽象出地物類MyObject,據(jù)此派生出點(diǎn)狀地物類PntObject、線狀地物類LObject和面狀地物類AObject。MyPoint是由經(jīng)緯度及其他屬性組成的類,三種地物均由一個(gè)或多個(gè)MyPoint對(duì)象組成。數(shù)據(jù)庫(kù)方法只須將抽象地物類對(duì)象的引用作為參數(shù),便可對(duì)不同地物進(jìn)行統(tǒng)一操作,這樣減少了數(shù)據(jù)庫(kù)接口方法中參數(shù)的個(gè)數(shù),其他模塊調(diào)用數(shù)據(jù)庫(kù)方法就變得非常簡(jiǎn)單,在一定程度上屏蔽了數(shù)據(jù)庫(kù)的復(fù)雜性,也便于日后維護(hù)。抽象地物類還可以用于其他模塊。
圖2 數(shù)據(jù)操作結(jié)構(gòu)圖
本數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)在于改進(jìn)了數(shù)據(jù)存儲(chǔ)方式,數(shù)據(jù)庫(kù)不直接操作測(cè)量點(diǎn),只對(duì)完整的地物進(jìn)行操作,避免了對(duì)數(shù)據(jù)的頻繁讀寫,也在一定程度上保證了數(shù)據(jù)的完整性。
3.2 長(zhǎng)度/面積測(cè)量實(shí)現(xiàn)原理
(1)利用地圖投影,球面坐標(biāo)向平面坐標(biāo)轉(zhuǎn)化
通過(guò)測(cè)量,獲得的地物地理數(shù)據(jù),是球面坐標(biāo)下的經(jīng)緯度值,如果要計(jì)算其面積或長(zhǎng)度,必須在平面坐標(biāo)下進(jìn)行。因此,首先要對(duì)測(cè)量點(diǎn)的坐標(biāo)進(jìn)行投影轉(zhuǎn)換。
地圖投影采用高斯-克呂格投影,為了減小誤差,將投影的中央經(jīng)線放置在測(cè)量區(qū)塊的中間位置,即計(jì)算出該區(qū)塊所有測(cè)量點(diǎn)經(jīng)度的平均值,作為投影的縱坐標(biāo),赤道投影為橫坐標(biāo)構(gòu)建高斯平面。然后重新遍歷一次該地物的所有測(cè)量點(diǎn),利用高斯投影公式將它們的經(jīng)緯度轉(zhuǎn)化為平面上的坐標(biāo)[4]。高斯-克呂格正射投影優(yōu)化公式如下[5]:
其中,B為測(cè)量點(diǎn)的緯度,L為測(cè)量點(diǎn)的經(jīng)度距中央經(jīng)線的經(jīng)差,單位均為弧度。
(2)長(zhǎng)度/面積計(jì)算
在已知折線各拐點(diǎn)坐標(biāo)的情況下,可用如下公式快速的求出折線的長(zhǎng)度
地塊面積的計(jì)算采用梯形面積累加法。其基本思想是在平面直角坐標(biāo)系中,按多邊形頂點(diǎn)順序依次求出多邊形所有邊與X軸(或Y軸)組成的梯形面積,然后求其代數(shù)和,這個(gè)代數(shù)和即為多邊形面積。例如,對(duì)五邊形(如圖3所示),其面積計(jì)算公式為:
圖3 五邊形(阮志成,1978)
同理,對(duì)于任意多邊形,假設(shè)有n個(gè)頂點(diǎn)(Xi,Yi),則該多邊形的面積求算公式為:
該公式適合各類不規(guī)則多邊形的面積計(jì)算。計(jì)算出的多邊形面積即為該地塊的面積。
本系統(tǒng)是在Java Development Kit(JDK)v6.0,Android SDK 1.0r2以上,在Eclipse集成開(kāi)發(fā)環(huán)境中開(kāi)發(fā)實(shí)現(xiàn)的。本系統(tǒng)的功能已經(jīng)基本實(shí)現(xiàn),并初步通過(guò)了測(cè)試。圖4是顯示長(zhǎng)江大學(xué)14教前草坪面積及長(zhǎng)度的界面,圖5是足球場(chǎng)地理位置分布圖。
圖4 草坪面積及長(zhǎng)度顯示結(jié)果
圖5 足球場(chǎng)地理位置分布
在系統(tǒng)測(cè)試過(guò)程中,我們與手持GPS進(jìn)行了測(cè)量對(duì)比。對(duì)同一區(qū)塊,同時(shí)采用手持GPS和Android手機(jī)進(jìn)行測(cè)量,發(fā)現(xiàn)除了手持GPS尋星速度較手機(jī)稍快以外,定位精度、長(zhǎng)度/面積測(cè)量?jī)烧叽篌w一致。手持GPS尋星速度較手機(jī)稍快,可能是由于其內(nèi)置較大功率天線的原因。
本文針對(duì)手機(jī)上的GPS功能進(jìn)行移動(dòng)應(yīng)用開(kāi)發(fā),設(shè)計(jì)并實(shí)現(xiàn)了基于Android平臺(tái)的移動(dòng)終端GPS測(cè)量系統(tǒng)。在分析野外測(cè)量實(shí)習(xí)需求的基礎(chǔ)上,對(duì)系統(tǒng)的功能模塊進(jìn)行了劃分;在系統(tǒng)的程序模塊詳細(xì)設(shè)計(jì)中,著重討論了數(shù)據(jù)庫(kù)的設(shè)計(jì)與地塊長(zhǎng)度/面積計(jì)算方法。最后對(duì)本系統(tǒng)與手持GPS進(jìn)行了測(cè)量對(duì)比,測(cè)試結(jié)果表明,該系統(tǒng)已能替代GPS手持終端,完全能滿足野外測(cè)量實(shí)習(xí)的需要,在手機(jī)普及的情況下,野外測(cè)量無(wú)需再專門購(gòu)置設(shè)備,使用成本大大降低,且攜帶方便,可隨時(shí)進(jìn)行野外作業(yè)。
本系統(tǒng)下一步計(jì)劃要擴(kuò)展的功能是:
(1)測(cè)量數(shù)據(jù)輸出并能上載添加到GIS系統(tǒng)中更新已有的GIS數(shù)據(jù);
(2)將預(yù)編輯好的文本文件形式的屬性數(shù)據(jù)讀入程序,實(shí)現(xiàn)測(cè)量地物屬性數(shù)據(jù)的批量錄入。
[1] 王紫瑤,南俊杰,段紫輝等.SOA核心技術(shù)及應(yīng)用[M].北京:電子工業(yè)出版社,2008:1~15
[2] http://baike.baidu.com/view/1241829.htm?fr=ala0_1_1
[3] http://baike.baidu.com/view/19310.htm
[4] 公磊.基于Android的GPS測(cè)量系統(tǒng)開(kāi)發(fā)[D].南昌大學(xué)碩士學(xué)位論文,2008
[5] 沈永年,孔慶喻.1980西安坐標(biāo)系快速高斯投影計(jì)算公[J].冶金測(cè)繪1994,3(2):38
[6] 阮志成.解析法計(jì)算多邊形面積的改進(jìn)[J].測(cè)繪通報(bào),1978(06):45
The Design and Development of GPS Survey System Base on Android Platform
Qin Chao,Jiang LiangJun,Cai YongXiang
(School of Geoscience,Yangtze University,Jingzhou 434023,China)
In this paper,the mobile terminal GPS survey system based on android platform is designed and realized. The system functional modules are designed according to the analysis of student demands in field surveying practice,it focuses on the design of the database and the method of block length/area calculation in the detailed design of system program modules.The result shows that the system has been able to substitute for GPS handset,and it can meet the needs of field surveying practice.
Android;Mobile Terminal;GPS Survey
1672-8262(2011)01-64-04
P228.1
A
2010—07—12
秦超(1988—),男,長(zhǎng)江大學(xué)地球科學(xué)學(xué)院在校學(xué)生。
長(zhǎng)江大學(xué)楚天學(xué)者項(xiàng)目資助(201007)