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