定位技術有
兩種,一種是基於
gps
的定位,一種是基於移動運營網的基站的定位。
基於移動運營網基站定位服務又叫做移動位置服務(
lbs——location based
service
),它是通過電信移動運營商的網路(如
gsm
網)獲取移動終端使用者的位置資訊
(經緯度座標),在電子地圖平台的支援下,為使用者提供相應服務的一種增值業務
[1],
在手機上不需要增加任何功能,向運營商開通相關服務就可以實現。
本文所說的基站定位,是採用
的資料,在功能手機上實現的定位功能(另
一種方法是:內建基站位置資訊,然後查詢。這需要購買第三方的資料庫,並且由於運營
商的網路優化,資料會變得不準確。當然,在智慧型手機的實現那就更簡單了)。這方面的
文章網上也有不少,大多偏向於理論,將它轉化成**,還是有些內容需要自己恩考。
寫**了(如果還看不懂,就先檢視網上原理性的東東,呵呵)。
其基本原理是:
1、呼叫手機協議棧函式,獲取當前服務小區和鄰近小區的
cellid
,mnc
,mcc
,lac
,rssi
值,至少需要要
3 組。
2、通過手機的
協議,將上述小區信
息傳到google gelocation server
獲取相對應小區的經緯度。
3、根據無線電傳播路徑損
耗理**式,將
rssi
值轉化成相對應的距離。
4、運用三角形質心演算法,採用
3 組小區的
座標資訊和距離,得出手機當前的位置資訊。下面具體描述實現過程。
一、獲取服務小區和鄰近小區的相關資訊。由於手機平台的不同,呼叫的協議棧函式不
同。但必須獲得以下的資料:小區
id 號:
cellid
,流動網路號碼(用於識別移動客戶所
屬的流動網路):
mnc;移動國家號碼(用於唯一地標識移動客戶屬於的國家):
mcc;位
置區碼(用於標識不同的位置區):
lac;接收的訊號強度指示:
rssi
。根據三角形演算法的需
要,至少要
3 組小區資訊。在展訊平台中,一般情況下能夠獲得
6 組小區資訊,這給挑選可
信任度較高的資料,提供了便利。
二、通過手機的
協議,將上述小區資訊傳到
google gelocation server
獲取相對應小區的經緯度。獲取位置資訊時,必須遵照網路位置提供者協議(
network location
provider protocol)
,詳細的協議在
1、使用
,請求和響應的格式都是
json
,請求的內容示例如下:
, "cell_towers": [ ,
], "wifi_towers": [
, [2]
] }
其中,"version"
和"host"
欄位是必須有的,當然,裡面要求的資訊盡可能全面提供。
響應的示例如下: }
} [2]
如果請求的資料格式不正確,伺服器返回
的狀態為
400,並在響應的文字中
有詳細描述。如果請求的資料格式正確,伺服器返回
的狀態為
200。如果定位成
功,就有返回經緯度資訊;如果定位不成功,經緯度資訊就為空。2、
post
時,url
傳送時,對應的
ip 就是解析
www.google.com
得到的「74.125.71.105」
,埠:
80 4
、將上述請求的資料組織成
資料報格式,才能傳送成功。如果手機軟體本身已
經整合了
協議的相關**,這一步就省了。由於是在展訊
modem
版本的軟體上實現
此功能,
協議沒有被整合,因此必須自己組織
資料報。
資料報包含以下幾
個字段:
內容的長度
每個欄位間都要加上回車換行符,實際內容與上述字段間要加
2 個回車換行符。這些數
據組織完成,再呼叫
socket api
傳送出去就行了。
三、根據無線電傳播路徑損耗理**式,將
rssi
值轉化成相對應的距離。自由空間
無線電傳播路徑損耗模型為:
式中,d
為距信源的距離,單位為km;
f 為頻率,單位為
mhz;
k 為路徑衰減因子,範圍在2~
5 之間。對數一常態分布模型,其路徑損耗的計算公式為:
式中,xσ
是平均值為
o 的高斯分布隨機變數,其標準差範圍為4~
10;pl(d0)
,是式(1)
取d=1
時,算出的
loss
值。根據式(
1)和式(
2),得出訊號強度為:
rssi=
發射功率
(pt)+
天線增益
(pf)
一路徑損耗
(pl(d))
根據上面的理**式,推算出距離與
rssi
的關係公式:
d = 10^((pt+pf-rssi-pl(d0)-x0)/(10*k))
pl(d0) = 32.44 + 10*k*log10 (f)
,根據發射頻率算出
pl(d0)。令
a = pt + pf –x0
,則a
是一常數,距離
d 的公式變成:
d = 10^((a-pl(d0))/(10*k)) [
計算中,
k 取中間值
3] 四、計算前的單位轉換。
由於經緯度資訊單位度與根據
rssi
算出的距離公里,是不同的單位,不能直接計算,
原點換算出相對的經緯度差值,再將該差值根據刻度與實際距離的關係,換算成公里數,就
得到其它點相對原點的座標值,單位也統一成公里。地球的子午線總長度大約
40008km
,平均:緯度1度
= 大約
111km
,緯度1分=
大約1.85km
,緯度1 秒=
大約30.9m[4]
。我們知道,地球的半徑大概是
6378.137
公里,那麼經度與距離的關係如下式進行換算:
經度1
度= 2*pi *6378.137*cos(
當前的緯度
) km
五、找出可信度相對較高的三組資料。
由於距離越遠,根據
rssi
算出的距離誤會越大,我們認為可信度較高的資料就是距離
最小的資料。據此,選出距離最小的三組資料作為下面三角形質心演算法的資料。
六、運用三角形質心演算法,得出手機當前的位置資訊。三角形質心定位演算法的基本思想
是:計算三圓交疊區域的
3 個特徵點的座標,以這三個點為三角形的頂點,未知點即為三
角形質心。特徵點為e,
f,g,特徵點
e 點的計算方法為
[3]:
同理,可計算出f,
g,此時未知點的座標為
。但是二次
方程,求解過程計算量較大,將式(
3)中的方程式兩兩相減,則分別得到每條交線的直線
方程,特徵點
e 的座標則可以通過這些直線方程求解,如下三個直線方程式:
1: 2(xb-xa)xe+2(yb-ya)ye=ra*ra-rb*rb-xa*xa+xb*xb-ya*ya+yb*yb
2: 2(xb-xc)xe+2(yb-yc)ye=rc*rc-rb*rb-xc*xc+xb*xb-yc*yc+yb*yb
3: 2(xa-xc)xe+2(ya-yc)ye=rc*rc-ra*ra-xc*xc+xa*xa-yc*yc+ya*ya
根據上面算出的未知點的座標是相對於原點的公里數,先將公里數轉化成經緯度,然後再
與原點的經緯度相加,就得到了手機的位置資訊。
基於gps
的定位方式是利用手機上的
gps
定位模組將自己的位置訊號傳送到定位
後台來實現定位的,精度比較高,在空曠的地方表現優越;而在大廈內部,由於
訊號微弱,無法實現定位功能。基站定位則是利用基站對手機的距離的測算距離來確
定手機位置的,不需要手機具有
gps
定位能力,但是精度很大程度依賴於基站的分布
及覆蓋範圍的大小,本文實現的基站定位誤差在
200m
之內,在一定程度上彌補了
gps
訊號無法覆蓋區域的定位缺憾。
基站定位 CellTrack
celltrack是一款專門測試或檢測移動通訊資料的軟體,這是一款非常專業 非常優秀的測試軟體。先說說基站數量對測試功能的影響 眾所周知,每個基站通常是有三根天線分別代表三個小區,每個小區有6塊載頻,每個載頻有8個通道。在軟體中分別用數字1 2 3代替三個小區,其中1小區主覆蓋正北 2小區主覆蓋東南...
移動聯通基站定位API以及電信基站定位API
基站定位是指手機發射基站根據與手機的距離來計算手機座標地理位置的一種功能,基站定位一般應用於手機使用者,手機基站定位服務又叫做移動位置服務 lbs 服務 它是通過電信移動運營商的網路 如 gsm網 獲取移動終端使用者的位置資訊 經緯度座標 在電子地圖平台的支援下,為使用者提供相應服務的一種增值業務。...
基站定位之GeolocationAPI介面
出處 很多朋友在使用google geolocationapi 介面測試基站定位,測試時需要往介面提交json格式的資料,json格式引數比較多,在ide裡測試起來也比較麻煩,有時因為乙個語法錯誤不得不排查很長時間。curl是乙個利用url語法在命令列方式下工作的檔案傳輸工具。使用curl來提交ht...