1.什么是GeoWebCache

GeoWebCache是地图缓存软件公司成员开发的一个基于java的开源项目。和其他的缓存系统相似,它作为一个客户端和地图服务的代理。它可以单独部署,适用于任何基于WMS标准的地图服务。

2.配置GeoWebCache缓存路径

打开webapps/geoserver/WEB-INF下的web.xml文件,在display-name节点后面添加一下内容:

<web-app>
<display-name>GeoServer</display-name>
<context-param>
<param-name>GEOWEBCACHE_CACHE_DIR</param-name>
<param-value>E:\ebook\GeoServer_Beginners+Guide\geo_web_cache_dir</param-value>
</context-param>

重新加载geoserver应用。打开geoserver服务网站,进入Tile Layers,从列表中找到tiger:ne_50m_populated_places图层,选择下拉列表中的“EPSG:4326/png”。缩放地图,然后再查看geo_web_cache_dir目录,能看到已经缓存的文件。

3.配置GeoWebCache缓存大小

几个选项,”Eanble disk quota”是否启动磁盘配置;“Disk quota check frequency”磁盘配置检测周期,默认为10秒;“Maximum tile cache size”缓存最大空间,默认为5MIB;”When enforcing disk quota limits, remove tiles that are:“按照什么方式执行磁盘回收,有两种方式:”使用次数最少”、“最近很少使用”。4.“Caching Defaults”配置

“Provided Services”-“Enable direct integration with GeoServer WMS”

直接集成是关于终端使用在WMS的GetMap请求。如果使用默认配置,你将不得不使用自定义终端告诉GeoServer你想去接收地图从缓存中。有效请求地址:

http://localhost:8080/geoserver/gwc/service/wms?

启用该配置,使用相同的语法你可以请求一个非缓存的图层:

http://localhost:8080/geoserver/<workspace>/wms?tiled=true
Apart

WMS-C

是Web Mapping Services Cached的缩写,它是终端查询瓦图的默认方法。如果禁用该选项,终端请求地址会报400错误。

http://localhost:8080/geoserver/gwc/service/wms

TMS and WMTS

用于终端请求TMS和WMTS服务,这两个服务都遵循OGC标注。不同点在于,WMTS请求时需要GetFeatureInfo。

5.Configuring gridsets

grisets配置了CRS、瓦片尺寸、地图级别、边界。一当自定义了gridsets,那么在请求地图服务时,需要传递对恒gridsets的约束名称,例如EPSG:4269。如何添加一个编码为EPSG:4269的gridsets?

打开geoserver,选择Tile Caching-Gridsets,点击“Create a new gridset”进入新建界面。设置CRS为EPSG:4269,计算Gridsets的边界。如果你想设置更小的边界,可自己手动输入。

每个gridsets都必须设置瓦片尺寸,默认为256*256。

接下来,必须设置zoom level。这里设置了十个级别,其中Tiles列表示Column * row,例如zoom为0,瓦片个数为2列*1行等于2个。

接下来打开“图层”,选择tiger:tl_2011_us_county图层,进入配置页面,选择“Tile Caching”页签。把页面拖到最底部,看到“Available gridsets”,在下来列表中选中“EPSG:4269”,点击添加图标。现在可以在“Tile Caching”-“Tile Layers”中找到“cite:tl_2011_47_concity”图层,并在下拉列表中用”EPSG:4269”打开。

请求地图后,在缓存目录中查看缓存图层,可看到:

7.Openlayers如何使用geoserver缓存的瓦片

首先看一个比较常规的例子,下面代码使用openlayers 2.X请求geoserer的瓦片地图:

