版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://aleung.blogbus.com/logs/20685204.html


在今年初推出的Google Map for Mobile新版本中提供了稱為My Location的功能,不需要GPS的支持,也能在地圖上顯示出當前手機所在的位置。這個功能著實讓人眼前一亮。雖然移動網絡本身就可以提供定位的能力,但是Google的My Location並不依賴於移動網絡定位能力,完全繞開了運營商的控制。
 
My Location是怎樣實現的呢?Google網站上介紹了大致的原理:手機接收到移動基站的信號,根據基站的信息可以知道當前處於哪個基站的信號覆蓋範圍,如果基站的位置是已知的,就可以確定當前的大概位置了。
 
具體點說,這是一種叫做Cell-Id Positioning Method的技術。GSM網絡(3G網絡也一樣)覆蓋由Location Area組成,(Location Area是指mobile terminal可以任意移動而不需要進行location update的區域)。Location Area由LAI(Location Area Id)來標識,LAI由MCC,MNC,LAC組成。其中MCC是3位的Mobile Country Code,中國為460;MNC是2位Mobile Network Code,在國家內分配,中國移動為00;LAC為Location Area Code,在network內分配;可見LAI是全世界唯一的。在一個location area中設置一個或多個基站,基站天線的信號覆蓋一定的區域,稱為cell(小區);根據天線的不同,每個基站可能包含1個或多個cell,定向天線的 信號覆蓋一個扇形範圍,多個天線的扇區為不同的cell。每個cell有自己的Cell-Id,結合LAI和Cell-Id,就可以在全球範圍內唯一確定 一個cell。要進行定位,需要有一個cell坐標數據庫,根據cell-id來查找位置信息。
 
Google的My Location表示格式為myl:MCC:MNC:LAC:CI。在Google Map for Mobile的about信息末尾可以看到。如果顯示為myl:n/a,那就是手機不能提供cell-id信息。很不幸,我正在用的SonyEricsson w810c就不支持:(
 
下一個問題就是cell坐標數據是怎麼來的?移動網絡運營商提供,不是太現實。Google不可能與全球所有的運營商達成協議。特別是在中國, 凡是涉及精確地理坐標的數據都屬於機密範疇,然而我們發現My Location在廣州是可用的,估計其他城市也可以。於是我猜Google是自己採集這些信息的,例如開輛車周圍轉,記錄各處的cell-id。但有點 奇怪的是,在廣州我們發現在天河軟件園得到的位置比較準確,但是在其他地方的就誤差很大,並且表示精確度範圍的圓圈半徑非常大,將半個天河區都包含在內。 難道Google只在天河軟件園採集了數據,而其他地方沒有?
 
最近,一個同事開發了一個程序,利用手機自帶的GPS定位,將cell-id與坐標記錄下來。我們討論的時候才恍然大悟,Google很可能就是這樣做的!有些Google Map for Mobile用戶的手機是支持GPS的,當這些用戶運行Google Map時打開了GPS,坐標數據以及cell-id就會發送到Google的服務器,等於有許多用戶在替Google採集數據。在天河軟件園的定位準確,就因為我們(當然也可能有其他人)在這裡試驗Google Map時打開過GPS。在我們這裡,支持GPS的手機的擁有率不高,同時又使用Google Map的更少,因此Google掌握到的數據很有限。在沒有採集到數據的地方,定位就不準確了。
 
為了求證,到Google網站上查看,在Google Mobile的Privacy Policy中找到這樣一段話:If you use location-based products and services, such as Google Maps for mobile, you may be sending us location information. This information may reveal your actual location, such as GPS data, or it may not, such as when you submit a partial address to look at a map of the area. 在help中又找到一段話:Google takes geo-contextual information [from anonymous GPS-readings, etc] and associates this information with the cell at that location to develop a database of cell locations. 看來我們的猜想是成立的。其實還可以通過做實驗來證明:找一台支持GPS的手機,到一個定位有非常大誤差的地方,在Google Map中enable GPS。過一段時間後,例如幾天,因為Google處理數據可能有延遲,在關閉GPS的狀態下看My Location,如果定位變得準確了就是Google使用了用戶手機GPS採集的數據。不過我沒有GPS手機,無法做這個實驗。
 
在網上查找資料的過程中發現,其實Cell-id定位並不是一項新技術,不過它與Google Map的海量高清晰度地圖結合起來,給業界帶來了震撼。在Treo智能手機上,2006年就有國內的愛好者開發了手機定位軟件,根據cell-id查詢到當前位置,不過位置信息是地名,而不是經緯度坐標;Cell-Id對照地名信息的數據庫是由用戶補充完善的。在網上搜索一下,也可以找到好幾個開放的cell-id坐標數據庫,例如OpenCellID,只不過幾乎都沒有中國大陸的數據。Flickr為了配合ZoneTag(用手機拍照時記錄下cell-id,從而可以知道照片拍攝的位置),還提供了Cell Location API

 

huenlil 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • jj
  • 我把手機的基地台完全關閉,打開WLAN ( 須設定 用 "WAP" 上網 ) ,然後打開google map,它依然可以定位,我試過好幾個地方都沒問題,所以我可以確認MY location 的定位方法跟基地台完全沒相關.
  • huenlil
  • MyLocation 包括兩種定位方式,一種是利用CelID 一種則是使用 Wifi 定位,相關資訊可以在 google 找到。

    簡單實驗,有一台Wifi AP 在A可以定位,如果把AP帶到B地點,手機這時候如果一樣只有wifi連線,他會定到A的地點而不是B。