Google Maps 的定位原理是什麼?

設備:iPad mini 2 Wi-Fi版。環境:沒有GPS、Wi-Fi默認常開(但沒有連接任何網路)、定位服務打開,下載區域離線地圖。測試:在區域內利用公共交通移動測試實時定位。開始以為是M7協處理在有網路的情況下先定位,然後利用M7的強大運動計算模擬定位,結果是可以否定的,因為沒有M7的mini 1代同樣可以定位只是偏差比2代大。而且這功能暫時我所知道只有Google maps和Google earth有,國內流行的各大地圖和導航甚至蘋果自帶的地圖都沒有這功能。還有一個要說的是,定位在地鐵內是失效的。


谷歌的定位確實牛逼到讓人害怕,幾年前我在老家農村,安卓手機,不開GPS和WIFI,靠基站定位,定位精度有半個村子,這個沒什麼;但令人吃驚的是,如果我不開GPS,開WIFI,定位精度直接縮小到我家房子範圍,半徑十幾米的樣子,跟無線路由的信號範圍差不多。

因為是在農村,房子都是獨立的,且不密集,除我家以為我另外能收到兩三個wifi信號,都是私人家裡的,都很弱,我也從來沒連接上過,如果只靠WIFI和基站應該無法如此高精度定位的。

我懷疑原理可能是這樣的,就是當我們的手機在某一時刻同時開啟GPS和WIFI的時候,谷歌把通過GPS得到的真實地理位置和當時的WIFI信息、IP地址、基站定位信息等一起通過手機後台傳送到了谷歌總部備案,這樣以後就算沒有開啟GPS,也可以根據其他幾項信息進行推斷你的位置了。


沒開GPS的時候,谷歌的定位服務會掃描附近的WiFi信號(即使你沒有連接上對應的熱點,掃描到熱點就可以知道相關的SSID和MAC地址信息),從而根據WiFi信號定位。
而有了WiFi信號以後,定位精度可以提高到幾米。原理參見: Wi-Fi 定位的原理是什麼?

UPDATE:

問:沒有連上網從何得知WiFi數據?

答:有網路的情況下定位時,用戶的設備上會保存最近7天掃描到的的Wi-Fi AP/基站數據,以及從Apple/Google下載的大資料庫的一小部分數據,這些數據覆蓋用戶的周邊地區。換句話說,定位時會離線伺服器上的附近地區的WiFi AP/基站信息,以備在離線時可以通過查詢本地的緩存數據來定位。


大概的思路,之前聽過一個相關方面的講座,簡單說說:

1.設備

定位必須要靠你移動端的各個設備和感測器,只靠一個是不可能實現準確定位的。

GPS:最為通用的定位工具,而且面向用戶免費,但是缺點是:(1)室內無法達到覆蓋,(2)連接有延時,(3)耗電量較大,(4)在城市或峽谷地區有信號反射現象。

WiFi:這個是大家最常用到的設備,普遍性好,但是也有問題:(1)會有雜訊信號,即無線的相互影響,(2)無線熱點可能本身也會改變位置。

Bluetooth:小範圍內傳遞數據相當常用,而且傳輸數據量大,信號穩定,但是(1)耗電量大,所以經常會被關閉,(2)藍牙相比起其他技術不是那麼普及。

信號基站:這是最為穩定的定位點了,而且信號強度也穩定,但是(1)準確範圍較大,一般是幾百米到幾公里的範圍,(2)有一定區域局限性,即大多數基站集中在人口密集區域,部分鄉村,山谷地區基站不普及。

2.問題

所以,Google必須面對的最主要的問題就有了,1.地圖覆蓋,基本地圖必須覆蓋你可能到達的大片區域,2.電量消耗,這個沒得說,你的移動設備到底不能和專業GPS設備去拼電池,所以耗電也在考慮範圍內。3.精確性,這個也就是地圖應用最難達到的要求,必須精確定位。

3.解決辦法

具體解決的辦法,簡單說就是軟硬體結合+數據分析。複雜點說就是:

(1)原始數據獲取

首先,通過上面的各個設備,獲取用戶的原始數據,這些數據既包括用戶數據,即你手機各種感測器的數據,你的大致方位,時間戳,大致行動軌跡,

其次要收集大量的地理信息,包括具體地點的信息,有基站,固定WiFi的大致坐標,以及相關建築,街道,以及具體建築內的大致功用,(這個第三點數據真的是很難得到,比如大型商場的位置,車站,體育場館等),這些建築功用信息是進行定位和數據分析的重要依據,也正是其他軟體和谷歌的差距所在。

然後當然是要得到地圖的信息,這就要靠Google的衛星拍攝大量的衛星圖片,進行這裡拼接,完成一個區域的整體圖像。

(2)建模

不用說,有了大量數據後,就必須進行數據建模,衛星圖片中的信息和收集到的地理信息進行整合,抽象出城市,街道等的模型。簡單來說,就是標定在地圖中哪些是街道,哪些是建築。這裡必然要經歷一個繁重的工作——加標籤,就是個圖上所有的東西標定這個到底是什麼。不要問我Google怎麼做的,我也不知道....但是能夠想到的是必然是大量人工和機器學習演算法去得到。通過半監督學習的演算法,基於已有數據,比如移動設備出現的時間段和頻度,活動的時常等等,標定建築是公司,商場,還是車站等。這部分沒得說,就是Google的核心競爭力所在。

(3)數據分析

準確來說,應該是用戶數據分析,就是你出現的大致位置,你的時間戳,以及你的日常行動路線等等,幫助分析和數據糾偏,在這個時候,Google就能夠大致知道你在什麼地方了,甚至可能已經大致識別你去那裡的目的了,比如在公司,你每天早上就會不遠萬里從其他地方來到這裡,並有大量時間在其周圍來回運動,並且又在晚上離開,那麼你的位置就應該在該建築內沒錯。

總結以上,Google Maps的準確性高,與其說是因為信息全,數據多,更重要的來自其數據分析能力,以及具體機器學習的演算法強大,而這部分的強大是要靠數百甚至數千個聰明腦袋一點一滴長時間積累起來的競爭優勢,也是Google的核心競爭力。


定位的原理基本上就是:基站、WiFi、GPS這三者。

題主說的離線定位的場景,猜測是離線地圖數據中已經包含了AP路由器的離線位置數據,所以在沒有網路的情況下,通過WiFi也可以定位。如果不提前下載離線地圖數據,應該就沒法定位了,這個有時間測試下。

PS:現在百度地圖也可以做到離線定位。


用wifi怎麼獲取如此詳細的地址呢?google怎麼做到的?


推薦閱讀:

TAG:Google地圖 | 定位地理 | GoogleMapsforiOS |