同濟大學軟件學院 潘 巖
矢量格式地圖的分塊研究
同濟大學軟件學院 潘 巖
針對矢量格式大規模的地圖文件加載效率極低的問題,結合矢量格式地圖圖形定義以及不規則圖形的特點,提出了一種分塊模型。以SVG格式文件作為例,通過對不規則圖形中Path元素數據的解析,定義了不規則圖形的劃分規則,動態實現對不規則圖形的分塊,依據定義好的規則來對不同的圖形完成分塊計算。通過實例驗證,該分塊模型是有效的,極大提高了大規模SVG地圖載入效率問題。
矢量;地圖;分塊
SVG(Scalable Vector Graphics,可縮放的矢量圖形)格式是W3C制定的一種新的用于描述二維矢量圖形格式,規范了網絡矢量圖形的標準,基于XML,嚴格遵從XML語法,是一種和圖像分辨率無關的矢量圖形格式,是一個開放的標準。
基于SVG格式的GIS系統相對于傳統的GIS系統具有巨大的優勢,它擺脫了傳統GIS系統中的數據庫支持,在地圖更新時,只需要通過XML文件來定義和擴展地理元素,不用復雜的數據庫操作,并且它只要一張SVG文件就可以適用于不同比例尺的表達,傳統的GIS系統都是通過光柵圖展示地圖的,地圖的分塊也是對光柵圖進行分割處理,不同比例尺的都需要對應的一套光柵圖,浪費存儲空間并且加載緩慢。
目前SVG應用于地理信息系統還未大規模適用于市場,很多工作還處于研究狀態中,國內外關于SVG格式地圖的分塊功能還沒任何研究,它包含了對SVG文件的解析以及對各類圖形元素的劃分,它不同于傳統的光柵圖,只要對像素點進行操作,SVG地圖文件需要將所有的圖形元素的屬性都分析并且按照規定的規則切割或重新組合。
定義1:path元素


M10 10L90 90C80 80 70 70 60 60
其中M為起點標識,(10,10)為起點坐標,L和C都是控制標識,(90,90)是L的后續控制序列,(80,80),(70,70), (60,60)是C的后續控制序列。定義2:SVG格式地圖塊
定義3:劃分規則
不規則圖形分塊算法以SVG格式地圖文件Q(N,L,W,S)為對象,其存儲方式為XML格式,首先根據前期工作中VTD解析模型,獲取地圖的相關屬性,按照步驟一計算出塊劃分,定義一個塊用數據結構G(n,l,w)表示,用一個二維數組存儲所有的網格。
在劃分模型的實現中,本文針首先對地圖文件Q的path元素進行解析,每一個path元素中d屬性定義了其起點信息和后續控制點信息,通過VTD算法遍歷地圖文件Q中所有path元素,對于每個path通過正則表達式(d=['"]?(。*?)['"])獲取其d屬性,按照本文的定義1獲取所有的坐標標識以及對應的后續坐標序列集合C(X,Y),存儲在一維數組中;然后定義隊列p作為臨時變量,用于存儲在發生劃分之前的曲線控制標識以及坐標集。遍歷控制標識以及后繼坐標數組,將當前控制標識放入p中,對對應的每個后續坐標計算所屬網格G,如果與前一個坐標所屬相同網格,那么將坐標放入p中;否則發生劃分,將坐標放入p中,根據定義1,不同控制標識后續坐標序列數量滿足N倍,N由控制標識決定,所以發生劃分之后,需要先根據坐標標識判斷隊列p中當前控制標識后續坐標數量是否滿足N倍,若不滿足則繼續遍歷坐標直至滿足N倍,并且將坐標放入p中,當前的隊列p中應該有多組控制標識以及對應的坐標序列,然后按照SVG格式中Path元素格式對當前的隊列生成一個path元素放入前一個網格中,保留原來path中的屬性,并清空p,將當前坐標作為起點放入p中,繼續下一個迭代。
遍歷完所有path之后,每個塊中都生成了很多新path片段,然后對每個塊中的新path片段集合生成一個SVG格式地圖文件的頭部和尾部,寫入到塊文件中。
遍歷完所有的塊之后,對所有的封閉圖形添加顏色屬性,再按照SVG格式寫入到塊文件中。
[1]Scalable Vector Graphics(SVG)1.2 Specification。http://www。 w3.org/TR/2004/WD-SVG12-2004-10-27/2004-10-27.
[2]Du Qingfeng,Xuefei。Specific timestamp image recovery algorithm research based on SVG incremental storage[C]:Proceedings of IEEE InternationalConference on Computer Science and Service System。Nanjing:[s。n。]。2010:4045-4048.
[3]Du Qingfeng,Guo Zhichao,Tang Xuebo。DiffS:Matching Algorithm to Different Version Maps Based on SVG[J]。Geomatics and Information Science of Wuhan University,2012,37(8):984-987.
[4]Du Qingfeng,Guo Zhichao,Tang Xuebo。DiffSvg-matching algorithm of different timestamp maps based on SVG[C]:IEEE International Conference on Computer Science and Service System,Nanjing:[s。n。]。2012:1-5.
[5]Du Qingfeng,Zhao Yanan。I-Diffs:Improved Matching Algorithm to Different Time Stamp Maps[J]。Journal of Tongji University(Natural Science),2013,41(10):1589-1585.