var mapOptions = {
projection: "EPSG:4326",
maxExtent: new OpenLayers.Bounds(-180.0, -90.0, 180.0, 90.0),
units: "degrees"
};
var map = new OpenLayers.Map('myMap', mapOptions);
var demolayer = new OpenLayers.Layer.WMS(
'tiger:ne_50m_populated_places', 'http://localhost:8082/geoserver/tiger/wms',
{
layers: 'tiger:ne_50m_populated_places',
styles: 'PopulatedPlacesStroke',
format: 'image/png' },
{singleTile: 'True'}
);
map.addLayer(demolayer);
map.zoomTo(4);
map.panTo(new OpenLayers.LonLat(12.0,42.0));

在网站上打卡请求地址,缩放地图。到缓存目录下查看缓存目录tiger_ne_50m_populated_places是否有缓存?没有。geoserver默认是没有集成GeoWebCache。所以在通过geoserver地址请求时,不会缓存瓦片。那么如何使用缓存?有两种方式:

方式一:如何要使用缓存,不得不约束gridsets属性。我们使用的EPSG:4326,所以我们需要设置和EPSG:4326 gridset相同的zoom级别:

var mapOptions = {
resolutions: [
0.703125, 0.3515625, 0.17578125,
0.087890625, 0.0439453125, 0.02197265625,
0.010986328125, 0.0054931640625, 0.00274658203125,
0.001373291015625, 0.0006866455078125, 0.0003433227539062,
0.0001716613769531, 0.0000858306884766, 0.0000429153442383,
0.0000214576721191, 0.0000107288360596, 0.0000053644180298,
0.0000026822090149, 0.0000013411045074, 0.0000006705522537,
0.0000003352761269
],
projection: "EPSG:4326",
maxExtent: new OpenLayers.Bounds(-180.0, -90.0, 180.0, 90.0),
units: "degrees"
};

请求地址也需要更变,直接请求GeoWebCache的地址:

'tiger:ne_50m_populated_places', 'http://localhost:8082/geoserver/gwc/service/wms',

接下来需要匹配瓦片的尺寸。调整代码如下:

var demolayer = new OpenLayers.Layer.WMS(
'tiger:ne_50m_populated_places', 'http://localhost:8082/geoserver/gwc/service/wms',
{
layers: 'tiger:ne_50m_populated_places',
styles: 'PopulatedPlacesStroke',
format: 'image/png' },
{tileSize: new OpenLayers.Size(256,256)}
);

现在我们在浏览器中请求打开网站,缩放地图。查看缓存目录,现在有新增的缓存了。

方式二:之前我们讲过“Caching defaults”-“Provided Services”中的“Enable direct integration with GeoServer WMS”选项。该选项默认没有勾选,如果勾选则直接把GeoWebCache集成到geoserver。url还是修改为原来的geoserver地址,代码如下:

var demolayer = new OpenLayers.Layer.WMS(
'tiger:ne_50m_populated_places', 'http://localhost:8082/geoserver/tiger/wms',
{
layers: 'tiger:ne_50m_populated_places',
styles: 'PopulatedPlacesStroke',
tiled: 'true',
format: 'image/png' },
{tileSize: new OpenLayers.Size(256,256)}
);

在“Tile Layers”中,点击“tiger:ne_50m_populated_places”行的“Empty”按钮,清理缓存。请求网站地址。检查缓存目录,有生成新的缓存文件。

