動態圖層的實現

來源:互聯網
上載者:User

在GIS中,所謂“動態圖層”就是位於地圖最上層且重新整理很快的圖層。通常為點圖層,用於顯示那些即時重新整理的資訊。這樣,就產生了兩個問題:一,為什麼動態圖層位於地圖最上層;二,如何作到重新整理很快。下面就以GPS車輛監控為例加以說明。

假設螢幕內需要顯示的GPS車輛監控點有500個,為了即時反映每輛車的最新狀態,只要獲得任何一輛車最新的GPS位置資訊,就要進行全圖重新整理,通常也就是說,要能夠作到一秒鐘內能重新整理多次。如此大的負載,如沒有特殊的技巧,是難以實現“動態即時”效果的。相對於動態圖層,沒有即時資訊的圖層集合稱為“底圖”,重新整理時,先繪製底圖,再繪製動態圖層,底圖在下,動態圖層在最頂上,在底圖不變的情況下重新整理,底圖無需繪製直接粘貼,動態圖層需要即時繪製,而影響動態圖層繪製效率的關鍵是地圖座標到螢幕座標的轉換,在某個時間點也許只是一輛車的位置動了,其他車輛位置保持不變,為了重新整理動態圖層,需要500輛車進行地圖座標到螢幕座標的轉換,得到500輛車的螢幕座標,然後進行繪製,這樣作代價很高,難以作到即時的效果,為此,給每輛車從0~499編號,申請一個長度為500的數組,儲存每輛車的螢幕座標,當其中一輛車位置改變時,只需要重新計算這一輛的螢幕座標,其他車輛位置不變,直接繪製。這樣,找到了問題的瓶頸,解決了瓶頸對快速重新整理的效能限制,提高了即時重新整理的效果。 還有一個問題一直未考慮,假如一共有5000輛車,而當前螢幕內,可能有500輛車需要顯示,如果按上面的作法,建立長度為5000的數組,用於儲存這5000輛車的螢幕座標,繪製的時候遍曆此數組,讀取螢幕座標進行繪製,遍曆的代價同樣很高,為此,需要進一步改進,那樣就需要建立即時動態格線索引,記錄每輛車當前所在的網格,這樣,在繪製的時候,按網格索引獲得當前螢幕內的部分車輛的編號,由此編號直接對應到數組位置獲得螢幕座標,避免了遍曆數組所帶來的開銷。

以上是針對底圖不變的情況而言的,當底圖發生變化時,如對地圖進行平移、放大和縮小等操作,一方面底圖需要重新繪製,另一方面動態圖層上所有點的螢幕座標需要重新計算,對平移來說,只需要加上一個平移的常數即可,而對於放大和縮小,就要用地圖座標到螢幕座標的轉換來計算,運算量較平移的情況要大,所以,平移相對於放大和縮小反應要快一點。

以上詳細介紹了“動態圖層”的底層實現原理,如果考慮採用類似WEBGIS定級分塊渲染顯示的話,還有更靈活、效率更高的處理方法,留給讀者自己思考,缺點是就不方便作無級縮放了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.