地图的开发研究–基于openlayers+geoserver+tomcat的离线地图-geoserver的缓存机制(geowebcache)

 Geowebcache服务器拦截来至客户端的请求,判断本次请求的数据是否已经被缓存。如果请求数据已被缓存,则将这些缓存图片直接渲染至客户端;如果请求数据没有被缓存,则发送请求至WMS Server(提供网络地图服务的服务器如geoserver),由服务器处理请求数据,并返回给Geowebcache服务器,Geowebcache服务器进过渲染及缓存数据图片后绘制到客户端

   最新的geoserver其实已经内置了Geowebcache,所以不需要再添加Geowebcache服务器,这其实很方便的。因为目前地图数据不是很大,仅仅实现的是中国地图的切片,缓存的瓦片大小才1.6G左右,不过如果数据量更大的地图,存储问题还是需要关心。Geoserver由于内置geowebcache,在我们创建图层的时候会默认帮我们建立瓦片图层,以供我们来进行切片,我们所要做的就是启用切片,进行切片的设置,然后缓存到本地,经过测试的时候地图放大或缩小的时候地图加载速度提高。

  

更改E:\software\apache-tomcat-6.0.18\webapps\geoserver\WEB-INF\web.xml 添加以下代码,重启tomcat,开始切片:

<context-param>
   <param-name>GEOWEBCACHE_CACHE_DIR</param-name>
   <param-value>D:\geowebcache</param-value>
  </context-param>

进入geoserver配置界面:

Geoserver的内置geowebcache

待切片图层:

切片配置界面,设置切片的线程(不能太大,不然PC吃不消),其中bouding box  表示需要进行切片的范围,如果仅仅需要切片中国地图,就使用中国地图的BBOX,前几周小结描述过:

创建2个线程进行自动切片:

所以等待一段时间后,会发现D:\geowebcache出现的图层的瓦片缓存,一个一个256X256的图片

其中文件命名格式和谷歌的编码类似:

 EPSG_投影编码_比例尺级别\行号_列号.png   

  第一行行号为00,列号00,命名规则如下所示:

JS调用:

var geoServer_url="http://192.168.1.100:8080/geoserver";//局域网内的地图服务器
var options = {
		controls : [],
		maxExtend:new OpenLayers.Bounds(
                73.44696044921875, 6.318641185760498,
                135.08583068847656, 53.557926177978516
            ),
        resolutions: [0.087890625, 0.0439453125, 0.02197265625],    //比例尺级别。如果缓存文件不存在,将根据此级别生成瓦片
		minResolution : 0.087890625,
		maxResolution : 0.02197265625,
		projection : "EPSG:4326",
		units : 'degrees'
	};
	
	tiled = new OpenLayers.Layer.WMS("GIS:beijing_area - Tiled",geoServer_url+"/gwc/service/wms",
	//正常图层
	//tiled = new OpenLayers.Layer.WMS("GIS:beijing_area - Tiled",geoServer_url+"/wms",		
			{
		LAYERS : 'mytest:bou2_4p',
		STYLES : '',
		 format: 'image/png',
		tiled : true
	}, {
		buffer : 0,
		displayOutsideMaxExtent : true,
		isBaseLayer : true,
		yx : {
			'EPSG:4326' : true
		}
	});
	map = new OpenLayers.Map('map', options);
	map.addLayers([ tiled]);

其实可以看出调用方式其实和以前的服务端调用类似,不过是换了个url地址,其实更深入的使用瓦片服务可以使用TMS服务,根据瓦片命名规则,计算地图界面的坐标,调用相应的瓦片。大家可以自己研究下,很有作用,因为如果要调用几大在线地图的瓦片的时候需要使用。

转载自:https://blog.csdn.net/songjian1314/article/details/17297607

You may also like...

退出移动版