在進行GIS項目開發中,常使用Geoserver作為開源的地圖服務器,Geoserver是一個JavaEE項目,常通過Tomcat進行部署。而GeoWebCache是一個采用Java實現用于緩存WMS-Tile(瓦片)的開源項目。當客戶端請求一張新地圖和Tile時,GeoWebCache將攔截這些調用然后返回緩存過的Tiles。 本文主要講述獨立部署GeoWebCache,并且復用已經切好的瓦片緩存。
在實際項目中,需要對比較大數據量的地圖切緩存,例如全國地圖,并且移植復用,進行私有云部署。那么如果用GeoWebCache直接發布已經切好的緩存呢?
一、下載安裝GeoWebCache(GWC)
不知為何,GeoWebCache官網竟然無法訪問,這里直接給出下載地址:<a target='_blank'>geowebcache-1.14.1-war.zip</a>
這里是各個版本的列表:<a target='_blank'>https://sourceforge.net/projects/geowebcache/files/geowebcache</a>
注意:安裝GWC前提還是要安裝java jre(或者jdk),安裝Tomcat,這里就不贅述了,不明白可以看之前的文章:基于Tomcat安裝Geoserver
將geowebcache的war包拷貝到tomcat的webapps目錄下即可,啟動tomcat,輸入http://localhost:8080/geowebcache,顯示如下界面說明安裝成功。
點擊“A list of all the layers and automatic demos”鏈接即可進入緩存圖層列表,默認有三個圖層:
二、修改緩存目錄
GWC默認的數據緩存目錄在%temp%\geowebcache中,我們將其修改至D:\GISData\gwccache
進入tomcat目錄,在\webapps\geowebcache\WEB-INF中修改web.xml文件,加入如下內容:
<context-param>
<param-name>GEOWEBCACHE_CACHE_DIR</param-name>
<param-value>D:\GISData\gwccache</param-value>
</context-param>
注意: 一個“context-param”節點只能有一個鍵值對。
重啟tomcat,發現D:\GISData\gwccache目錄多了一些文件:
三、復用瓦片緩存文件,發布wms圖層
1.將之前緩存好的瓦片拷貝到D:\GISData\gwccache目錄下:
緩存文件夾名稱即為要發布的圖層名稱,打開后層級目錄如下,以gridset名稱和zoom等級命名:
2.打開D:\GISData\gwccache\geowebcache.xml文件,在Layers節點下加入如下代碼:
<wmsLayer>
<!-- 這里的name名稱要和上面緩存文件夾的名稱一致 -->
<name>group_yingshi_xa_f1</name>
<mimeFormats>
<string>image/gif</string>
<string>image/jpeg</string>
<string>image/png</string>
<string>image/png8</string>
</mimeFormats>
<gridSubsets>
<gridSubset>
<gridSetName>EPSG:4326</gridSetName>
<!-- 這里是緩存文件地圖的范圍 -->
<extent>
<coords>
<double>108.940032958984</double>
<double>34.2428131103516</double>
<double>108.942024230957</double>
<double>34.2460136413574</double>
</coords>
</extent>
</gridSubset>
</gridSubsets>
<wmsUrl>
<!-- 經過測試,如果你只是想發布瓦片緩存地圖,這里wmslayer url可以隨便寫一個 -->
<string>http://127.0.0.1/wms</string>
</wmsUrl>
</wmsLayer>
3.重啟tomcat服務器,會發現圖層列表中多了一個圖層:
4.以png方式瀏覽,緩存地圖加載成功:
四、問題解決
通過openlayers訪問時會出現煩人的400錯誤,通過查看客戶端代碼發現,extend為[-180,-90,180,90]
我們只需改為地圖實際的extend即可: