査金超,王直杰
(1.東華大學信息學院,上海,200000;2.東華大學信息學院,上海,200000)
基于GPS及LBS的移動終端定位研究
査金超1,王直杰2
(1.東華大學信息學院,上海,200000;2.東華大學信息學院,上海,200000)
本文主要介紹了一種可移動終端的定位方案,如航行的船只,移動的車輛。方案主要基于GPS和LBS理論,并以硬件終端為載體,android系統(tǒng)為平臺。分析了兩種定位方法的原理及定位方案的設計流程。最終實現(xiàn)對可移動終端的定位和監(jiān)控。
GPS;LBS;移動定位
近年來,基于移動定位技術的定位服務發(fā)展迅速,涉及商務、醫(yī)療、旅游以及生活的其他各個方面。專門的移動定位系統(tǒng)還可以用來對人員、物體和事件進行定位,以滿足移動辦公、移動執(zhí)法、運輸物流和旅游導航等領域的定位需求。它主要通過獲取移動終端用戶的位置坐標信息實現(xiàn)定位服務,其中包含了移動通信和定位導航等多種技術。本文主要介紹的是基于android平臺下兩種使用范圍最廣和使用頻率最高的定位技術,一種是基于GPS的定位技術,一種是基于移動運營網(wǎng)絡的LBS基站定位技術。
圖1 GPS定位的幾何關系
GPS即Global Positioning System,全球定位系統(tǒng)的簡稱。主要利用的是全球覆蓋率高達98%的24顆定位衛(wèi)星,能夠為全球用戶提供低成本、高精度的三維位置、移動速度和導航信息。它主要分為兩種,一種是指觀測點相對于地球坐標系地球質心的位置,進而又稱單點定位;另一種則是相對于地球表面的參考點的位置。下文中主要使用的是絕對定位,在這種定位過程中,待測目標處于運動的被稱為動態(tài)定位,處于靜止狀態(tài)的則稱為靜態(tài)定位。GPS定位是通過觀測GPS衛(wèi)星而獲得特定的觀測量來實現(xiàn)的,這些觀測量包含碼相位、載波相位和積分多普勒計數(shù)。下文中主要介紹一種在實際操作中經(jīng)常使用的基于碼相位觀測得出的偽距法以及何為碼相位觀測量。這種定位方法主要由被測對象在某一時刻獲取距離四顆及以上衛(wèi)星的值和他們的位置,然后運用交匯的原理,求得被測對象位置的坐標值。它雖然定位精度不高,但定位速度快,且無多值性問題,這得益于這種方法的運算量比較小,運算邏輯簡單,具體的計算流程如下圖1所示:
在上式中,如果衛(wèi)星和接收機的時鐘是同步的,那么求出來的結果就是基站到衛(wèi)星的實際距離。為偽距,為真正幾何距離,為接收機和衛(wèi)星之間鐘差?,F(xiàn)實中,我們一般可以從衛(wèi)星發(fā)播的電文中獲得任一衛(wèi)星的時鐘差,通過改正,基本可以保證衛(wèi)星之間保持在20ns內(nèi)的同步時間差。如果忽略衛(wèi)星之間鐘差影響,并考慮電離層、對流層折射影響,可得:
式中(Xs,Ys,Zs)可根據(jù)衛(wèi)星導航電文求得,因此式中只有接收機坐標是未知量。當然,電離層改正數(shù)和對流層改正數(shù)可以按照一定的模型求解出,所以如果將接收機鐘差也作為未知數(shù),那么共有四個未知數(shù)。因此,接收機必須同時至少測定四顆衛(wèi)星的距離才能解算出接收機的三維坐標值。一般情況下測碼偽距觀測方程如下:
式中j為衛(wèi)星數(shù),j=1,2,3…。
LBS(Location Based Service),基于位置的服務。一種通過電信、移動運營商的無線電通訊網(wǎng)絡(如GSM網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動終端用戶的位置信息(地理坐標,或大地坐標)的定位技術。主要包括GSM三點定位原理和CDMA四點定位原理。
三點法定位原理如下圖2所示,選取GSMOA、OB、OC;根據(jù)移動基站與監(jiān)測點的距離計算公式:
L=TA×500+RxL×M+TxPwr×N和地球表面任意兩點的距離公式:
得:
OA=TA(A)1×500+RxL(A)×M+TxPwr(A)×N;
OB=TA(B)1×500+RxL(B)×M+TxPwr(B)×N;
OA=TA(C)1×500+RxL(C)×M+TxPwr(C)×N;
AB=L1(A,B);AC=L1(A,C);BC=L1(C,B);
式中,TA為時間前置量,范圍為0-63;RxL是信號接收強度,單位為dB m;TxPwr顯示的是通話中手機的功率發(fā)射強度,顯示范圍為0-19;M為射頻信號衰減系數(shù);N為發(fā)射功率衰減系數(shù);K為地球半徑,(A1,A2),(B1,B2)分別為A、B兩點的經(jīng)緯度。
四點定位不同于GSM三點定位,它是以CDMA基站為圓心,在近似認為以基站為圓心的圓線上的信號強度相等的假設下,取兩組共四個觀測點,如圖3所示。對于平面上的兩條相交線 ,我們通??梢酝ㄟ^求解線性方程的方法來得到交點的坐標值。在實際運用過程中,雖然待求點處于一個球面上,但考慮到監(jiān)測面積相對于地球來說比例很小,我們可以近似地把它看作XY平面,將經(jīng)緯度信息看成是平面上的坐標值,這樣就可以通過求解線性方程解得監(jiān)測點的坐標值,下面給出求解結果:
圖2 三點定位示意圖
圖 3 四點定位示意圖
Android位置服務
LocationManager和LocationProvider是Android平臺下的兩個接口類,它們主要用來支持定位服務。前者用來獲取當前的位置,后者則是提供定位功能的組件集合。接下來將詳細介紹android平臺下獲取移動端位置信息的具體設計流程。
首先,我們需要通過調(diào)用android.app.
Activity.getSystemService()函數(shù)來獲取
LocationManager對象,獲取到以后還需要指定對象的定位方法,然后才能調(diào)用
LocationManager.getLastKnowLocation()方法
獲取當前位置。所謂的定位方法就是我們上文提到的GPS定位和網(wǎng)絡定位(主要利用基站或者WIFI定位)。前者需要終端開放
android.permissions.ACCESS_FINE_LOCATION權限,后者需要
android.permission.ACCESS_COARSE_LOCATION用戶權限。其中需要注意的是使用GPS定位和網(wǎng)絡定位的LocationManager類的靜態(tài)常量不相同,前者使用的LocationManager類的靜態(tài)常量為:GPS_PROVIDER,后者使用的LocationManager類的靜態(tài)常量為:
NETWORK_PROVIDER,這兩個靜態(tài)常量在獲取當前位置時要用到。下面以使用GPS定位為例,獲取移動終端的具體代碼如下:
String provider = LocationManager.GPS_PROVIDER;
Location location = locationManager.getLastKnownLoc ation(provider);然后通過調(diào)用Location中的getLatitude()和getLonggitude()方法可以分別獲取位置信息
中的緯度和經(jīng)度,代碼如下:
doublelat = location.getLatitude();
doublelng = location.getLongitude();
在很多提供定位服務的應用程序中,不僅需要獲取當前的位置信息,還需要監(jiān)視位置的變化,在位置改變時調(diào)用特定的處理方法 ,其中LocationManager提供了一種便捷、高效的位置監(jiān)視方法requestLocationUpdates(),可以根據(jù)位置的距離變化和時間間隔設定,產(chǎn)生位置改變事件的條件,這樣可以避免因微小的距離變化而產(chǎn)生大量的位置改變事件 ,
LocationManager中設定監(jiān)聽位置變化的代碼如下:
locationManager.requestLocationUpdates(provider,200 0,10,locationListener);
在上面的函數(shù)表達式中,共有四個參數(shù)。它們都有各自的意義,provider代表的是定位方法,可以選擇GPS定位或者網(wǎng)絡定位;后面的兩個數(shù)字分別表示的是時間和距離,前者指的是產(chǎn)生改變時間所需的時間間隔,后者表示產(chǎn)生的距離條件;最后一個參數(shù)代表的是回調(diào)函數(shù),相當于LocationListener監(jiān)聽器,主要用來處理位置改變事件??偟膩碚f,那一行代碼將產(chǎn)生位置改變事件的條件設定為距離改變10米,時間間隔為2秒。
接下來對上面實現(xiàn)LocationListener的代碼下的四個方法進行簡單介紹:
onLocationChanged()這個方法在位置改變時被調(diào)用,onProviderDisabled()這個方法在用戶禁用具有定位功能的硬件時被調(diào)用,onProviderEnabled()這個方法在用戶啟用具有定位功能的硬件時被調(diào)用,onStatusChanged()這個方法在定位功能硬件狀態(tài)改變時被調(diào)用,例如,從不可獲取位置信息狀態(tài)到可以獲取位置信息的狀態(tài),反之亦然 。最后還需要在
AndroidManifest.xml這個文件中加入下面這行代碼,表示給用戶添加許可權限,這樣就能夠調(diào)用GPS定位功能了:
<uses-permission android:name="android.permission. ACCESS_FINE_LOCATION">
</uses-permission>
這樣即完成了代碼,就可以顯示當前位置信息,并能夠監(jiān)視設備的位置變化。
上文中介紹了在android平臺下使用GPS定位和網(wǎng)絡定位兩種方法監(jiān)控可動終端位置信息的技術方案。在一定誤差范圍內(nèi),不僅可以得到監(jiān)控對象的位置,還可以求解對象的動軌跡,大大提高了監(jiān)控調(diào)度作業(yè)的工作效率。但方案也存在不足,比如在使用網(wǎng)絡定位時僅使用了基于基站的定位方法,理論上還可以使用基于WIFI、IP的混合定位方案,可以大大提高定位的精度。后續(xù)也可以和GIS電子地圖系統(tǒng)集成開發(fā)成一套完整的電子監(jiān)控系統(tǒng),這樣就可以將理論知識運用于實踐,大大提高了本套方案的實用性。
[1] 黃瀟婷,柴彥威.面向LBS使用者的時間地理學研究評價.地理科學進展,2009,28(6):962-969.
[2] 施滸立,呂子平,鄧中亮等.由通信廣播衛(wèi)星信號輔助的地面移動通信網(wǎng)定位方法:中國,201010143009.2[P].2011-10-12.
[3] 吳偉:GSM/UMTS移動位置業(yè)務的技術與實現(xiàn),http:// www.c114.net/zhanhui/2003/3G031030/paper32. html.
[4] 范平志等.蜂窩網(wǎng)無線定位.北京:電子工業(yè)出版社,2002.
[5] Elliott D.Kaplan, Understanding GPS Principles and Application, 北京:電子工業(yè)出版社,2002.
査金超(1991-),男,碩士,研究生,主要研究方向:智能網(wǎng)絡優(yōu)化.
王直杰(1969-),男,博士,教授,主要研究方向: 神經(jīng)網(wǎng)絡理論與應用,復雜網(wǎng)絡系統(tǒng)建模與仿真,智能計算與智能系統(tǒng),數(shù)據(jù)挖掘技術,數(shù)字化紡織服裝技術.
Position design of mobile terminal based on GPS and LBS
Zha Jinchao1,Wang Zhijie2
(1.Donghua University,Shanghai,200000,China;2.Donghua University,Shanghai,200000)
This paper mainly introduces a kind of mobile terminal positioning design,such as the sailing ships,the moving vehicle.The design is mainly based on the theory of GPS and LBS,and using the hardware terminal as platform,using the android system as tool.Then we analyze the two kinds of position methods principle and the process of position design. Finally we realize the positioning and monitoring of mobile terminal.
GPS;LBS;mobile positioning
TN91
A