• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      SVG格式地理元素分層研究

      2014-06-16 15:51:54杜慶峰彭治平
      新媒體研究 2014年9期
      關(guān)鍵詞:土質(zhì)水系圖層

      杜慶峰+彭治平

      摘 要 提出了在SVG圖形文件上直接進行地理元素分層的思路,對SVG格式地圖分層進行了初步設(shè)計,提出了分層算法。經(jīng)驗證,算法是有效的。

      關(guān)鍵詞 SVG;GIS;地圖分層

      中圖分類號:TP3 文獻標識碼:A 文章編號:1671-7597(2014)09-0050-02

      Abctract: I propose an idea to classifygeologicalelements into layers on SVG/XML format maps, preliminarilydesign the way to classify, the algorithm. The application verification shows that the algorithm is effective.

      Key words: SVG; GIS; Geologicalelement layer

      我們認為地圖是由許多圖形元素疊加組成的,每一類的圖形元素都各具特點。將一些具有一定特征的圖形元素劃分在一起,就構(gòu)成了“層”的概念。常見的地圖圖層有:河流層、道路層、綠地層、河流層、建筑層、行政區(qū)規(guī)劃層等。圖層控制的意義就在于,通過控制地圖上元素可見性,在不同的縮放效果下,僅顯示所需的地理元素,使地圖顯得詳略得當。例如在一般WebGIS的地圖中,不同的放大比例下,所顯示的行政區(qū)劃級別會有所不同。在不同的縮放比例下,顯示不同的視圖,對不同的地理元素進行篩選顯示,可以使用戶能有更好的體驗。

      在GIS中,SVG作為一種圖像的表現(xiàn)手段越來越多被使用,但還并不普及;基于SVG信息存儲和共享交互則更是有待更多研究。圖像分層和地理元素查詢等功能上,國內(nèi)有大量研究成果。但國內(nèi)大多數(shù)研究和解決辦法仍是基于柵格等模型,SVG本身幾乎只被用于圖像表現(xiàn)。事實上SVG因其具有的優(yōu)勢,將其使用在GIS中更低的層級上是值得研究和考慮的。

      本文結(jié)合國家地理元素分層標準以及SVG本身的特點,在SVG本身這一更低的層級上對地圖分層,并驗證了分層效果。

      1元素的介紹

      在SVG的樹狀結(jié)構(gòu)中,元素的作用是,將一批特征類似的圖像元素集中到一起。這恰好便于對SVG地圖中的圖層進行管理。元素不是圖形元素,而是類似于一個容器。任意的圖形元素都可以放在同一個元素下,從而成為一組;同時可以通過在元素內(nèi)的ID屬性來標識圖層。元素的語法定義如下:

      style-attribute=”style-attribute”

      transform=”transformation commands”>

      <!-- groups content here -->

      元素本身不是圖形元素,也不會顯示出來,其樣式屬性會傳遞給它所有的直接子元素。SVG中每個元素都遵守CSS2的樣式繼承規(guī)則,即子元素的樣式繼承父元素的樣式,但在子元素中定義的樣式優(yōu)先級更高。此外,元素支持嵌套使用,即可以對一個組里的元素按照不同的特征在進行分組細分。

      元素作為圖層的分隔容器,元素的內(nèi)置ID值作為圖層的指示牌是在SVG中達到分層目的的基本方式。

      2 圖層分類規(guī)則及算法

      依據(jù)《基礎(chǔ)地理信息要素分類與代碼》中定義,地理元素可以分為定位基礎(chǔ)、水系、居民地及設(shè)施、交通、管線、境界與政區(qū)、地貌和植被等八大類,每個大類下各包含多個小類。例如定位基礎(chǔ)大類包含測量控制點和數(shù)學(xué)基礎(chǔ)兩小類;水系大類包含河流、溝渠、湖泊、水庫、海洋要素、其他水系要素、水利及附屬設(shè)施八小類等。

      由于名稱長短不一,為了方便查找和匹配,使用二進制代碼來代替復(fù)雜的英文字符名稱就方便的多。根據(jù)圖層的層級和個數(shù),我們采用八位二進制代碼來標識圖層,前四位(0000XXXX)標識一級圖層,后四位(XXXX0000)標識二級圖層。依據(jù)如此編碼,地圖中最多可包含十六種圖層大類,每個圖層大類下最多可包含十六種圖層小類,也就是說整個地圖最多可有二百五十六種圖層小類,完全可以滿足圖層分類的擴展需求。就以第二個大類水系及其以下的七個二級圖層為例,前四位編碼為0001,七個二級圖層的后四位編碼為0000至0110。具體表現(xiàn)如下:

      水系圖層

      河流圖層

      ……

      水利及附屬設(shè)施圖層

      ……

      SVG的本質(zhì)是XML,SVG和XML一樣是一種典型的層次樹狀結(jié)構(gòu),這種結(jié)構(gòu)的文檔,定位其某一個部分是比較容易的,因此控制也較容易。在SVG中,通過設(shè)置元素的Visibility屬性可以實現(xiàn)對于元素的顯示或隱藏。Visibility屬性有兩個值可供選擇:默認值visible代表顯示,而hidden代表隱藏。在SVG中,元素遵守CSS2的樣式繼承規(guī)則。因此,一般情況下,通過設(shè)置指定圖層根節(jié)點元素的Visibility屬性就可實現(xiàn)整個圖層的顯示或隱藏。但是,這種方法并不一定能保證整個圖層行動一致,因為在子元素中定義的樣式優(yōu)先級高于父元素,圖層中已經(jīng)預(yù)先定義了Visibility屬性的子元素將不受圖層根節(jié)點元素的Visibility屬性的控制。

      我們可以對這種特殊情況進行特殊處理,除了設(shè)置圖層根節(jié)點元素的Visibility屬性,再處理圖層中的所有事先定義了Visibility屬性的節(jié)點。針對兩種不同的情況,方法如下:

      Visibility=”visible”

      對于這種情況,需要在關(guān)閉圖層的時候,使Visibility屬性失效。而在打開圖層的時候,使visibility屬性值變回”visible”。

      Visibility=”hidden”

      對于這種情況,正常情況下是不顯示該元素的,故無論包含該元素的圖層是隱藏還是顯示狀態(tài),該元素均不顯示。

      整個地圖分層的偽代碼如下所示:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19 ProcedureLayer(layer name)

      INPUTlayer name: String

      Begin

      var TargetLayer = find_node_by_name(layer name)

      ifTargetLayer.Visibility=”visible”then

      TargetLayer. Visibility=”hidden”

      traverse TargetLayer in level-order sequence

      let M be the current unit

      IfM.hasAttribute(“Visibility”) and M.Visibility = “visible” then

      M.removeAttribute(“Visibility”)

      highlight_node(M)

      endif

      end-traverse

      endif

      else

      TargetLayer. Visibility=“visible”

      unhighlight_nodes_under_layer(TargetLayer)

      endif

      End

      3 分層算法的驗證測試

      地圖分層算法其基本思想是:利用SVG中的組元素進行分層,在已經(jīng)用元素分好層的SVG地圖中,通過修改節(jié)點的Visibility屬性值實現(xiàn)地圖的分層顯示。初步實現(xiàn)后,需要對通常情況的分層進行測試,然后對本文提出的特殊情況(元素下包含預(yù)先定義過visibility屬性的節(jié)點)進行測試。

      通過以上分析,我們準備了兩組數(shù)據(jù),分別為Rects組、Circles組和Texts組,每組中包含三個對應(yīng)的SVG元素。我們在Circles組和Texts組中,預(yù)先設(shè)定了元素的Visibility

      圖1 分層驗證測試文件的顯示

      屬性。通過Rects組可以對通常情況進行測試,通過Circles組可以對特殊情況進行測試。通過Texts組對這兩種情況進行綜合測試。

      通過以上分析,我們準備也測試數(shù)據(jù),包含水系(包含河流)、交通(包含城市道路和鄉(xiāng)村交道路)、植被與土質(zhì)(包含城市綠地)三大圖層。且對城市道路中的第一條道路沒有預(yù)設(shè)“visibility”值,而第四條道路的visibility=”hidden” ,除此之外的所有圖形元素都預(yù)設(shè)visibility=”visible” 。

      首先,需要將測試的SVG文件導(dǎo)入到Web瀏覽器中進行顯示。該測試文件在瀏覽器中顯示如圖1所示。圖中共有三個圖層,包括水系層、植被和土質(zhì)層以及交通層。由于城市道路層的第四個元素的Visibility屬性為hidden,所以在這里沒有顯示該元素。圖形上方的復(fù)選框用于操作圖層的開關(guān)。

      然后,通過點擊水系復(fù)選框來隱藏水系層,測試結(jié)果如圖2所示。與圖1比較后,可以看出,水系層消失了。

      圖2 隱藏水系層的結(jié)果

      接著,通過點擊復(fù)選框水系來顯示水系層,點擊植被與土質(zhì)來隱藏植被和土質(zhì)層,測試結(jié)果如圖3所示。從圖中可以看出,原先的河流又出現(xiàn)了,而植被和土質(zhì)層的綠地則均被隱藏了。

      圖3 隱藏植被和土質(zhì)層的結(jié)果

      4 結(jié)論

      通過以上測試結(jié)果可以看出,本文提出的分層顯示算法是可行的。對于普通情況,只要修改組元素的visibility屬性便能達到隱藏和顯示圖層的效果。對于預(yù)定義visibility屬性的特殊情況,也可通過遍歷修改子元素的visibility屬性進行顯示與隱藏圖層。

      參考文獻

      [1]Sun Teng-Da, Wang Jin-Feng,2007,A Traffic Cellular Automata Model Based on Road Network Grids and Its Spatial & Temporal Resolution's Influences on Simulation, Simulation Modeling Practice and Theory,DOI: 10.1016/j.simpat.

      [2]Steven J.Vaughan-Nichols.Will Vector Graphics Finally Make It on the Web7.IEEEComputer,2001,34(12):22-24.

      [3]http://www.w3school.com.cn/svg/.

      [4]唐學(xué)波.基于SVG的時空GIS文件系統(tǒng)增量更新存儲機制研究[D].上海:同濟大學(xué),2009.

      [5]Liang JZ. Using SVG Technique to Organize and Display Data of Embedded GIS, 2009 5TH INTERNATIONAL CONFERENCE ON WIRELESS COMMUNICATIONS, NETWORKING AND MOBILE COMPUTING, VOLS: 1-8, p: 5375-5377,2009.

      [6]鄔倫,劉瑜,張晶,等.地理信息系統(tǒng)—原理、方法和應(yīng)用[M].科學(xué)出版社,2008.

      Visibility=”visible”

      對于這種情況,需要在關(guān)閉圖層的時候,使Visibility屬性失效。而在打開圖層的時候,使visibility屬性值變回”visible”。

      Visibility=”hidden”

      對于這種情況,正常情況下是不顯示該元素的,故無論包含該元素的圖層是隱藏還是顯示狀態(tài),該元素均不顯示。

      整個地圖分層的偽代碼如下所示:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19 ProcedureLayer(layer name)

      INPUTlayer name: String

      Begin

      var TargetLayer = find_node_by_name(layer name)

      ifTargetLayer.Visibility=”visible”then

      TargetLayer. Visibility=”hidden”

      traverse TargetLayer in level-order sequence

      let M be the current unit

      IfM.hasAttribute(“Visibility”) and M.Visibility = “visible” then

      M.removeAttribute(“Visibility”)

      highlight_node(M)

      endif

      end-traverse

      endif

      else

      TargetLayer. Visibility=“visible”

      unhighlight_nodes_under_layer(TargetLayer)

      endif

      End

      3 分層算法的驗證測試

      地圖分層算法其基本思想是:利用SVG中的組元素進行分層,在已經(jīng)用元素分好層的SVG地圖中,通過修改節(jié)點的Visibility屬性值實現(xiàn)地圖的分層顯示。初步實現(xiàn)后,需要對通常情況的分層進行測試,然后對本文提出的特殊情況(元素下包含預(yù)先定義過visibility屬性的節(jié)點)進行測試。

      通過以上分析,我們準備了兩組數(shù)據(jù),分別為Rects組、Circles組和Texts組,每組中包含三個對應(yīng)的SVG元素。我們在Circles組和Texts組中,預(yù)先設(shè)定了元素的Visibility

      圖1 分層驗證測試文件的顯示

      屬性。通過Rects組可以對通常情況進行測試,通過Circles組可以對特殊情況進行測試。通過Texts組對這兩種情況進行綜合測試。

      通過以上分析,我們準備也測試數(shù)據(jù),包含水系(包含河流)、交通(包含城市道路和鄉(xiāng)村交道路)、植被與土質(zhì)(包含城市綠地)三大圖層。且對城市道路中的第一條道路沒有預(yù)設(shè)“visibility”值,而第四條道路的visibility=”hidden” ,除此之外的所有圖形元素都預(yù)設(shè)visibility=”visible” 。

      首先,需要將測試的SVG文件導(dǎo)入到Web瀏覽器中進行顯示。該測試文件在瀏覽器中顯示如圖1所示。圖中共有三個圖層,包括水系層、植被和土質(zhì)層以及交通層。由于城市道路層的第四個元素的Visibility屬性為hidden,所以在這里沒有顯示該元素。圖形上方的復(fù)選框用于操作圖層的開關(guān)。

      然后,通過點擊水系復(fù)選框來隱藏水系層,測試結(jié)果如圖2所示。與圖1比較后,可以看出,水系層消失了。

      圖2 隱藏水系層的結(jié)果

      接著,通過點擊復(fù)選框水系來顯示水系層,點擊植被與土質(zhì)來隱藏植被和土質(zhì)層,測試結(jié)果如圖3所示。從圖中可以看出,原先的河流又出現(xiàn)了,而植被和土質(zhì)層的綠地則均被隱藏了。

      圖3 隱藏植被和土質(zhì)層的結(jié)果

      4 結(jié)論

      通過以上測試結(jié)果可以看出,本文提出的分層顯示算法是可行的。對于普通情況,只要修改組元素的visibility屬性便能達到隱藏和顯示圖層的效果。對于預(yù)定義visibility屬性的特殊情況,也可通過遍歷修改子元素的visibility屬性進行顯示與隱藏圖層。

      參考文獻

      [1]Sun Teng-Da, Wang Jin-Feng,2007,A Traffic Cellular Automata Model Based on Road Network Grids and Its Spatial & Temporal Resolution's Influences on Simulation, Simulation Modeling Practice and Theory,DOI: 10.1016/j.simpat.

      [2]Steven J.Vaughan-Nichols.Will Vector Graphics Finally Make It on the Web7.IEEEComputer,2001,34(12):22-24.

      [3]http://www.w3school.com.cn/svg/.

      [4]唐學(xué)波.基于SVG的時空GIS文件系統(tǒng)增量更新存儲機制研究[D].上海:同濟大學(xué),2009.

      [5]Liang JZ. Using SVG Technique to Organize and Display Data of Embedded GIS, 2009 5TH INTERNATIONAL CONFERENCE ON WIRELESS COMMUNICATIONS, NETWORKING AND MOBILE COMPUTING, VOLS: 1-8, p: 5375-5377,2009.

      [6]鄔倫,劉瑜,張晶,等.地理信息系統(tǒng)—原理、方法和應(yīng)用[M].科學(xué)出版社,2008.

      Visibility=”visible”

      對于這種情況,需要在關(guān)閉圖層的時候,使Visibility屬性失效。而在打開圖層的時候,使visibility屬性值變回”visible”。

      Visibility=”hidden”

      對于這種情況,正常情況下是不顯示該元素的,故無論包含該元素的圖層是隱藏還是顯示狀態(tài),該元素均不顯示。

      整個地圖分層的偽代碼如下所示:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19 ProcedureLayer(layer name)

      INPUTlayer name: String

      Begin

      var TargetLayer = find_node_by_name(layer name)

      ifTargetLayer.Visibility=”visible”then

      TargetLayer. Visibility=”hidden”

      traverse TargetLayer in level-order sequence

      let M be the current unit

      IfM.hasAttribute(“Visibility”) and M.Visibility = “visible” then

      M.removeAttribute(“Visibility”)

      highlight_node(M)

      endif

      end-traverse

      endif

      else

      TargetLayer. Visibility=“visible”

      unhighlight_nodes_under_layer(TargetLayer)

      endif

      End

      3 分層算法的驗證測試

      地圖分層算法其基本思想是:利用SVG中的組元素進行分層,在已經(jīng)用元素分好層的SVG地圖中,通過修改節(jié)點的Visibility屬性值實現(xiàn)地圖的分層顯示。初步實現(xiàn)后,需要對通常情況的分層進行測試,然后對本文提出的特殊情況(元素下包含預(yù)先定義過visibility屬性的節(jié)點)進行測試。

      通過以上分析,我們準備了兩組數(shù)據(jù),分別為Rects組、Circles組和Texts組,每組中包含三個對應(yīng)的SVG元素。我們在Circles組和Texts組中,預(yù)先設(shè)定了元素的Visibility

      圖1 分層驗證測試文件的顯示

      屬性。通過Rects組可以對通常情況進行測試,通過Circles組可以對特殊情況進行測試。通過Texts組對這兩種情況進行綜合測試。

      通過以上分析,我們準備也測試數(shù)據(jù),包含水系(包含河流)、交通(包含城市道路和鄉(xiāng)村交道路)、植被與土質(zhì)(包含城市綠地)三大圖層。且對城市道路中的第一條道路沒有預(yù)設(shè)“visibility”值,而第四條道路的visibility=”hidden” ,除此之外的所有圖形元素都預(yù)設(shè)visibility=”visible” 。

      首先,需要將測試的SVG文件導(dǎo)入到Web瀏覽器中進行顯示。該測試文件在瀏覽器中顯示如圖1所示。圖中共有三個圖層,包括水系層、植被和土質(zhì)層以及交通層。由于城市道路層的第四個元素的Visibility屬性為hidden,所以在這里沒有顯示該元素。圖形上方的復(fù)選框用于操作圖層的開關(guān)。

      然后,通過點擊水系復(fù)選框來隱藏水系層,測試結(jié)果如圖2所示。與圖1比較后,可以看出,水系層消失了。

      圖2 隱藏水系層的結(jié)果

      接著,通過點擊復(fù)選框水系來顯示水系層,點擊植被與土質(zhì)來隱藏植被和土質(zhì)層,測試結(jié)果如圖3所示。從圖中可以看出,原先的河流又出現(xiàn)了,而植被和土質(zhì)層的綠地則均被隱藏了。

      圖3 隱藏植被和土質(zhì)層的結(jié)果

      4 結(jié)論

      通過以上測試結(jié)果可以看出,本文提出的分層顯示算法是可行的。對于普通情況,只要修改組元素的visibility屬性便能達到隱藏和顯示圖層的效果。對于預(yù)定義visibility屬性的特殊情況,也可通過遍歷修改子元素的visibility屬性進行顯示與隱藏圖層。

      參考文獻

      [1]Sun Teng-Da, Wang Jin-Feng,2007,A Traffic Cellular Automata Model Based on Road Network Grids and Its Spatial & Temporal Resolution's Influences on Simulation, Simulation Modeling Practice and Theory,DOI: 10.1016/j.simpat.

      [2]Steven J.Vaughan-Nichols.Will Vector Graphics Finally Make It on the Web7.IEEEComputer,2001,34(12):22-24.

      [3]http://www.w3school.com.cn/svg/.

      [4]唐學(xué)波.基于SVG的時空GIS文件系統(tǒng)增量更新存儲機制研究[D].上海:同濟大學(xué),2009.

      [5]Liang JZ. Using SVG Technique to Organize and Display Data of Embedded GIS, 2009 5TH INTERNATIONAL CONFERENCE ON WIRELESS COMMUNICATIONS, NETWORKING AND MOBILE COMPUTING, VOLS: 1-8, p: 5375-5377,2009.

      [6]鄔倫,劉瑜,張晶,等.地理信息系統(tǒng)—原理、方法和應(yīng)用[M].科學(xué)出版社,2008.

      猜你喜歡
      土質(zhì)水系圖層
      鄱陽湖水系之潦河
      環(huán)水系旅游方案打造探析——以臨沂市開發(fā)區(qū)水系為例
      高含鐵大比重土質(zhì)對泥漿配比的影響
      水系魔法之止水術(shù)
      巧用混合圖層 制作抽象動感森林
      凍融循環(huán)作用下土質(zhì)河堤的穩(wěn)定性分析
      土質(zhì)文物鹽害中硫酸鈉的研究——從微觀到宏觀
      圖層法在地理區(qū)域圖讀圖中的應(yīng)用
      環(huán)境友好的CLEAN THROUGH水系洗滌劑
      溯源侵蝕作用下昔格達地層土質(zhì)邊坡的穩(wěn)定性
      广丰县| 龙胜| 廊坊市| 富阳市| 婺源县| 花莲县| 新龙县| 定兴县| 炎陵县| 吉木乃县| 石门县| 河北省| 古丈县| 合水县| 金坛市| 昭通市| 盖州市| 通城县| 嘉兴市| 绥滨县| 玉山县| 仪征市| 金乡县| 廉江市| 贵德县| 新晃| 婺源县| 崇文区| 固始县| 宁安市| 贞丰县| 濮阳县| 哈尔滨市| 孟连| 微山县| 康马县| 泸西县| 云梦县| 韶关市| 罗江县| 仙游县|