文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
此篇為跨度兩年的軌跡系列文章總結之一。
1.軌跡,為什么需要“裝扮”
得益於移動設備的普及性,在缺少其他監管手段的情況下,城市管理中基於移動設備實現對人員、車輛的管理是十分行之有效的方法。其中軌跡的管理方案囊括了軌跡里程統計、工作狀態監管、實時位置查看、歷史軌跡回溯等等,而這一切方案能夠真正的行之有效則必須依賴於一條足夠“優美”的軌跡線。只有軌跡線“優美”,統計才會更精確、展示才會更直觀。
但是想把一條軌跡線處理到足夠優美,並不是一件容易的事情,它受到太多太多的外部影響。這里,我直接列出影響軌跡展示效果的主要因子,希望大家能夠帶着這些問題一起探討解決思路,了解原來一條優美的軌跡線后面有這么多的故事:
a.坐標采集頻率問題:軌跡線是由軌跡點連接組成,而軌跡點一定都是離散的,離散程度取決於坐標獲取的頻率。頻率高,設備耗電,軌跡存儲增大,但是軌跡特征明顯;頻率低,軌跡線特征容易丟失。如何能夠比較智能的調整坐標上報頻率?
b.坐標采集保活問題:移動設備普遍具有省電模式、息屏功能等,這些場景均容易導致GPS采集程序被系統清除,從而導致坐標在某段時間突然無法采集、信號中斷。而互聯網APP卻往往早已被設備添加至白名單(與廠商有合作關系等),並不會有此問題。
c.軌跡坐標轉換問題:GPS是WGS84坐標,北斗是CGCS2000坐標,而軌跡展示依托的地圖往往是各種不同坐標系的地圖,兩者直接需要進行坐標轉換。而且不同於互聯網應用只采用一種地圖,只需解決一種坐標類型的轉換,城市管理中需要解決的坐標轉換具有地圖類型多、地圖精度不可控(如脫密地圖)等問題。而坐標轉換的准確度將直接影響軌跡展示的效果。
d.坐標准確度問題:衛星定位最少要求4顆星同時觀測(由於其三球定位原理,再加上把時間作為變量,所以至少需要4顆星來觀測),而在不少情況下,移動設備並不能滿足同時接收到4顆以上衛星的信號(比如:室內、高層建築遮擋等),這將導致此時的衛星定位誤差很大。如何可以提高衛星定位的准確度?
e.軌跡坐標去噪問題:坐標准確度問題是一個不可避免的問題,在此情況下,需要一套可以對坐標異常點進行去除的方法,從而保證軌跡展示的效果不受異常點的影響。
f.軌跡線連接問題:軌跡線的逐點連接必然會導致線和線之間過渡不平滑,並且單純的軌跡點直連,還容易出現軌跡線“穿牆”問題(A點和B點分別在十字路口不同地方,AB直連將導致線條穿越中間的非路面建築)。
g.軌跡播放問題:軌跡天然是動態的,僅僅以軌跡線描述不能真實展現軌跡的時空特征。如何優美的展示軌跡動態,讓用戶具有看動畫片一樣的觀感?
2.優化,從坐標采集開始
在上述的各種軌跡展示影響因子中,GPS采集頻率、GPS采集保活、GPS准確度優化均屬於GPS獲取環節需解決的問題,並且是影響權重最大的問題,以下對此三點的解決做一個簡單的描述。
2.1坐標采集頻率優化
如前文所述,坐標采集頻率直接關系到軌跡點的密度,理論上軌跡點是越密越好,但是實際中要考慮設備的耗電量、存儲的大小和有效值。舉如下幾個例子,可以更好的理解軌跡采集頻率的調整策略:
a.某監督員在一條筆直的道路上緩行,此時軌跡每隔20秒采一個軌跡點和每隔60秒采一個軌跡點的效果是一樣的,並不會對軌跡的展示有很大的影響。
b.某監督員進入室內辦公,此時的場景與筆直路上緩行是一樣的。
c.某監督員緩行時,突然開始跑步,此時軌跡點每隔20秒與每隔60秒采集將有很大區別,因為此時間段內的直線距離會有較大區別,容易出現特征點遺漏。
基於以上三種情形,坐標采集頻率的自動調整方案便可以做一個簡單的歸納:
a.系統有設置的默認采集頻率,針對人員和車輛是不同的。
b.當連續多個采集點為靜止或相差不大時(在閾值范圍內),此時可以將坐標采集頻率適當調慢。
c.當連續多個采集點的距離大於閾值范圍時,此時可以將坐標采集頻率適當調快。
2.2坐標采集程序保活優化
我們首先以研究“咕咚運動”的保活機制作為例子來說明:
(1)當"咕咚"處於停止狀態時,一鍵清理和黑屏狀態會被殺死,說明在沒有進入運動界面之前,其保活機制沒有被啟動(即沒有使運動界面切換到后台等)。
(2)當“咕咚”處於運動狀態時,一鍵清理和黑屏狀態沒有被殺死(滑動清理除外),說明已經啟動保活機制:
a."咕咚"禁止了返回鍵,以保證運動Activity不被銷毀;
b.不斷更新通知欄計時,以保證APP始終在前台,防止被系統回收;
c."咕咚"被清理后能夠自動重啟,通知被刪除后自動彈出,說明可能有另外一個東西(進程或Service)監聽器運動Service(或進程)存活狀態,當Service被銷毀時,立馬將其拉起來;
d.“咕咚”被強制停止或清理殺死后,再次進入會直接顯示運動界面且能夠保持殺死之前的運動狀態,說明其可能利用配置文件記錄了相關狀態;
e.鎖屏/解鎖后,"咕咚"運動界面會自動彈出,說明其利用了廣播機制對鎖屏廣播進行監聽,彈出Activity以保證進程始終在前台;
總結“咕咚運動”的保活機制為:常駐通知欄,雙進程守護,廣播鎖屏,自定義鎖屏。
同樣,我們也分別研究了“悅動力”、“悅動圈”這類運動APP,其保活機制大同小異,所以最終我們將坐標采集程序保活策略以如上分析進行了相關優化。
2.3坐標准確度優化
坐標信號強度對定位准確度影響十分大,比如當設備在室內或者高樓下時,坐標信號是明顯減弱的。此時我們采用了如下優化策略:
a.記錄信號強弱作為后續軌跡奇異點(問題點)的篩選條件之一。
b.當信號弱的超過一定閾值時,切換成百度定位方案。
3.擬合,讓軌跡點更有質量
說完坐標采集的系列優化方案,我們接下來一起探討從算法層面上對軌跡點進行優化的策略。依據實施條件不同,展示要求不同,這里我們先后從三個不同方向進行軌跡點擬合研究。
3.1 基於道路線的路網匹配擬合
顧名思義,本方案必須有道路線數據,其原理為將各軌跡點匹配至與道路垂直距離最近的節點上,並且將前后兩點沿道路順勢連接。
優點:軌跡全部在道路上,展示美觀。
缺點:依賴於道路數據的完整性,並且展示有失真實。
3.2 基於時空聚類的去噪算法
此算法的思路為在盡量不改變軌跡點的特征情況下,通過軌跡的時空聚類,將某些特征相似的點聚在一處,從而減小由於軌跡點打結導致的軌跡雜亂。但是本算法並不僅僅是常規的空間聚類算法,由於軌跡具有天然的時間屬性,不考慮軌跡的時間屬性進行聚類則會丟失軌跡的許多特征信息。例如,雙行道道路,來回分別在不同的行道路上,如果不考慮時間維度,則會出現將雙行道上的軌跡點聚類到一個行道上。
優點:解決了軌跡點打結展示問題。
缺點:對於軌跡點之間的連接並沒有平滑處理。
3.3 基於卡爾曼濾波的軌跡優化方案
卡爾曼濾波(Kalman filtering)一種利用線性系統狀態方程,通過系統輸入輸出觀測數據,對系統狀態進行最優估計的算法。其在軌跡處理中,可以達到通過預測軌跡點與實際軌跡點之間的偏差來進行軌跡位置的調整,實現軌跡的平滑。
優點:軌跡線變的曲線平滑,更加美觀。
缺點:平滑度很難控制,導致軌跡有失真實,軌跡特征變模糊,並且軌跡噪聲點對整體平滑效果影響很大。
3.4 最終擬合方案
以上方案各有優劣,但是如果能夠進行有效的綜合,並且再加上其他的數據處理流程,軌跡點的質量將會提升更多。具體描述如下:
- 通過坐標的准確度參數,去除一部分誤差特別大的軌跡點。
- 通過計算軌跡點速率異常變化,去除一部分“飛點”。
- 基於時空聚類算法,進行軌跡點聚合。
- 通過卡爾曼濾波進行軌跡平滑美化,且控制平滑度過大。
- 針對車輛軌跡,在存在完好的道路線數據時,采用路網匹配算法。
4.動效,讓軌跡展示具有“觀影”感受
4.1 平滑動起來的人(車)
靜止的人(車)圖標無法表示真實的變化,隨着位置坐標的獲取而跳躍變化的人(車)圖標又頗顯突兀,如果能實時的、平滑的顯示人(車)位置變化將會使用戶具有更強的“參與”感。我們以人的展示為例,為實現該目標,我們設計了16個方向的人員圖標,根據坐標點之間的角度計算來選擇不同的人員圖標,並且通過計算兩點距離和播放速度來計算人員前進時的圖標變化,最終實現諸如前進時人手的左右搖擺效果等。
4.2 流動的軌跡箭頭
軌跡箭頭的流動除了可以增加整體軌跡展示的動效,更能夠表示出軌跡的方向特征。但是軌跡箭頭過於密集,也會影響軌跡的美觀。綜合設計,當地圖縮放到一定級別后,此時出現軌跡箭頭流動特效。
4.3 類“滴滴”的多軌跡展示效果
“滴滴”這類互聯網軌跡展示方案已經越來越被大眾所接受,尤其是多車輛(人員)的實時軌跡展示上。通過在軌跡大數據存儲、軌跡信息流、前端展示算法的不斷研究下,目前展示上基本可與之靠齊,並且也先后得到了實際項目的驗證,其中某揚塵項目為監控整個城市1.6萬輛車24小時的實時軌跡。
4.4二三維一體的軌跡展示特效
在三維場景中實現對軌跡的展示,將更加具有視覺的直觀性、沖擊力。並且借助游戲場景展示的思路,將會讓用戶有更好的互動感。
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^