在进行GIS项目开发中,常使用Geoserver作为开源的地图服务器,Geoserver是一个JavaEE项目,常通过Tomcat进行部署。而GeoWebCache是一个采用Java实现用于缓存WMS-Tile(瓦片)的开源项目。当客户端请求一张新地图和Tile时,GeoWebCache将拦截这些调用然后返回缓存过的Tiles。 本文主要讲述独立部署GeoWebCache,并且复用已经切好的瓦片缓存。

在实际项目中,需要对比较大数据量的地图切缓存,例如全国地图,并且移植复用,进行私有云部署。那么如果用GeoWebCache直接发布已经切好的缓存呢?

一、下载安装GeoWebCache(GWC)

不知为何,GeoWebCache官网竟然无法访问,这里直接给出下载地址:geowebcache-1.14.1-war.zip

这里是各个版本的列表:https://sourceforge.net/projects/geowebcache/files/geowebcache

注意:安装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文件,加入如下内容:

  1. <context-param>
  2. <param-name>GEOWEBCACHE_CACHE_DIR</param-name>
  3. <param-value>D:\GISData\gwccache</param-value>
  4. </context-param>

注意: 一个“context-param”节点只能有一个键值对。

重启tomcat,发现D:\GISData\gwccache目录多了一些文件:

三、复用瓦片缓存文件,发布wms图层

1.将之前缓存好的瓦片拷贝到D:\GISData\gwccache目录下:

缓存文件夹名称即为要发布的图层名称,打开后层级目录如下,以gridset名称和zoom等级命名:

2.打开D:\GISData\gwccache\geowebcache.xml文件,在Layers节点下加入如下代码:

  1. <wmsLayer>
  2. <!-- 这里的name名称要和上面缓存文件夹的名称一致 -->
  3. <name>group_yingshi_xa_f1</name>
  4. <mimeFormats>
  5. <string>image/gif</string>
  6. <string>image/jpeg</string>
  7. <string>image/png</string>
  8. <string>image/png8</string>
  9. </mimeFormats>
  10. <gridSubsets>
  11. <gridSubset>
  12. <gridSetName>EPSG:4326</gridSetName>
  13. <!-- 这里是缓存文件地图的范围 -->
  14. <extent>
  15. <coords>
  16. <double>108.940032958984</double>
  17. <double>34.2428131103516</double>
  18. <double>108.942024230957</double>
  19. <double>34.2460136413574</double>
  20. </coords>
  21. </extent>
  22. </gridSubset>
  23. </gridSubsets>
  24. <wmsUrl>
  25. <!-- 经过测试,如果你只是想发布瓦片缓存地图,这里wmslayer url可以随便写一个 -->
  26. <string>http://127.0.0.1/wms</string>
  27. </wmsUrl>
  28. </wmsLayer>

3.重启tomcat服务器,会发现图层列表中多了一个图层:

4.以png方式浏览,缓存地图加载成功:

四、问题解决

通过openlayers访问时会出现烦人的400错误,通过查看客户端代码发现,extend为[-180,-90,180,90]



我们只需改为地图实际的extend即可:

独立部署GeoWebCache的更多相关文章

  1. ABP .Net Core API和Angular前端APP独立部署跨域问题(No Access-Control-Allow-Origin)

    前言: 通过ABP官网(https://aspnetboilerplate.com)下载ASP.NET Core 2.x + Angular模板项目是按ReStful风格架构Web API和angul ...

  2. .NET Core部署中你不了解的框架依赖与独立部署

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9703460.html NET Core项目发布的时候你有没有注意到这两个选项呢?有没有纠结过框架依赖与独 ...

  3. maven maven-war-plugin 解决java war项目间的依赖(两个war都可独立部署运行,maven 3.2.x亲测)

    最近整理基础框架,有些项目不想分布式,所以基础框架必须同时可独立部署,也可直接被作为依赖和业务工程打到一起,记录下解决war项目依赖的要点,一开始用warpath,结果报找不到,有些帖子还是17年的, ...

  4. 独立部署GlusterFS+Heketi实现Kubernetes共享存储

    目录 环境 glusterfs配置 安装 测试 heketi配置 部署 简介 修改heketi配置文件 配置ssh密钥 启动heketi 生产案例 heketi添加glusterfs 添加cluste ...

  5. Jenkins系统+独立部署系统

    原文出自:http://os.51cto.com/art/201601/504846.htm 有了Jenkins,为什么还需要一个独立的部署系统? 现在已经有Jenkins,它自身提供了丰富的部署插件 ...

  6. 开源一个由.netcore/.net framework4.6开发的saas微商城+独立部署版本微小程序商城

    一.项目介绍 开源一款基于.NET4.6开发的一款完整的微信商城SAAS平台,前端支持小程序.h5,由前端商城,商户管理后台,平台管理后台三大块组成,sass功能完善,支持商户拖拽式零代码创建并提交上 ...

  7. activiti工作流的web流程设计器整合视频教程 SSM和独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  8. activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  9. activiti web流程设计器 工作流的 整合视频教程 SSM和独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

随机推荐

  1. Java面试(4)

    1 哈希函数满足什么条件? 计算简单/散列地址分布均匀. 2 hash处理冲突方式?HashMap采用的什么办法? 开放地址法: 线性探测 . 线性补偿法.伪随机数法. 拉链法:HashMap采用链地 ...

  2. String to Integer (atoi) ???

    #define INT_MAX 2147483647 #define INT_MIN -2147483648 class Solution { public: int atoi(const char ...

  3. Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块

    一.前提介绍: 可以开辟作用域的只有类,函数,和模块            for循环 if,else: 不能开辟自己的作用域 避免程序复用和重复调用,将这些写到一个.py文件中,做成一个模块,进行调 ...

  4. python's thirty day for me 异常处理

    ---恢复内容开始--- 程序的异常:报错之后程序终止. 异常处理搭配使用: l = ['创建老师','创建学校'] while True: try: for num,item in enumerat ...

  5. java - 输入的字符串中是否包含中文

    今天和同事在讨论一个问题,需要检查“输入的字符串中是否包含中文”,刚开始想到是用正则表达式,正则表达式中是以[u4e00-u9fa5]来全匹配字符是否是中文,但现在面临的问题是这个字符串中还可能包含英 ...

  6. Windows访问Linux下的共享目录的配置方法

    user安全级别 第一步:安装samba3(如果已经安装就跳过这一步)  [root@rhce2 /]# yum groupinstall "CIFS file server" 第 ...

  7. imp导入数据的时候报错:ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区

    在oracle里创建表,报出错: ORA-01658: 无法为表空间space中的段创建 INITIAL 区: 或者: ORA-01658: unable to create INITIAL exte ...

  8. ASP.NET MVC 和 WebForm的权限控制

    今天主要讲一下对于ASP.NET的页面级权限控制 数据结构:用户表.角色表.权限表.角色权限派生表 为用户添加权限的数据配置后, 自定义类对MVC继承Controller 对其内置方法Initiali ...

  9. vectors 使用应该注意到的问题

    ector1. vector的元素必须具备 assignable和 copyable . 2.vector的迭代器是随机存取迭代器. 3.要考虑到vector的大小(size)和容量(capacity ...

  10. 数字图像处理实验(10):PROJECT 05-01 [Multiple Uses],Noise Generators 标签: 图像处理MATLAB 2017-05-26 23:36

    实验要求: Objective: To know how to generate noise images with different probability density functions ( ...