趙志宇+呂維新+李士濤+王艷濤+陳仁星
[摘 要] 針對WEBGL技術(shù)規(guī)范、電力GIS系統(tǒng)的特點提出了一種新的三維場景數(shù)據(jù)格式,該格式有以下特點:對web環(huán)境友好、高可擴展性、支持多圖層、支持LOD、遵循REST API規(guī)范。
[關(guān)鍵詞] 對web環(huán)境友好;高可擴展性;LOD;多圖層 REST;API
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2016. 23. 085
[中圖分類號] G642.0 [文獻標識碼] A [文章編號] 1673 - 0194(2016)23- 0162- 04
0 概 述
隨著互聯(lián)網(wǎng)的發(fā)展、各大瀏覽器產(chǎn)商對WEBGL技術(shù)規(guī)范支持,在WEB瀏覽器上就可以實現(xiàn)三維場景交互,電力GIS系統(tǒng)也從傳統(tǒng)的三維地圖也從傳統(tǒng)的C/S模式逐步變成B/S模式,本文針對WEBGL技術(shù)規(guī)范、電力GIS系統(tǒng)的特點提出了一種新的三維場景數(shù)據(jù)格式,該格式有以下特點:
(1)對WEB環(huán)境友好,傳輸方便、可在瀏覽器端快速解碼、可按需請求資源;
(2)可擴展,可持續(xù)擴展,以便支持新的數(shù)據(jù)類型;
(3)支持多圖層;
(4)遵循REST API規(guī)范;
(5)LOD。
1 數(shù)據(jù)文件包含內(nèi)容
該格式的一份完整的數(shù)據(jù)包含了:元數(shù)據(jù)、圖層、矢量瓦片、地圖要素、符號等內(nèi)容以下為信息內(nèi)容。
(1)該格式的場景數(shù)據(jù)包含的元數(shù)據(jù)通過MetaInfo類來實現(xiàn),該類型包含屬性如表1所示。
通過以上屬性可以獲取初步獲得該文件包含的場景數(shù)據(jù)信息,版本號標識當前格式的版本,layers屬性為包含的圖層ID號數(shù)組,通過該值可以進一步獲取對應圖層的信息。
(2)場景包含的圖層通過Layer類來實現(xiàn),包含以下屬性如表2所示。
通過以上屬性可以獲得圖層的基本信息,其中最大、最小比例尺信息用來控制圖層的展示的比例尺范圍,xmin、ymin、xmax、ymax 描述了圖層在場景中的矩形邊界,CRS表示邊界坐標采用的坐標系,TileSize表示圖層瓦片的大小,為一個正方形區(qū)域,單位為像素,DPI表示分辨率。柵格瓦片是在地圖中最常用的一種瓦片格式,通過切換層級加載不同的瓦片來實現(xiàn)LOD,而本文中描述的數(shù)據(jù)格式使用矢量瓦片,矢量瓦片具有這樣的特點,地圖縮放時在客戶端實時繪制,不會隨地圖的縮放而失真,在不同比例尺下都可以使用同一張瓦片。因此本文描述的數(shù)據(jù)格式圖層只有一個層級,結(jié)合上述的圖層的屬性可以計算出各個瓦片的行、列號。瓦片通過以Tile類來實現(xiàn)。
(3)Tile類包含信息如表3所示。
瓦片在本文中描述的數(shù)據(jù)格式中的主要作用是快速獲取當前地圖所需要繪制的要素集合。根據(jù)當前地圖邊界信息調(diào)用WFS服務獲取要素的一個缺點是,服務器端需要動態(tài)的生成要素集合。而矢量瓦片由于確定了邊界可以實現(xiàn)預生成、緩存,從而大幅度降低對服務器的性能要求。
(4)要素通過Feature類來實現(xiàn),包含信息如表4所示。
Properties屬性值為鍵值對表,包含了要素的一系列信息,lod屬性描述了要素在不同比例尺下繪制時需要的信息。詳情見LOD類的設計,geometry屬性描述要素的地理空間信息。
(5)LOD類包含的信息如表5所示。
LOD技術(shù)在地圖繪制中起至關(guān)重要的作用,通常LOD切換分兩種,一種是在不同比例尺下繪制不同的要素,如CITYGML格式將要素進行了劃分,要素之間存在父子關(guān)系。另外一種是對同一要素使用高低模來繪制,本文采用后一種模式。前一種方式也可以通過控制不同圖層的比例尺范圍來實現(xiàn)。同一個要素可以根據(jù)上述的LOD列表,在不同比例尺范圍下使用不同的模型來繪制。
(6)繪制要素需要的符號通過Symbol類來實現(xiàn),該類包含信息如表6所示。
(7)符號需要的材質(zhì)資源、材質(zhì)對應的參數(shù)由Group類實現(xiàn),該類型包含信息如表7表示。
三維場景中需要的數(shù)據(jù)類型多種多樣,為了具有高擴展性符號通過接口來描述,符號數(shù)據(jù)通過Javascript函數(shù)統(tǒng)一獲取。在WEB瀏覽器端只要實現(xiàn)了對應的接口便可以支持新的數(shù)據(jù)類型。在電力GIS系統(tǒng)中,要素的幾何類型主要分為點和線兩種,桿塔、斷路器、變電站等設備的位置信息通過中心點所在的經(jīng)緯度、高程來描述。架空線、電力電纜、電器連接線的位置信息通過折線坐標來描述,繪制地圖所需的符號,對于不同的要素類型可以有不同的實現(xiàn)方式。
(1)直接模式:通過直接存儲頂點的坐標,這個方式適合復雜要素,如桿塔、開關(guān)等,數(shù)據(jù)可以通過建模軟件制作的模型轉(zhuǎn)換生成。
(2)間接模式:通過公式描述如貝塞爾曲線可以使用公式,引用此類型符號的要素通過調(diào)用函數(shù),從而間接動態(tài)生成頂點數(shù)據(jù),這個方法適合頂點坐標規(guī)律性比較強的要素,比如架空線,可以根據(jù)其物理特性、環(huán)境因素生成頂點信息,兩種模式都可以使用上述的接口。
以上各類的關(guān)系如圖1所示。
2 數(shù)據(jù)的訪問方法和返回格式
數(shù)據(jù)全部通過REST API獲取,設定以下訪問方式:
path/root,path為URL路徑,以下相同。
(1)path/root/metainfo/ 獲得場景數(shù)據(jù)的元數(shù)據(jù)按以JSON的格式返回格式如下,
{
name:服務名稱,
descriptions:描述,
layers:[0..n],
Vesion:1.0
}
(2)path/root/layer/0....n,通過上一步可以獲得場景包含的所有圖層ID,通過該節(jié)點則可以訪問對應ID的圖層信息,圖層信息按JSON格式返回,格式如下,
{
Layerid:n,
LayerName:”圖層名稱”,
LayerInfo:”xxx圖層,copyright....”,
Maxscale:N,//數(shù)值
Minscale:M,//數(shù)值
Vesion:1.0,
TileSize:512,
DPI:96,
CRS:EPSG:4326,
Basescale:X,//數(shù)值
xmin:a,
xmax:b,
ymin:c,
ymax:d,
}
(3)path/root/layer/n/row/col/ 通過上一個節(jié)點可以根據(jù)需要動態(tài)請求所需要的切片,其中n表示層級,row為行號,col 列號為非負整數(shù),以Google開源的protobuf 的數(shù)據(jù)格式進行編碼,該格式的特點是基于二進制,比傳統(tǒng)的XML表示同樣一段內(nèi)容要短小得多,效率比XML和JSON都高。由于protobuf文件格式可讀性差,因此以下以等價的JOSN格式說明,
{
count:n,//整數(shù)表示包含的要素總量
features:[
{id:m,properties:{“name1”:”value1”,...,“namen”:”valuen”},geometry:{type:”xxx”,coordinates:xxxx},lod:[
{symbolid:123,fromindex:0,toindex:1024,minSacle:10000,maxSacle:1000,id:1},
{symbolid:456,fromindex:0,toindex:2048,minSacle:1000,maxSacle:100,id:2},
{symbolid:789,fromindex:0,toindex:20480,minSacle:100,maxSacle:50,id:3},....
]}]}
(4)path/root/symbol/0....n 通過上一步的節(jié)點可以獲得切片內(nèi)部包含的要素,進而可以獲得繪制要素需要的符號資源,其中n為符號ID 非負整數(shù),返回Javascript腳本文件,該文件包含以下格式的函數(shù),
var gettype= function(){........},
var getPositions= function(){.....},
var getNormals=function(){....},
var getUV=function(){....},
var getGroups=function(){.....}
主要參考文獻
[1]聶曉旭,于鳳芹,欽道理 .基于Protobuf的數(shù)據(jù)傳輸協(xié)議[J].計算機系統(tǒng)應用,2015,24(8).
[2]王金峰,姚國清.三維模型文件中的OBJ格式在OpenGL中的輸入與處理[J].電腦知識與技術(shù),2011,7(4).
[3]John Congote, Alvaro Segura, Luis Kabongo,et al. Interactive Visualization of Volumetric Data with WebGL in Real-time[C]//Proceedings of the 16th International Conference on 3D Web Technology,NY,2011:137-146.