国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

GeoServer瓦片緩存機(jī)制研究

2011-06-12 08:55:18陽華劉振宇許文明
關(guān)鍵詞:矢量圖瓦片金字塔

陽華 劉振宇 許文明

南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 湖南 421001

0 引言

GeoWebCache通過存儲(緩存)地圖圖片或瓦片,當(dāng)它們被請求時,GeoWebCache致力于充當(dāng)客戶端(OpenLayer或Google Maps)服務(wù)端(GeoServer或其他WMS服務(wù))間的代理。GeoWebCache(GWC)是一個采用Java實(shí)現(xiàn)用于緩存WMS(eb Map Service)Tile的開源項(xiàng)目。當(dāng)?shù)貓D客戶端請求一張新地圖和Tile時,GeoWebCache將攔截這些調(diào)用然后返回緩存過的Tiles。如果找不到緩存再調(diào)用服務(wù)器上的Tiles,從而提高地圖展示的速度,實(shí)現(xiàn)更好的用戶體驗(yàn)。如圖1所示,服務(wù)器中藍(lán)色的柱體就是瓦片的倉庫。事實(shí)上,我們只需直接請求瓦片倉庫而不需要咨詢WMS服務(wù),就可以拼湊出龐大的地圖,因?yàn)镚eoWebCache每秒鐘可以應(yīng)答成百上千的請求。

圖1 eoWebCache在架構(gòu)中所處的位置

1 實(shí)現(xiàn)的關(guān)鍵技術(shù)

1.1 金字塔模型

對于Web而言,將矢量圖層渲染為柵格數(shù)據(jù)是一個昂貴的計(jì)算過程。如果矢量圖層并不是經(jīng)常修改,這樣一次次重復(fù)描繪同樣的線條就是在浪費(fèi)寶貴的CPU。當(dāng)Google Maps推出瓦片地圖后,大一些的地圖網(wǎng)站紛紛效仿,都是預(yù)先渲染好標(biāo)注得很完美的海量圖片,然后將這些大圖片分割為256*256像素的瓦片,這些瓦片很小,以致它們下載很快,它們的文件名不會改變,以致瀏覽器能快速緩存起來。

研究Google Maps可以發(fā)現(xiàn),google地圖有0~17共十八級縮放比例,其瓦片大小為256*256,當(dāng)0級比例尺為1:10000公里時,是一副循環(huán)的世界地圖圖片,以后每放大一級,比例尺增大一倍,在上一級的瓦片基礎(chǔ)上再一分為四個256*256的瓦片,分辨率也越來越高,顯示的內(nèi)容越來越豐富,17級最豐富。這就是WebGIS中常用的金字塔模型,如圖2所示。

圖2 字塔模型

1.2 地圖切割原理

創(chuàng)建地圖緩存之前先要設(shè)計(jì)地圖,在實(shí)際應(yīng)用中Web地圖通常包含底圖和功能性的專題圖層,需要對它們分別切割。GeoServer也可采用類似google同樣的切割方法,切割完的圖片按照 c_r.png的格式進(jìn)行編碼命名,存儲于名為EPSG_投影編碼_s的文件夾中,s為比例尺級別;r為行號,c 為列號,0<r<2s,0<c<2s,第一行行號為 00,第一列列號為:00。其命名規(guī)則如圖3所示。

圖3 片分割命名規(guī)則

根據(jù)以上圖片切割編碼規(guī)則,可以得到如下?lián)Q算公式來完成圖片像素坐標(biāo)和實(shí)際地理坐標(biāo)之間的換算關(guān)系:

(1)已知條件和變量:

① 已知待切地圖范圍:左上角坐標(biāo) (Xmin,Ymax);右下角坐標(biāo) (Xmax,Ymin)。

② 已知切圖后圖片的高寬:width。

③ 地圖跨度: ΔX=Xmax-Xmin; ΔY=Ymax-Ymin。

④ 當(dāng)前坐標(biāo):(X,Y) 。

⑤ 當(dāng)前瓦片名:c_r.png,所在列cv= c;所在行rv=r;所在的文件夾名EPSG4326_b,比例尺級別loc=b。

⑥ 當(dāng)前瓦片范圍:左上角坐標(biāo) (tileXmin,tileYmax);右下角坐標(biāo) (tileXmax,tileYmin)。

(2)根據(jù)當(dāng)前瓦片名稱計(jì)算當(dāng)前瓦片范圍:(3)根據(jù)坐標(biāo)和比例尺計(jì)算當(dāng)前圖片所在的行列號:

(4)當(dāng)前坐標(biāo)在當(dāng)前圖片上的像素坐標(biāo)( , )pXpY:

1.3 一致性機(jī)制

一致性維護(hù)機(jī)制保證 Web緩存庫中的地圖信息與底層空間數(shù)據(jù)庫中的地圖信息一致,各Web緩存數(shù)據(jù)庫之間信息一致。具體的一致性維護(hù)是通過并行的兩步實(shí)現(xiàn)的。

第一,客戶端修改地圖,向服務(wù)器發(fā)出修改信息,Web服務(wù)器在完成修改后,會計(jì)算出此次請求所改動的圖片,于是向應(yīng)用服務(wù)器請求并獲得更新的圖片,然后用新圖片替代緩存中的舊圖片,從而使當(dāng)前緩存數(shù)據(jù)庫與底層空間數(shù)據(jù)庫中的信息一致。

