VML SVG雙劍合璧 打造GIS客戶端應用

2021-09-21 23:06:20 字數 1325 閱讀 8164

vml和svg是完全可以滿足我們gis應用需求。但也有乙個重要問題就是效能,尤其vml的效能問題在瀏覽器上的表現確實不是很理想。gis系統是乙個資料量巨大的系統,路線檢索資料經常存在四五千個地理座標點和幾百條線路,大大增加了客戶端向量繪圖效能開銷。

為了解決向量繪製效能問題,我們採用了多種技術和方案。後端資料優化方案因不是本文重點,簡單說一點.

後端資料層,對線路資料抽稀優化,檢索繪製座標點數量。

4.1.1 客戶端資料抽稀

通過抽稀的方法,減少向量繪製點數量從而降低效能開銷。因為後端資料層已經對資料進行裡合理抽稀。客戶端抽稀原理很簡單,就是隔點抽稀。如「京珠高速公路」資料有幾千個地理座標點,如在第5級別下向量繪圖沒有必要將這幾千個點全部繪製在地圖上,只需要隔點抽稀100個以內的地理座標點就可以保證路線形狀和效果達到使用者需求。其他級別同理,只需要注意抽稀力度既可。但在13級別以上,為了盡量使地圖瓦片路線與向量繪線部分吻合,我們盡量減小抽稀力度或不對資料進行抽稀。客戶端按地圖級別進行資料抽稀,在小級別下對效能提公升非常明顯。為了減少大級別下的開發我們使用了另一種方案「可視區域擷取」。

4.1.2 可視區域擷取

可視區域擷取也是通過減少向量繪製點數量從而降低效能開銷。它的原理就是將可視區域以外的資料過濾掉,只繪製可視區域內的部分,同樣可以大大降低向量繪製的效能開銷。 它在處理大級別下繪製路線意義最大。如我們上面提到「京珠高速公路」,我們將地圖放大到13級別以上,如果只繪視野內的部分,需要繪製的點可能只需要幾十個就可以,與繪製幾千個點效能開銷對比肯定非常低。

演算法研究

線路擷取最小單元為兩點間線段。兩端點與可視區矩形可能存在3種關係。

1) 兩端點都在可視區內,不需要擷取。

2) 兩端點都在可視區域外,存在兩種情況:

3) 兩端點只有乙個在可視區域外

圖例:在可視區內的線段端點,為確定的結果點之一。另一結果點在,線段矩形區域內的兩點。判斷這兩點是否在可視區域矩形內,如果在為需要擷取的另一結果點。

從上幾個圖例我們可以總結出幾點思路:

注意:通過上面3步基本可以正確取到可視區域的資料了。注意一下資料特例,例如線與可視區域是平行關係。這裡就不重點說明了。

4.1.3 多path路線合併

地圖向量繪線,每條線都會建立乙個polyline物件,每條線都是有dom標籤(vml使用shape標籤、svg使用path標籤)。在有些檢索資料會返回幾百條線結構,那需要建立幾百個dom標籤。這樣效能肯定不會好。

我們通過將幾百條線路,通過建立乙個dom元素實現。這樣效能將得到大幅提公升。

【本文首發於:

IsNull 和 NullIf 雙劍合璧

首先看看sql server 聯機叢書的資訊,其中我們該注意的地方我用紅字標出 使用指定的替換值替換 null 語法 isnull check expression,replacement value 引數 check expression 將被檢查是否為 null 的表示式。check expre...

區塊鏈 AI,恰似雙劍合璧?

兩招名稱相同,招式卻是大異,一招是全真劍法的厲害劍招,一著是玉女劍法的險惡家數,雙劍合璧,威力立時大得驚人。這段描述出自 神鵰俠侶 說的是楊過與小龍女共同對戰金輪法王的橋段,兩人同使 玉女劍法 仍難敵對手。楊過無意中使出 全真劍法 雙劍合璧之下,威力大增,殺招頻出,竟勝了金輪法王。一雌一雄,一陰一陽...

讓低成本 高效益「雙劍合璧」

企業it管理困惑 目前,隨著越來越多企業對it部門運營管理不滿意,那麼為企業提供持續高效支撐的要求對it部門越來越緊迫,如何提高企業it管理已逐漸成為it部門新的熱點話題。那麼it管理部門面臨的又是什麼?需要如何解決均很大乙個問號。企業網路型別不斷的改變 業務系統不斷增加。日常維護 故障定位 事故處...