GeoServer中GeoWebCache(GWC)的使用
本文介紹GeoWebCache的使用方法,包括如何切快取,訪問快取wms/wmts服務,如何複用柵格快取等。
1.前言
在geoserver1.7版本之後,geoserver本身集成了GeoWebCache這個模組。本文介紹的是geoserver2.2版本,其本身自帶有GeoWebCache。不過如果你的geoserver版本比較老,或者想使用最新的GeoWebCache,可以自行在網上下載此工具,然後根據說明按照和配置,這裡不做描述。
2.GeoWebCache簡介
2.1 總體描述
GeoWebCache(GWC)是一個採用Java實現用於快取WMS(Web Map Service)Tile的開源專案。當地圖客戶端請求一張新地圖和Tile時,GeoWebCache將攔截這些呼叫然後返回快取過的Tiles。如果找不到快取再呼叫伺服器上的Tiles,從而提高地圖展示的速度。實現更好的使用者體驗。
2.2特點描述
a.GWC支援多種來源的瓦片,比如ArcGIS的瓦片。
b.GWC支援多種請求,比如WMS、WMS-C、WMTS、TMS、Googl Maps KML和Virtual Earth。
c.GWC支援在第一次請求地圖某範圍時,將此範圍內的地圖按照配置的資訊進行切圖快取。第二次同樣請求此範圍的地圖時,直接讀取快取瓦片進行加速顯示。此功能類似於AGS的動態出圖。
d.GWC同時也支援預先將瓦片按照配置資訊切完,地圖載入時直接讀取瓦片。此功能類似於AGS的瓦片快取出圖。
3.具體配置
由於我所用的Geoserver本身自帶有此功能,所以配置相對容易。
3.1配置瓦片存放地址
在GeoServer的web.xml檔案中加上如下配置,便可以控制瓦片存放的目錄:
3.2瓦片詳細資訊配置
當我們配置好3.1中的地址項後,重啟tomcat,可以發現在指定的瓦片存放資料夾下產生了這樣三個檔案:
其中的GeoWebCache.xml便是瓦片的詳細配置文件。此配置項在支援使用其他來源的瓦片進行顯示上非常重要。不過,目前Geoserver中的整合版本不支援此功能,GeoWebCache的獨立版本可以支援,在以後的章節裡跟我跟大家一起探討此功能。
4.切圖操作
4.1.進入gwc頁面
啟動tomcat後,在瀏覽器中直接輸入http://localhost:8680/geoserver/gwc/,可進入如下頁面:
4.2選擇需要切圖的服務
點選list選項,可以看到能夠進行切圖的服務:
4.3進行預切圖(非必須)
如果想實現類似於AGS中預先將所有瓦片全部進行切圖的效果,可以點選要進行切圖的圖層下的Seed this layer:
點選Submit後,開始進行預切圖,在頁面中可以看到切圖程序:
在瓦片快取目錄下可以看到切圖結果:
注意:在切圖頁面上,也可以停止切圖程序:
5.使用切圖服務探究
5.1如果我們的WMS請求為一般性url,是否可以自動開啟瓦片快取服務?——不能
點選Geoserver中的layer preview,檢視某一圖層,某一URL為:http://localhost:8680/geoserver/wms?LAYERS=tilelayer&STYLES=&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A4326&BBOX=104.07920033743,30.648478876565,104.08458074933,30.652787409535&WIDTH=512&HEIGHT=410。
效果如下:
檢視我們的瓦片快取檔案,並沒有任何跟改圖層服務相關的瓦片快取生成:
5.2使用特殊的WMS的url,是否可以自動開啟瓦片快取服務?——可以
點選此項中的png,在彈出的頁面中放大縮小,某一URL為:http://localhost:8680/geoserver/gwc/service/wms?LAYERS=urbanlayer%3Atilelayer&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A4326&BBOX=104.1943359375,30.5419921875,104.23828125,30.5859375&WIDTH=256&HEIGHT=256
效果如下:
此時,在瓦片快取資料夾中我們可以明顯的看到生成的對應快取:
5.3由以上例子總結
對比以上兩個服務的url:
http://localhost:8680/geoserver/wms
http://localhost:8680/geoserver/gwc/service/wms
可以看見兩者的區別僅僅在於,當請求的URL中加上gwc/service後,便可以開啟瓦片快取服務了。
6.可能存在的問題
6.1效率問題
如果使用動態切圖,即非預切圖。當需要切圖的資料(圖層或圖層組)很大時,會不會地圖第一次顯示比較慢?
6.2切圖效果失真問題
網上有人提出這樣一個問題:問題是GeoWebCache切片後的圖片質量降低,縮放的時候圖片畫素都擁擠在一起,沒有像windows圖片檢視器或者ps那樣縮小的圖片還那樣保持清晰。
原圖:
GWC瓦片:
**注意:**針對此問題,有網友給出瞭解決方案:嘗試使用maptiler切片工具,不過 maptiler工具有侷限,無法整合多張圖後一起切圖。