摘 要:萬維網與地理信息系統(GIS)的飛速發展,促進了網絡地理信息系統(WebGIS)的興起,Web2.0的出現,更使人們通過網絡對空間地理數據的互操作成為了可能。本文針對WebGIS目前所面臨的技術瓶頸,介紹了一種新興的、開放標準的、基于XML的文本式矢量圖形描述語言——SVG技術,并在此基礎上介紹了GML技術,分析了GML怎樣表示空間數據以及用SVG對其進行發布的優點。最后又介紹了XSLT技術,并結合一個具體的GML文檔實例,說明了如何運用XSLT實現GML到SVG的轉換。
關鍵詞:WebGIS,空間數據,XML,電子信息論文發表,SVG
1 概述
萬維網與地理信息系統(GIS)的飛速發展,促進了網絡地理信息系統(WebGIS)的興起,基于XML的SVG技術實現了圖形、圖像和文字的有機統一。GML為地理信息的互操作提供了一個很好的解決方案。這就為實現WebGIS功能提供了可能。
1.1 研究背景
Internet的飛速發展,促進了WebGIS的興起,使人們通過網絡獲取互操作異構地理數據成為了可能。WebGIS作為萬維網與GIS相結合的產物,是利用萬維網向用戶提供地理空間信息服務的地理信息系統。
SVG由于其具有開放性、文本性、可嵌入多媒體信息以及可加入交互、動畫等特點,文件較小、傳輸速度快、對客戶端的軟硬件要求不高,以其獨特的優勢,將是WebGIS適應“社會化GIS”的發展和要求、提高自身實際應用能力的關鍵技術。
1.2 研究現狀
目前,國外已經開發了許多SVG的編輯工具、瀏覽器和應用系統。更為重要的是,Netscape公司和Microsoft公司也己經開始進軍SVG領域,這標志著未來的網絡瀏覽器會內置對SVG文件的支持功能。國內在SVG的編輯、生成工具及應用系統方面都還處于起步階段。但也出現了SVG編輯生成工具,如方正畫苑可將設計結果輸出為SVG格式,輸出豐富的圖形、圖像和文字的設計效果。目前國內外對SVG在WebGIS中的應用研究正逐步深入,
2 GML與SVG技術
在WebGIS應用中,地圖數據的顯示一般采用兩種方式:柵格地圖或者矢量地圖。顯示柵格地圖,用戶不需安裝插件,但不能對圖像進行進一步的操作和交互。若要進行地圖縮放、平移和選擇等操作,則要傳遞鼠標的x,y坐標到服務器端處理,生成新的柵格圖像再傳遞到客戶端顯示。SVG是一種常用的且基于XML的矢量圖像標準,是一種基于XML描述可容納矢量圖形、點陣圖像和文本圖像的語言。
2.1 GML及其特點
地理標記語言(Geography Markup Language)GML是由Open GIS聯盟制定的基于XML對地理信息傳輸和存儲的編碼規范。利用GML可以存儲和發布各種特征的地理信息,并控制地理信息在Web瀏覽器中的顯示。
作為實現空間信息的共享與對異構空間信息進行集成以及開放式WebGIS的進一步發展的有力工具,GML有如下特點:
① GML基于文本表示地理信息。與XML編碼類似,也是用文本的方式進行地理信息表示。文本比較直觀,容易理解,編輯,檢查和轉換。
② GML對幾何特征及其屬性進行編碼。GML是基于OGC的地理信息抽象模型,即空間實體特征及屬性封裝。它用地理實體描述世界。地理特征(Feature)包括一系列的屬性和相應的幾何信息,一般來說屬性由名稱、類型和屬性值組成,幾何信息由基本的幾何建模體(如點、線、面、曲線、多邊形等)組成。GML可以對很復雜的地理實體進行編碼。
③ GML可對空間參考系統(SRS)進行編碼。空間參考系統是地理信息系統數據處理的基礎。GML封裝了空間地理參考系統及主要的投影關系等,確保了分布式處理的擴展性和靈活性。
④ GML可以實現地理數據的分布式存儲。GML對地理數據的分發是非常便捷的技術,同樣可以成為地理數據分布式存儲的重要手段,主要的技術工具是XLink和XPointer。
⑤ GML可以用公共工具進行瀏覽和編輯。
⑥ GML可以實現與非空間數據的集成
2.2 SVG的特點及其技術優勢
SVG作為網絡圖形新標準和XML的一種應用,隨著WebGIS技術的成熟,SVG可以在基于網絡的應用中與其他技術進行有機集成。具有以下特點:基于XML標準;矢量圖形和高質量的圖像;靈活易用的文件格式;支持交互性;支持Xlink和Xpointer;更好的擴展性;獨立性;開放性。
3 基于SVG的WebGIS體系結構
將SVG用于WebGIS,具有非常重要的意義:一方面對于眾多的非專業用戶,可方便地通過各種SVG創作編輯工具來組織、發布自己的空間信息,從而使地理信息資源和其他網上資源一樣,被整個社會方便地共享,以充分發揮其應有的價值;另一方面,由于SVG的交互動畫功能,據此產生的交互地圖,展現在客戶面前更具有表現力。
3.1 地理空間數據的SVG編碼
SVG定義了六種基本形狀,分別為圓、矩形、橢圓、線、折線和多邊形,這些基本形狀和路徑一起,可以組合成任意形狀的圖像,可以滿足GIS系統制圖的需要。
3.1.1 圓形(circle)
一個原點在坐標(100,100),半徑為30,以紅色為邊緣線,藍色填充的標準圓形。如圖3-1
3.1.2 矩形(rectangle)
指定了左上角點坐標(100,100),寬度為200,高度為100,以紅色為邊緣線,藍色填充的標準的矩形。如圖3-2
3.1.3 橢圓(ellipse)
指定了中心點坐標(150,100),x軸半徑長度為100,y軸半徑長度為50,以紅色為邊緣線,藍色填充的標準的橢圓。如圖3-3
3.1.4 線(line)
指定了起始點坐標(50,50),終點坐標(300,50)的紅色的標準的直線。如圖3-4
3.1.5 折線 (polyline)
指定了起始點坐標(50,100),中間折點坐標(100,150)終點坐標(250,50),以紅色表示線形的標準的折線。如圖3-5
3.1.6 多邊形 (polygon)
指定了起始點坐標(100,100),中間折點坐標分別(50,150),(200,250),(300,200),(230,170)終點坐標(250,50),以紅色表示邊緣線,以藍色填充的的標準的多邊形。如圖3-6
3.1.7 路徑(path)
指定了起始點坐標(208,128),中間路徑分別以C開頭為,以紅色表示邊緣線,以藍色填充的的標準的路徑。如圖3-7
3.2 系統體系結構
將GML和SVG應用在WebGIS中,主要的問題就是如何將GML轉化成SVG.。可以先將空間數據轉換成GML格式存儲,再通過XSLT將GML轉換為SVG。目前主流的瀏覽器IE還不支持SVG的顯示,所以要先在IE瀏覽器上安裝SVG圖像插件(如SVGViewer),從而實現失量圖形的顯示。
工作原理是客戶在瀏覽器中指定一個請求并發送,請求通過HTTP協議發出,Web服務器端收到請求后解析并創建一個SQL查詢,通過數據訪問接口把SQL查詢傳遞到SVG數據庫,數據庫執行查詢并把檢索到的數據動態轉換成相應的SVG格式和HTML格式的文件返回給客戶端,客戶端將文件顯示在頁面上由于客戶端接收的SVG是矢量數據,一些基本功能比如地圖圖層控制、查詢、縮放、漫游等可在客戶端進行,不需要頻繁地向服務器發送請求,極大地減少網絡數據傳輸量和服務器的負擔。
4 SVG技術在WebGIS的應用實現
現實中的圖形數據多以SHP格式或MIF之類的GIS軟件數據格式存儲,要充分利用這些數據,在生成SVG圖形時,我們就需要將這些數據轉換為SVG格式。由于SVG是采用文本語言描述的,所以先要將圖形數據裝換成GML格式,并根據GML文件編寫一套合適的XSLT樣式表,通過JAVA轉換程序最終將圖形數據轉化為SVG格式
4.1 XSLT技術簡介及其工作原理
XSLT(Extensible Stylesheet Language Transformations)即可擴展樣式表語言轉換,是一種用來轉換XML文檔結構的語言。它可以將一個XML文檔轉換成另一個XML文檔,還能把XML文檔轉換成HTML和許多其他基于文本的格式。
XSLT把XML文檔轉換成必需的輸出結果,這個過程一般包含兩個方面:首先是結構變換。在該變換中數據從傳入XML文檔的結構被轉換成反映所需輸出結果的結構,這是轉換中的主要的一步它可能涉及選擇數據、匯集這些數據、分類這些數據、或執行算術轉換等;其次是格式化,在該格式化中新結構按所需的格式得到輸出。XSLT依賴于XML語法分析器,無論是DOM語法分析器還是SAX語法分析器,它把XML文檔轉換成一個樹形結構。XSLT所操縱的正是文檔的這種樹形表示結構,而不是文檔本身。XSLT語言是說明性的,它只是描述所需的轉換,而并不是提供實現這個轉換的過程性指令系列。真正的轉換實現則依賴于XSLT處理器。
4.2 GML 幾何模型
空間幾何對象可以歸納為點,線和多邊形等幾種空間類型。GML通過Geometry schema定義了有關幾何基本的圖形元素,geometry.xsd提供了點(point),線(line),多邊形(polygon),點集(multipoint),線集(multiline)和多邊形集(multipolygon)等基本幾何圖形,甚至是復合類型(complextype)幾何圖形,都可以直接使用。
4.3 SHP文件到GML文件轉換
根據GML3.0規范中的Schema的描述和SHP文件的格式,就能將SHP文件轉換為GML文件。在轉換過程中,首先要創建一個GML格式文檔,添加GML描述信息,然后循環的將SHP文件中的地理信息元素轉換為GML中的幾何圖元。
這里以ESRI公司地理數據文件為例,其數據格式是Shapefile格式的。一個Shapefile文件包括一個主文件(SHP),存儲的是相同幾何類型的空間對象;一個索引文件(SHX),供主文件索引使用;一個dBASE文件(DBF),存儲的是相應空間對象的非空間屬性。我們可以先把這些文件用工具如Fme,ArcSDE或者編程將其導入支持空間操作的數據庫中,再由數據庫輸出GML文檔。當然也可以直接讀取文件產生GML文檔。但前者是建立WebGIS的通用作法。對于其它格式的地理數據,我們也同樣可以這樣做。下面的這個GML文檔 change.gml,是用程序從數據庫中輸出的。
4.4 GML到SVG的轉換
從GML到SVG的轉換需要進行坐標轉換和文檔映射兩部分工作。SVG提供了平移、旋轉、伸縮、矩陣變換等幾種坐標轉換方法。使用XSLT對GML文件轉換真正依賴的是XSLT轉換器。它們的轉換過程,首先是編輯GML和XSLT源文件change.gml和change.xslt,再利用JAVA轉換程序生成SVG文件。采用這種轉換方法的優點是:修改圖形時不需要修改SVG源文件,只需要修改GML文件。
4.4. XSLT樣式表
根據結構分析編寫了XSLT表,首先,對于面狀數據,將每次讀得的坐標串解析給元素path的屬性d繪制。但對于坐標串,起始點前加上M,而后的每一對坐標,前面加上L,最后的一對坐標的后面加上Z結束。利用XSLT中的concat函數經過這樣的處理后,再將整個坐標串賦給d。
對于點狀數據,則是將其在GML文檔中所包含的坐標串解析給SVG中的Circle元素,而x、y坐標則分別以變量的形式賦予Circle元素的cx和cy屬性,并為Circle元素的半徑r屬性賦一個較小的值,這就表示可以繪出點對象。
對于線狀數據,我可以采用和面狀數據一樣的方式將坐標串解析給元素的path屬性d繪制,我們所進行的轉換中只考慮了空間數據不考慮屬性數據,因為這里我們關心的只是最終的SVG圖。
4.4.2 轉換程序
本文用Eclipse進行JAVA程序的編寫以及運行,相比命令行編輯而言,集成開發環境Eclipse使用更簡潔有效,他可以直接進行編輯運行,并能提示編譯中的錯誤。有了XSLT樣式表change.xslt編譯好了的轉換程序trans.java,就可以根據GML 文檔change.gml生成相應的svg文件change.svg。最后在瀏覽器打開change.svg,便可以看到最終的SVG圖。
5 地圖交互功能實現
地圖控制是電子地圖最基本的功能,包括地圖顯示、地圖縮放、漫游、圖層控制、鷹眼漫游等功能,這些交互功能需要在客戶端完成。SVG本身提供了對DOM和Script的較完善的支持,因此可以使用Javascript編程來實現地圖的交互功能。
5.1縮放功能
Adobe的SVGViewer本身提供了圖形的縮放功能,但是要通過鼠標右鍵菜單才能實現,且功能較為單一,不直觀也不方便。我們設計一個界面用來實現對地圖的縮小、放大功能。放大、縮小、平移都是對整個SVG圖形對象進行操作。點擊地圖,獲取坐標值,以當前點擊的點為中心,利用currentScale變量進行圖形的放大和縮小變化。
5.2圖層控制
SVG采用基于XML的DOM文檔管理結構,很方便實現層次管理,其組對象就可以將所有圖形管理起來,一個組中存儲一個專題圖層,每個組都有一個唯一標志ID屬性,根據這個ID屬性就可以通過JavaScript控制圖層的顯示與否。
5.3 地圖漫游
地圖漫游功能,點擊界面中的地圖漫游按鈕,用鼠標在原圖上進行拖拽,可實現地圖的上下左右的定向漫游,在右側的小地圖上也可以看到拖拽后的漫游效果。
5.4 拉框縮放
拉框縮放功能的實現分為兩步:首先創建矩形對象,并把矩形元素加入到SVG對象中,鼠標移動時動態獲取矩形框的末坐標并劃線,實現跟隨鼠標移動拉框,然后根據拉框的大小和拉框矩形的中心點對地圖進行縮放和平移操作。
5.5 測量距離
當圖形中點的坐標捕獲到時,測量兩點之間的距離就很容易實現了,只需要編寫一個函數實現兩點之間距離的數學函數式,就可以得到圖形上的距離,如果要獲得地物之間的實際距離,還需要除以比例尺。
5.6 地圖復位
不管前面把地圖放大了多少倍,漫游到了地圖的任何一個小角落,都可以讓地圖回復到最原始的地圖大小狀態,將所有內容以適合的比例顯示到當前地圖窗口中。
5.7 鷹眼漫游
鷹眼功能就是實現鷹眼SVG對象和地圖SVG對象之間的聯動,關鍵點是判斷兩個SVG對象進行聯動的數學關系。在鷹眼中,地圖只是作為參考,是不移動的,移動的是紅線層。地圖進行移動、縮放等操作時,根據兩個地圖對象的數學關系進行聯動操作。
結論
GML和SVG是開發WebGIS的強有力的工具。將SVG和GML應用于WebGIS有利于地理空間信息的存儲、傳輸和發布,克服了一些原有WebGIS中存在的問題,如異構、分布空間數據的存儲及失量數據的傳輸和顯示等問題。GML可以實現異構空間數據的存儲,是解決網絡上多數據格式空間數據的一個有力方法,同時GML又實現了數據描述與表現的分離,GML可以只描述數據,表現方式可以通過其它方式實現,如SVG。SVG著重在于二維矢量圖形的表現,可以通過轉換將G M L存儲的信息清晰、完整的表現在瀏覽器上。兩者的結合使WebGIS的功能更加豐富,開發更加簡單,實現更加容易。
參考文獻
[1]MIT.LatestSVGFull[EB/OL].http://www.w3.org/TR/SVG12,2005:03.
[2] 劉興權,田磊,吳濤.SVG技術在WebGIS中的應用[J].地理空間信息,2009,7(2).
[3] 肖昕.SVG的發展與應用[J].計算機系統應用.2005,11:34~37.
[4] 李威.基于GML/SVG的WebGIS構建:[D].河南:河海大學地圖學地理信息系統,2007
[5] 簡友光,李巖基于SVG+GML的空間信息發布的方法研究[J].計算機與數字工程,2006,34(1)
[6] 許春杰,鄒樂君.SVG、GML在WebGIS中的應用[J].GIS技術,2002(3):38~42.
論文指導 >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >