
最近一朋友問我百度遷徙圖到底是怎么弄出來的?而在這過程中發現我原來也有我好多不明白的地方,這也激發了我這個技術宅的興趣,我到處找資料研究終于知道了基本的整個原理,后來想想肯定也有很多朋友不知道這背后的原理,那就分享出來做個科普吧。
一,為什么會有地理定位這個技術?
一談到為什么會有定位技術,可能很多人的第一反應是認為這個發明就是為了讓自己看地圖還有找餐館的,呵呵,其實事實相去甚遠。
現在我們從源頭來講,為什么我們會有地理定位技術?
其實最早的定位系統是來自美國國防部50年代的軍備競賽,當時蘇聯在1957年發射了Sputnik-1人造衛星,而美國不甘示弱,1958年,為了實現軍事上的高精確打擊,美國海軍開始研制子午儀衛星定位系統。1973年美國建立國防導航衛星系統DNSS,此后DNSS改名為Navstar即授時和測距導航衛星或者說是全球定位系統(Navigation Signal Timing and Ranging/Global Positioning System),后來簡稱GPS。1994年,終于完成覆蓋全球98%的衛星系統。
從軍備競賽到全面民用這和互聯網的發展有相似之處,互聯網的前生就是為了防止遭到蘇聯的核打擊后被摧毀重要中心節點導致全面癱瘓,進而建立起的去中心化網絡,這個意外的軍事發明也在隨后被民間大量普及。
一切都是意外啊親,這個發明真的不是用來給你找餐館的。
二,那GPS定位的具體的技術細節是什么?

我只是把最基本的定位原理抽離出來,更多復雜的東西就不說了。現在假設地面接收器和天上三顆衛星都是不動的,那么現在我們要獲得地面接收器的位置就可以用如下方法求解。
已知,衛星A,B,C的空間坐標為LocationA, LocationB,LocationC。
已知,接收器分別距離A,B,C的距離為D1,D2,D3。
求解,地面接收器的位置Location。
那下面接著用空間交會算法就可以求解了。
Location=function([LocationA,D1],[LocationB,D2], [LocationC,D3]);
具體函數就不用說了,說了咱們也看不懂,這是工程學的事。咱們只需要知道,絕對理想模型的情況下,根據三顆衛星的空間坐標以及舉例對應物品的舉例就能算出該物品在地球上的地理位置了,這是GPS工作的核心原理。
三,那百度如何做定位的?
上面給各位說了這么多GPS的定位細節,那么是不是百度蘋果谷歌都只是用GPS來給用戶定位的呢,哦,原來就這么簡單啊?答案是又錯了,科技公司都想要做的就是給用戶最為精準的定位,但是由于民用GPS的定位誤差比較大,沒有軍用GPS定位準確,而科技公司是不大可能發射高精度衛星的,就算有錢有實力也有心發射,投資人也會瘋掉,所以呢科技公司全都退而求其次,除了用GPS定位以外還會用其他辦法為用戶做到更精確的定位,下面開始介紹百度定位時用到的方法。
百度地圖定位用到的主流方法:
1)GPS定位,主要用于室外導航。
2)IP定位,這在PC時代一直都在用,比如以前用QQ外掛的時候可以看到對方在那座城市和網吧,就是用的IP定位技術。但是IP定位有個弱點就是范圍不是太精確,只能定位到街道級別。
3) 基站定位,用戶用2G、3G和4G網絡都是要經過運營商基站的,那么通過獲得用戶所使用的基站位置,判斷用戶位置,定位半徑精確范圍是265米左右。
4)WIF定位,WIFI定位是最為精準的,因為WIFI的強度半徑相比于其他來說都最小,當然這里的WIFI指的是大商場或者咖啡廳的wifi,通過這些公用WIFI就能相當精準的收集到信息,定位半徑精確范圍是35米左右。
5)混合定位,就是將上述定位方法全部混合,定位半徑精確范圍是60米左右。
百度地圖定位用到的大數據相關技術:
我這里就介紹比較重要的三個技術。
多站定位:

如圖上所示,如果一個用戶既連著WIFI又連著基站的4G,那么百度就可以根據該WIFI在和基站在數據庫中的空間坐標以及他們的輻射半徑來計算出更精確的位置范圍。這個比較好理解。
指紋定位:

左圖是百度根據一個城市的基站以及WIFI的輻射強度制作的信號強度網格,而右邊是一個用戶手機連接基站時移動中的信號強弱變化,百度會根據用戶信號變化在基站強度數據庫中確定出用戶所在位置,計算起來相當復雜。
眾包計算:
上面談的都是如何更精確定位的技術,現在談下如何為用戶提供決策方案的技術。百度通過收集大量用戶在某些地段移動的設備、速度進而來判斷某個路段的交通擁堵情況,這就是百度地圖的“實時路況”功能,而百度導航又會根據“實時路況”為用戶提供出行最優解決方案,當然,目前除了為個人出行提供決策方案以外,已經在為交通部的道路規劃提供決策支持。

這是春節的北京路況,十分通暢。
四,百度定位實現的整套流程是什么?
前面我們知道了百度實現定位的技術,那么整套定位流程是什么呢?

上圖就是百度定位的細節了,我這里不講的太深入,只講簡單的。
第一步,手機客戶端向百度服務器發送定位請求服務,并將基站的CELL-ID,WIFI信息,GPS,以及信號強弱等信息發送到百度服務器。
第二步,百度服務器收到后,將這些數據全部放入到定位數據庫中進行索引,然后再進行各種大數據對比,最后決定用何種算法求得最優解,以減少數據誤差。此外,百度也會在此過程中智能的不斷對原來的數據庫進行數據更新與校正。
第三步,百度計算完成后向客戶端返回手機所處位置的經緯度。
五,百度的數據從哪里來?
好了,現在再談最后一個問題了,有了這樣的技術后,數據從哪里來。
數據來源一:地圖用戶。凡是使用百度地圖的用戶,百度就可以收集到對應數據,根據CNNIC發布的《2013-2014年中國移動互聯網調查研究報告》,2014年8月百度地圖占領地圖市場的63.7%的用戶,這也就是說百度能夠收集到絕對多數的移動互聯網用戶的出行數據。
數據來源二:第三方應用。很多手機應用都是需要地理定位的,比如天氣應用,再比如同城類應用,而普通開發者一般是沒有強大定位技術的,只能借助于第三方開放定位技術平臺,在國內做的最好的兩家也就是百度地圖開放平臺和高德地圖開放平臺,而選擇百度地圖開放平臺的應用,只要用戶使用該應用,百度就能獲得更多的數據。
目前墨跡天氣和百信網用的就是百度地圖的開放技術,還有更多安裝了百度地圖的應用百度就能收集數據。
這兩個數據源就是百度最主要的數據統計來源,目前百度已與交通部有深入合作,預計后期會有可能來自交通部更加精確的數據。
最后,百度用這些定位數據的變化在春節期間做出了很diao的“百度遷徙”。

結語:
百度遷徙圖非常有意思,我們看到的是一個最后呈現的完整數據圖,但是在這背后確有十分復雜的高精尖技術做支撐,遠比我們想象中的復雜。同時我們也看到地理定位技術最先發源于軍事,最后又由于移動時代的商業發展訴求得到了更為深入的發展,所以順著這次百度遷徙我們也再次看到了驅動技術發展的本質—恐懼與欲望。
微信公眾號:shouxifayanzhe