其實這個問題,在《手繪地圖製作的關鍵點之「實時導航」》一文中,已經有過簡述,這裡再來細聊一下。本文純屬方案探討,也是景運管家手繪地圖智慧導覽系統的導航功能的具體實現,但不作為技術標準。
作者:景運管家 ● 輕輕的煙霧(z281099678)
一、智慧糾偏的原因
1.裝置因素
終端導航裝置(一般是手機)的定位,不可能達到十分精確。即便是軍用,也會有一個誤差區間,而民用當然誤差會更大一些。其中原因大體上可能為如下幾類:
一是出於安全、保密等因素,不允許民用裝置定位過於精準;
二是出於成本因素,要達到高精度的定位,不單對於終端裝置(手機)的效能要求很高,對於定位衛星的要求也很高;
三是技術原因,目前的技術從根本上來說,不可能達到分米、釐米級別的精度。當然,從這個角度來說,「精度」本身也是一個模糊的概念,達到十米級、米級算是高精度嗎,到底精度要達到多少才是所謂的「高精度」?這就已經不是一個技術問題了。
而換個角度來說,對於民用,過高的定位精度需求其實並無多大意義。比如最常用的導航使用場景來說,定位精度達到了幾米甚至十幾米,完全幾乎不影響正常使用。比如導航到某個飯店、某個學校大門等,絕大部分目的地,使用者都可以在幾米、十幾米甚至幾十米之外發現,而過於精確的定位在這時其實就幾乎沒有實質意義了(這裡強調的過於精確,如精確到米級甚至更高)。
2.常見原因
而一些常見的因素,更會放大裝置因素導致的誤差,比如裝置本身的效能千差萬別、當地訊號的強弱、天氣狀況、是否有高大遮擋物等情況。因此導致裝置的定位,不會是一個固定的值,而是在一個區間範圍內不停的變化。
因此,如果按照手機返回的經緯度來定位,則使用者會非常快速的在一定範圍內不停跳躍。這容易讓人感覺非常不解,當然也很影響體驗,嚴重降低實用效果。
因此,智慧糾偏就顯得至關重要,需要設計方案來進行處理。
裝置沒有移動,但是系統返回的經緯度一直在不停的變化
二、智慧糾偏的現象
既然裝置不能做到穩定而高精準的定位,那在導航軟體的使用上,有沒有什麼證據可以證明也使用了智慧糾偏嗎?我個人認為答案是肯定的。比如說這些現象:
1.位置初始化
當開啟導航軟體的時候,在初始化的時候,經常能看到自己的位置會做幾次跳躍。
2.導航路線切換
當使用導航模式的時候,特別是駕車時,經常會有這樣的場景:本來正常路線是向右上高架,但是駕駛人走錯道而直行了。這時候導航軟體並不會立即發現,而是顯示定位跟隨著正常的路線向右上高架,一直要偏離到較遠的距離時,導航軟體好像才「如夢初醒」一樣反應過來,重新規劃切換路線。
這一點表現,特別的說明智慧糾偏的現象。在最開始駕駛人走錯路線的時候,導航軟體會認為這是裝置的定位出現了「正常的偏差」,因此智慧的糾偏到了「正確的路線」上。只不過這種時刻,智慧糾偏反而是真正的出錯了。
三、智慧糾偏的技術方案
智慧糾偏既然是「勢在必行」的方案,那具體如何實現智慧糾偏呢?我認為,這是一個比較複雜的問題。需要綜合考慮。大致會有這幾個方面因素:
1.地圖平臺系統預置的路線
當用戶定位初始化完成後,地圖系統會判斷使用者當前位置最近的路線,而使用者規劃了導航路線之後,系統就會尋找最近的路線的點位,當用戶處於導航狀態而且開始移動之後, 地圖就會把使用者的位置自動「鎖定」到系統預置的路線點位之上。
2.使用者的前進方向、速度、海拔、地形等因素
雖然系統把導航狀態的使用者位置「鎖定」到了路線點位上,但是使用者在路線上的位置的更新和移動,還需要結合使用者的裝置本身定位及當前前進速度來計算。
比如裝置偶爾會出現定位誤差較大的點,對於這樣的異常狀況,系統演演算法會識別出來,並做過濾及糾偏處理。不會讓使用者感覺到自己突然「飛」到一個很遠的地方去了。而具體如何糾偏,就需要結合使用者當前的各種狀態:
根據使用者是前進方向,判斷當前的移動方位;根據使用者的速度,結合使用者所在的海拔、地形等因素,計算當前移動的距離,再通過使用者上次的位置,就能綜合計算出當前應該所在的位置,把使用者的位置控制在真實而友好的位置。
當然,對於確實偏移過大的情況,也不能強行糾偏。因為這種情況,我們其實是不知道到底是使用者確實已經偏離太大,還是手機定位出現的較大誤差。這時可以根據實際情況提示使用者已經偏移路線,或者待手機定位自動恢復正常。
四、智慧糾偏的效果
通過智慧糾偏,清洗過濾掉異常定位,增加了定位精度,加強了定位的穩定度,極大的提升了使用者體驗。甚至可以說,沒有智慧糾偏,定位就無法真正的投入使用,無法產生真正的實用價值。因此智慧糾偏的效果,可以說從根本上決定和發揮了定位的真正使用價值。
下面兩個對比圖,可以明顯的看出,定位的誤差已經達到米級其實(這是一個小學的門口,注意看地上的交叉的標線)。