亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

基于Asp.net、SVG技術(shù)的WebGIS研究與實現(xiàn)

系統(tǒng) 2647 0

摘 要 本文在分析了用SVG表示地理空間信息的特點后,將SVG應(yīng)用到WebGIS中,系統(tǒng)研究的主要內(nèi)容是使用Asp.net、SVG技術(shù),結(jié)合SQL Server后臺數(shù)據(jù)庫 技術(shù) 動態(tài)的生成SVG圖形;利用腳本語言Javascrīpt和DOM技術(shù),很好的實現(xiàn)了地圖的縮放、平移和還原、圖層的控制等WebGIS客戶端功能。

關(guān)鍵詞 Asp.net; SVG; Javascrīpt; DOM; WebGIS


1 引言

WebGIS是 Internet 與GIS的結(jié)合產(chǎn)物,也是GIS研究的一個重要方向。然而,在Web上發(fā)布信息量巨大的地理空間信息(主要是以圖形圖像的方式)必將導(dǎo)致Internet網(wǎng)絡(luò)傳輸速度降低,而短小靈活的矢量圖形是緩解這個困境的有效手段。SVG就是一種基于 XML 的 矢量圖形格式,由于它能良好的將矢量圖形展現(xiàn)在Web上,因而SVG可以成為GIS很好的網(wǎng)絡(luò)載體。過去大部分學(xué)者是將svg文件以文本的形式放在客戶端 的, 當(dāng)圖形比較復(fù)雜時,這對客戶端的要求就比較高;本文采用SQL Server數(shù)據(jù)庫存儲SVG圖形數(shù)據(jù), 利用Asp.net調(diào)用后臺數(shù)據(jù)庫動態(tài)生成SVG圖形,降低了客戶端的要求, 再使用腳本語言Javascrīpt和DOM技術(shù)實現(xiàn)圖形的客戶端動態(tài)交互,取得了良好的效果.

2 SVG表示地理空間信息

SVG 是一種文本性的描述語言,提供了17 類80 多種元素,涉及基本圖形、文字、圖像的顯示,以及圖形元素動畫、超鏈接、顏色漸變、透明效果、濾鏡效果等諸多方面 。因此完全可以利用SVG 來表現(xiàn)地理數(shù)據(jù)的空間信息和屬性信息,其中空間信息按其幾何形態(tài)用點 對象 、線對象、區(qū)域?qū)ο蠛妥⒂泴ο髞斫M織 ,而屬性信息可用內(nèi)嵌法和外聯(lián)法兩種編碼來描述。

2.1 點對象

對于點的表示可以采用填充顏色的圓或矩形,如:
<circle id="point" cx="50" cy="50" r="3" style=”fill: blue” />
以上 代碼 表示以點(50,50)為圓心,半徑為3的藍色實心圓,”point”是用于標(biāo)識這個點。

2.2 線對象

將兩個點連接起來就可以表示一條線,如:
<line id=”line” x1="0" y1="150" x2="400" y2="150" stroke-width="2" stroke="blue"/>
這條代碼表示連接點(0,150)與點(400,150)之間的一條線,這條線的寬度是2,顏色是藍色,line是標(biāo)識這條線的。

2.3 區(qū)域?qū)ο?

可以用path或polygon表示,如:
<polygon points="350,75 379,175 355,175 355,200 345,200,345,175 321,175" style=”fill: blue”/>
代碼表示節(jié)點為(350,75)(379,175)(335,175)(335,200)(345,175)(321,175)的多邊形,填充顏色是藍色。

2.4 注記對象

可以用text表示屬性數(shù)據(jù),如:
<text id="text1" x="30" y="30">中國</text>
上述代碼將在瀏覽器頁面上的點(30,30)處輸出文本“中國”,“text1”用于標(biāo)識這個注記。如圖1所示:

圖1 SVG表示的點、線、區(qū)域和注記

2.5 屬性數(shù)據(jù)

對于屬性數(shù)據(jù)可采用內(nèi)嵌法和外聯(lián)法兩種編碼 方法 內(nèi) 嵌法是指將所關(guān)聯(lián)的屬性數(shù)據(jù)與幾何數(shù)據(jù)放在同一個地物分組元素中,由于SVG未提供對屬性數(shù)據(jù)的描述標(biāo)記,因此在這里自定義一個< GeoAttribute>元素來標(biāo)記屬性數(shù)據(jù),各屬性項作為<GeoAttribute>元素的子元素依次列出。由于< GeoAttribute>元素是一個自定義元素,因此一般的SVG文檔瀏覽器(如Adobe的SVG View插件)不會對該元素進行處理,當(dāng)然對于非常簡單的屬性可以直接利用<desc>元素表示。
外聯(lián)法是指屬性數(shù)據(jù)通過地物標(biāo)識號存儲在外部數(shù)據(jù)庫中,為此,地物標(biāo)識號需要進行進一步的約定,即 地物標(biāo)識號除了以“F”開始外,還包含地物類別號和目標(biāo)標(biāo)識號,其中,通過地物類別號可確定與該類地物對應(yīng)的屬性關(guān)系表,而通過目標(biāo)標(biāo)識號來定位屬性表中 的記錄號。此外,也可直接通過超連接,將屬性數(shù)據(jù)頁面(通過ASP.net技術(shù)動態(tài)生成)與幾何數(shù)據(jù)聯(lián)系起來。