geoserver 地图性能和缓存的更多相关文章

  1. ArcGIS 地图性能优化系列一

    经常有客户会咨询到如何提高地图的显示性能.为何ArcMap刷新地图那么缓慢.为何地图服务响应要等待10多秒? 诸如这些问题,虽然它们的表象都是相似的,但是往往在分析排查问题的时候,我们发现背后的原因是 ...

  2. GeoServer地图开发解决方案

    转自:http://www.cnblogs.com/beniao/archive/2011/01/08/1930822.html GeoServer 是 OpenGIS Web 服务器规范的 J2EE ...

  3. 怎样基于谷歌地图的Server缓存公布Image Service服务

    怎样基于谷歌地图的Server缓存公布Image Service服务 第一步:下载地图数据 下载安装水经注万能地图下载器,启动时仅仅选择电子.谷歌(这里能够依据自己的须要选择).例如以下图所看到的. ...

  4. [转]GeoServer地图开发解决方案(一):环境搭建篇

    GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现的社区开源项目,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操作,通过 GeoS ...

  5. log4j日志输出性能优化-缓存、异步

     转载 1.log4j已成为大型系统必不可少的一部分,log4j可以很方便的帮助我们在程序的任何位置输出所要打印的信息,便于我们对系统在调试阶段和正式运行阶段对问题分析和定位.由于日志级别的不同,对系 ...

  6. django性能优化缓存view详解

    缓存提升性能: 1.通常的view会去数据库端执行相关的查询然后交由template渲染.数据库访问通常就是性能的瓶颈所在. 2.由于许多数据要很久才会变一次.两次连续的数据库访问通常返回的数据是一样 ...

  7. spark性能优化----缓存清除

    spark是一款优秀的框架,计算性能相当优异,已经发展成大数据主流计算引擎,在spark开发过程中有很多优化的点.其中去除重复计算是非常重要的.一般操作调用cache/persist,来缓存中间结果, ...

  8. Cocos2d-JS地图性能问题

    如图所示游戏场景,它是我们以往介绍的实例,在场景中有三个方块精灵(BoxA.BoxB和BoxC)和背景精灵,这个背景叫做“地图”有点牵强,地图采用了有规律的纹理. 游戏场景 那么我们如何设计这个游戏地 ...

  9. 前端性能优化---缓存篇SDK

    1.把前端最常用的资源css.js存在本地1.1  前端缓存技术SessionStorage 优点:临时存储神器,关闭页面标签自动回收,不可以跨页面交互. 取值的时候有两种方法,一种是用session ...

随机推荐

  1. mysql 常用语句记录

    一.表的状态查询   (1)如果发现一个数据异常的大了,需要查看一下其中哪些表变大了,可以使用如下命令 SQL> SHOW TABLE STATUS FROM 数据库名 LIKE 数据表名;   ...

  2. Android——FilenameFilter总结(转)

    一.FilenameFilter介绍   java.io.FilenameFilter是文件名过滤器,用来过滤不符合规格的文件名,并返回合格的文件: 一般地: (1)String[] fs = f.l ...

  3. Java编程的逻辑 (47) - 堆和PriorityQueue的应用

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  4. hbase源码带注释版本,放在这里,方便大家下载吧

    看了5个月的hbase源码,记录了一些笔记,如果有需要的朋友可以拿去. 里面总共包括几个主要的工程吧:hbase-common,hbase-client,hbase-prefix-tree,hbase ...

  5. Spring Cloud Config 配置中心 生产环境下相关问题

    参照以前写的博客进行搭建配置中心集群 1.如果要使用 服务器端自动刷新,所有客户端同步功能.要先安装RabbitMQ 2.如果要使用自动加解密功能,要先安装JAVA JCE扩展.

  6. gclient多源码管理工具 DEPS文件

    gclient来管理源码的checkout, update等. gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理.甚至包括将Git和svn代码放在 ...

  7. 遍历QMap引发异常处理

    引言 用常规方法遍历QMap,删除满足条件元素时出现“读取位置0xXXX时发生访问冲突”.查看“调用堆栈”指向QMap<int,int>::iterator::operator++()和Q ...

  8. Python之进度条

    pip install tqdm from tqdm import tqdm,trange import time for char in tqdm(['a','b','c','d']): time. ...

  9. Prolog学习:数独和八皇后问题

    上一篇简单介绍了下Prolog的一些基本概念,今天我们来利用这些基本概念解决两个问题:数独和八皇后问题. 数独 数独是一个很经典的游戏: 玩家需要根据n×n盘面上的已知数字,推理出所有剩余空格的数字, ...

  10. unity---Courtine 协程

    尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 记得去年6月份刚开始实习的时候,当时要我写网络层的结构,用到了协程,当时有点懵,完全不知道Unity协程的执行机制是 ...