简介
GeoWebCache(GWC)是一个采用Java实现用于缓存WMS(Web Map Service)Tile的开源项目。当地图客户端请求一张新地图和Tile时,GeoWebCache将拦截这些调用然后返回缓存过的Tiles。如果找不到缓存再调用服务器上的Tiles,从而提高地图展示的速度。实现更好的用户体验。
地图往往是静态的,由于大部分客户端每一次请求WMS(网络地图服务)的数据都被质疑,这会导致不必要的处理,增加等待时间。 GeoWebCache在他们请求的时候优化存储(
缓存)地图瓦片,作为代理连接客户端(例如OpenLayers或
谷歌地图)和服务器(如GeoServer,或任何WMS兼容的服务器)。随着新的地图和瓦片的请求,GeoWebCache拦截这些请求并预渲染瓦片,如果这些瓦片已经得到缓存。因此,一旦瓦片被
存储,地图绘制速会度增加许多倍,实现更完美的用户体验。
实现原理
缓存机制
Geowebcache服务器拦截来至客户端的请求,判断本次请求的数据是否已经被
缓存。如果请求数据已被
缓存,则将这些缓存图片直接渲染至客户端;如果请求数据没有被缓存,则发送请求至WMS Server(提供网络地图服务的服务器),由服务器处理请求数据,并返回给Geowebcache服务器,Geowebcache服务器进过渲染及缓存数据图片后绘制到客户端。
下面说一下geowebcache的配置使用,这里使用的版本是:1.3-RC3,下载对应的war包,在tomcat中解压后,会在WEB-INF目录下找到一系列配置文件,先找到web.xml,然后在web-app根元素下添加:
2 |
<param-name>GEOWEBCACHE_CACHE_DIR</param-name> |
3 |
<param-value>你的geowebcache切片的目录</param-value> |
param-value的值就是你要存放geowebcache瓦片的位置,配置好这里,重启tomcat,你会发现在你的瓦片目录下生成了一些文件,其中就有geowebcache.xml,这个文件是geowebcache配置的关键所在,一下是这个文件的配置信息:
001 |
<?xml version="1.0" encoding="utf-8"?> |
002 |
<gwcConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
003 |
xmlns="http://geowebcache.org/schema/1.3.0" |
004 |
xsi:schemaLocation="http://geowebcache.org/schema/1.3.0 http://geowebcache.org/schema/1.3.0/geowebcache.xsd"> |
005 |
<version>1.3.0</version> |
006 |
<backendTimeout>120</backendTimeout> |
008 |
<title>GeoWebCache</title> |
009 |
<description>GeoWebCache is an advanced tile cache for WMS servers.It supports a large variety of protocols and |
010 |
formats, including WMS-C, WMTS, KML, Google Maps and Virtual Earth.</description> |
014 |
<string>WMTS</string> |
015 |
<string>GEOWEBCACHE</string> |
018 |
<providerName>John Smith inc.</providerName> |
019 |
<providerSite>http://www.example.com/</providerSite> |
021 |
<individualName>John Smith</individualName> |
022 |
<positionName>Geospatial Expert</positionName> |
023 |
<addressType>Work</addressType> |
024 |
<addressStreet>1 Bumpy St.</addressStreet> |
025 |
<addressCity>Hobart</addressCity> |
026 |
<addressAdministrativeArea>TAS</addressAdministrativeArea> |
027 |
<addressPostalCode>7005</addressPostalCode> |
028 |
<addressCountry>Australia</addressCountry> |
029 |
<phoneNumber>+61 3 0000 0000</phoneNumber> |
030 |
<faxNumber>+61 3 0000 0001</faxNumber> |
031 |
<addressEmail>john.smith@example.com</addressEmail> |
035 |
<accessConstraints>NONE</accessConstraints> |
036 |
</serviceInformation> |
044 |
<name>EPSG:3395</name> |
046 |
<srs><number>3395</number></srs> |
050 |
<double>12063355.362599999</double> |
051 |
<double>3248729.1457272936</double> |
052 |
<double>13122908.970199998</double> |
053 |
<double>3908502.2175705903</double> |
058 |
<double>1000.4406398437495</double> |
059 |
<double>517.3601599609374</double> |
060 |
<double>258.6800799804687</double> |
061 |
<double>129.34003999023435</double> |
062 |
<double>64.67001999511717</double> |
063 |
<double>32.335009997558586</double> |
064 |
<double>16.167504998779293</double> |
065 |
<double>8.083752499389647</double> |
066 |
<double>4.0104690624237058</double> |
067 |
<double>2.25261726560592646</double> |
068 |
<double>1.12630863280296323</double> |
071 |
<metersPerUnit>1</metersPerUnit> |
072 |
<pixelSize>0.0002645833333333333333333333</pixelSize> |
074 |
<tileHeight>256</tileHeight> |
075 |
<tileWidth>256</tileWidth> |
082 |
<name>heightway</name> |
084 |
<title>heightway</title> |
085 |
<description>heightway</description> |
089 |
<string>image/jpeg</string> |
094 |
<gridSetName>EPSG:3395</gridSetName> |
099 |
<string>http://localhost:8006/geoserver/cite/wms?service=WMS</string> |
101 |
<wmsLayers>cite:heightWay</wmsLayers> |
103 |
<transparent>false</transparent> |
105 |
<bgColor>#FCFCFC</bgColor> |
配置好上面的信息之后,进入:http://localhost:8006/geowebcache/demo,点击"Reload Configuration"重新读取配置信息,如下所示:

如果需要你输入密码,密码信息在WEB-INF\users.properties这个文件中,重新进入:http://localhost:8006/geowebcache/demo,如果配置信息没错,你会发现,你所配置的图层信息已经显示在这个页面上了,点击“Seed this layer”,然后你需要输入下面这些信息:

设置好,点submit就开始切图了。
下面说一下在openlayer中怎样调用geowebcache的瓦片:
03 |
resolutions:[1.12630863280296323,2.25261726560592646,4.0104690624237058,8.083752499389647,16.167504998779293,32.335009997558586,64.67001999511717,129.34003999023435,258.6800799804687,517.3601599609374,1000.4406398437495], |
04 |
projection: new OpenLayers.Projection("EPSG:3395"), |
10 |
var map = new OpenLayers.Map("GisMap", options); |
12 |
var baseLayer = new OpenLayers.Layer.WMS( |
14 |
"http://localhost:8006/geowebcache/service/wms", |
15 |
{ layers: "heightway", format: 'image/jpeg' }, |
16 |
{ tileSize: new OpenLayers.Size(256,256) } |
18 |
map.addLayers([baseLayer]);
|