3 基于SVG的WebGIS設(shè)計模式

WebGIS的實現(xiàn)模型到目前主要有三種:①基于客戶端;②基于服務(wù)器端;③基于服務(wù)器/客戶端的混合模式。 其中第三種模式集成了前面兩種模式的優(yōu)點,是目前比較流行的模式 。同理,基于SVG的WebGIS也逃不過這三種模式,一般采用B/S三層體系結(jié)構(gòu),如圖2所示:

圖2 基于SVG技術(shù)的WebGIS的體系結(jié)構(gòu)


首先,客戶在瀏覽器中選擇一些需要查詢的數(shù)據(jù),并向服務(wù)器端發(fā)出請求,該請求通過HTTP協(xié)議傳送到服務(wù)器端。服務(wù)器端收到了請求后,就通過數(shù)據(jù)訪問接口去訪問相關(guān)的數(shù)據(jù)庫,并把從數(shù)據(jù)庫中檢索到的數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的XML格式、SVG格式和 HTML 格 式的文件返回給客戶端,這些功能都是由Asp.net技術(shù)來完成的。對于地圖圖層控制、縮放、漫游等各種相對簡單的GIS功能放在客戶端操作,通過DOM 和Javascrīpt進行開發(fā),Web服務(wù)器只用于給客戶提供數(shù)據(jù),這些數(shù)據(jù)被保存到客戶端,這樣就不需要每次處理時都訪問服務(wù)器,極大地減少了網(wǎng)絡(luò)數(shù) 據(jù)傳輸量和服務(wù)器的負(fù)擔(dān)。客戶也可以對原始數(shù)據(jù)進行分析、提取數(shù)據(jù)、解析。而對于一些復(fù)雜的操作如空間分析、圖層編輯等,則需要與服務(wù)器進行交互實現(xiàn)。中 間件主要完成SVG/XML數(shù)據(jù)模式和傳統(tǒng)的DBMS的數(shù)據(jù)庫模式間轉(zhuǎn)換 工作 。

4 實例

該系統(tǒng)采用SQL Server存儲SVG圖形數(shù)據(jù),利用Asp.net調(diào)用后臺數(shù)據(jù)庫動態(tài)生成SVG圖形,再使用腳本語言Javascrīpt和DOM技術(shù)實現(xiàn)圖形的動態(tài)交互,圖3是系統(tǒng)的主界面。

4.1 地圖的縮放、平移和還原