第二,Web服務(wù)器感知信息,當(dāng)應(yīng)用服務(wù)器成功響應(yīng)客戶的修改地圖請求后,應(yīng)用服務(wù)器會通知各Web服務(wù)器,各Web服務(wù)器判斷此更改是否影響本地Web緩存,如果不影響就不處理該消息,否則就向應(yīng)用服務(wù)器發(fā)送新的獲取地圖請求,將緩存中原有地圖圖片替換。

2 部署與訪問

由于GeoWebCache是一個采用Java實(shí)現(xiàn)用于緩存WMS Tile的開源項(xiàng)目,開源的GWC和Geoserver均滿足J2EE規(guī)范,發(fā)布的時候只需將geowebcache.war文件復(fù)制于tomcat的webapp目錄下,可修改tomcat端口為8088,以中國地圖Chinese為例,將一副中國地圖發(fā)布至 GeoServer后,修改tomcat下WEB-INF/class目錄下的geoserver.xml,添加如下xml:

<wmsLayer>

<name>China</name>

<mimeFormats><string>image/png</string></mimeFormats>

<!-- Grid Subset Example -->

<gridSubsets>

<gridSubset>

<gridSetName>EPSG:4326</gridSetName>

<extent>

<coords>

<double>73.447</double>

<double>3.048</double>

<double>135.086</double>

<double>53.558</double>

</coords>

</extent>

</gridSubset>

</gridSubsets><

wmsUrl>

<string>http://localhost:8080/geoserver/wms</string>

</wmsUrl>

<wmsLayers>Chinese:bou2_41</wmsLayers>

<transparent>false</transparent>

<bgColor>0x0066FF</bgColor>

<expireCacheList>

<expirationRule minZoom="0" expiration="60" />

</expireCacheList>

<expireClientsList>

<expirationRule minZoom="0" expiration="500" />

</expireClientsList>

</wmsLayer>

在geowebcache目錄下新建Chinese.html,加入如下客戶端訪問代碼:

var map, layer;

function init(){

map = new OpenLayers.Map('map');

var bounds = new OpenLayers.Bounds(73.447,3.408,135.086,53.558);

layerpublic = new OpenLayers.Layer.WMS( "china",

"http://localhost:8088/geowebcache/service/wms?layers=China",

{

layers: 'China',

format: 'image/png',

tiled: false,

transparent: true

},

{

reproject: true,isBaseLayer: true

}

);

map.addLayer(layer);

map.zoomToExtent(bounds);

}

打開瀏覽器,輸入http://localhost:8088/geowebcache/Chinese.html,就可以訪問一副由瓦片構(gòu)造的中國地圖了。

3 結(jié)語

目前,WebGIS整合Ajax客戶端的技術(shù)日趨成熟,客戶端框架也逐漸增多,隨著空間地圖數(shù)據(jù)的日益增多,空間交互也變得越來越復(fù)雜,單獨(dú)依賴開源的客戶端和成熟的WebGIS服務(wù)已經(jīng)不能滿足大型 WebGIS系統(tǒng)開發(fā)的要求,所以在開發(fā)過程中需要整合第三方平臺,實(shí)現(xiàn)更高效的開發(fā),本文通過對瓦片金字塔的創(chuàng)建、內(nèi)部原理、發(fā)布等關(guān)鍵技術(shù)的描述,對多平臺整合有一定的幫助。

[1]GeoWebCache Documention[EB/OL]. http://geowebcache.org/docs/current/ntroduction/whatis.html.

[2]Scott Davis,蔣波濤譯.GIS for Web Developers[M].北京:電子工業(yè)出版社.2008.

[3]殷福忠,孫立民.基于瓦片金字塔技術(shù)的地圖發(fā)布平臺開發(fā)研究[J].測繪與空間地理信息.2010.

[4]張俊麗,李艷明,李欣.WebGIS地圖圖片緩存技術(shù)研究[J].微計(jì)算機(jī)信息.2009.

猜你喜歡
矢量圖瓦片金字塔
“金字塔”
Analysis of the line current differential protection considering inverter-interfaced generation station and countermeasures
A Study of the Pit-Aided Construction of Egyptian Pyramids
一種基于主題時空價值的服務(wù)器端瓦片緩存算法
海上有座“金字塔”
慣性
利用矢量圖對小物體從光滑斜面下滑運(yùn)動探討
神秘金字塔
童話世界(2017年11期)2017-05-17 05:28:25
基于NoSQL數(shù)據(jù)庫的瓦片地圖服務(wù)
鄰域平均法對矢量圖平滑處理
东海县| 武强县| 宜川县| 延长县| 唐河县| 民权县| 凤山市| 英吉沙县| 乐业县| 高邑县| 清流县| 加查县| 中超| 扶余县| 明水县| 松原市| 抚远县| 明光市| 葫芦岛市| 香河县| 荃湾区| 松潘县| 丰城市| 玉龙| 西吉县| 京山县| 和龙市| 勃利县| 卓尼县| 兴文县| 定兴县| 开封县| 育儿| 肥东县| 儋州市| 南溪县| 麻江县| 武安市| 黄龙县| 连平县| 新密市|