在SV G 中, 通過修改SV G 根元素的view box 屬性, 可以改變地圖的顯示范圍。view box 的屬性由4個參數(shù)組成, 前2 個表示顯示范圍里最小點的X 坐標(biāo)和Y 坐標(biāo), 即顯示范圍的頂點,后2 個表示從該點開始, 橫、縱方向上分別前進多少個坐標(biāo)單位, 以構(gòu)成整個顯示范圍。例如, view box= "0 0 100 100" , 表示顯示范圍是從(0, 0) 點開始, 窗口長為100 個坐標(biāo)單位,寬為100 個坐標(biāo)單位。進行基本地圖操作時,均可以通過操作view box 得到理想的結(jié)果。地圖縮放時將后2 個參數(shù)分別乘以(除以) 某個倍數(shù)就可以得到縮放后的窗口大小; 地圖平移時, 后2 個參數(shù)不變, 修改前2 個參數(shù), 指定新的起點坐標(biāo)即可。地圖復(fù)位時, 將view box 恢復(fù)為原始值即可完成復(fù)位操作。下面是地圖還原功能的代碼:
function OriginView()
{
RecordViewBox();
var docSVG = document.HUNNUWebGIS_SVG.getSVGDocu ment();
var eSVG = docSVG.getDocumentElement();
var ōriginView = "0 0 600 500";
eSVG.setAttribute("viewBox",originView);

4.2 圖層的控制

由于在SVG地圖瀏覽器中所操作的SVG地圖是以分層的方式進行組織的,在該數(shù)據(jù)組織模式中,屬于 一個圖層的地理特征數(shù)據(jù)組織在同一個分組元素下,且該分組元素的ID屬性設(shè)置為圖層的名稱,這樣對圖層的顯示控制就比較容易。首先通過圖層名稱在SVG DOM樹中找到對應(yīng)的分組元素,然后將該元素的style屬性值設(shè)置為'display:none或display:inline,即可達到對圖層的關(guān)閉 與顯示,如圖4所示。
function hilite_elem(checkbox, element_name){
var svgobj = document.embeds['HUNNUWebGIS_SVG']. getSVGDocument().getElementById(element_name);
if (!checkbox.checked){
// 隱藏圖層.
svgobj.setAttributeNS(null,'style', 'display:none;fill-rule:evenodd');
} else {
// 顯示圖層.
svgobj.setAttributeNS(null,'style', 'display:inline;fill-rule:evenodd');
}
}


圖3 系統(tǒng)的主界面


4.3 簡單的屬性查詢

由于每一塊圖形區(qū)域都是用<path>路徑表示的,可以在<path>中加入onclick事件,再用javascrīpt語言編寫onclick事件代碼。當(dāng)用鼠標(biāo)單擊圖形區(qū)域時,就會彈出一個對話框,顯示該區(qū)域的屬性信息,如圖5所示。


圖4 城市區(qū)域圖層隱藏效果 圖5 屬性查詢


4.4 坐標(biāo)的顯示

在每個<g>圖層中加入onmousemove="changeText(evt)",通過javascrīpt編寫changeText(evt)函數(shù),從而實現(xiàn)圖形坐標(biāo)的顯示。
function changeText(evt)
{
targetXtext=svgDocument.getElementById("XPos");
targetYtext=svgDocument.getElementById("YPos");
var XPos = evt.getClientX();
var YPos = evt.getClientY();
var newXPosText = svgDocument.createTextNode("X 坐標(biāo) : " + XPos);
var newYPosText = svgDocument.createTextNode("Y 坐標(biāo) : " + YPos);
targetXtext.replaceChild(newXPosText,targetXtext.getFirstChild());
targetYtext.replaceChild(newYPosText,targetYtext.getFirstChild());
}

4.5 測量距離

當(dāng)圖形中點的坐標(biāo)捕獲到時,測量兩點之間的距離就很容易實現(xiàn)了,只需要編寫一個函數(shù)實現(xiàn)兩點之間距離的數(shù)學(xué)函數(shù)式: ,此時得到的距離是只是圖形上的距離,如果要獲得地物之間的實際距離,還需要除以比例尺。

5 結(jié)語

系統(tǒng)使用Asp.net、SVG技術(shù),結(jié)合SQL Server后臺數(shù)據(jù)庫技術(shù)動態(tài)的生成SVG圖形;利用SVG、Javascrīpt和DOM技術(shù)很好實現(xiàn)了WebGIS客戶端功能,結(jié)果表明該方法是可 行的.對于更復(fù)雜的GIS功能實現(xiàn),如空間分析、圖形編輯等將是筆者以后進一步研究的方向。

參考文獻

[1] 劉嘯,畢永年.基于XML的SVG應(yīng)用指南[Z].北京科海集團公司,2001,10—12
[2] W 3C. Scalable Vector Graphics 1.1 Specification.
http: //www. w3. org/T R/2003/R EC -SVG11- 20030114/,2003
[3] 宋國民,蔣敏等.基于SVG的地理信息可視化表達及網(wǎng)絡(luò)發(fā)布的研究[J].信息仿真學(xué)報,2006,18(增刊1):301
[4] 馮艷杰.基于SVG的WebGIS實現(xiàn)技術(shù)[D].武漢:武漢大學(xué),2005
[5] 史同廣,張子民等.WebGIS實現(xiàn)模式及其技術(shù)評價[J].山東建筑工程學(xué)院學(xué)報,2005,20(1):92
收稿日期:5月18日 修訂日期:5月23日
作者簡介: 鄧曉斌(1983—),男,江西鷹潭人,碩士研究生,主要研究方向:WebGIS

基于Asp.net、SVG技術(shù)的WebGIS研究與實現(xiàn)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产午夜精品一区二区三区嫩草 | 亚洲国产成人在线观看 | 色综合小说天天综合网 | 欧美一级毛片免费看视频 | 亚洲精品乱码久久久久久v 亚洲精品乱码久久久久久麻豆 | 久久久穴 | 亚洲欧美国产日产综合不卡 | 久久草在线视频 | 国产一区二区精品久久小说 | 中文字幕国产在线观看 | 公主恋人在线观看 | 欧美日韩亚 | 人人操天天射 | 国产高清在线精品一区免费97 | 视频在线观看91 | 69国产成人综合久久精品91 | 尹人久久 | 福利视频999 | 中文乱码在线观看 | 国产一区二区三区不卡观 | 欧美视频a| 夜色成人免费观看 | 欧美成人中文字幕dvd | 久久美女性网 | 理论片黄色 | 伊人久久综合视频 | 国产精品乱码在线观看 | 日本爱爱片 | 久久99国产精品久久欧美 | h视频日本 | 天天摸天天操天天干 | 国产一级二级三级 | 日韩一级欧美一级毛片在线 | 亚洲人成依人成综合网 | 一区二区三区精品视频 | 午夜免费体验区 | 亚洲综合五月天 | 色综合成人| 97影院午夜午夜伦不卡 | 狠狠色丁香婷婷久久综合不卡 | 久久亚洲精品专区蓝色区 |