在进行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文件,加入如下内容:

 <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即可:

独立部署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. Jmeter录制HTTPS 补充

    Jmeter有录制功能,录制HTTPs需要增加一个证书配置,录制步骤如下: 1.打开jmeter,添加线程组.线程组右键,逻辑控制器>录制控制器 工作台 右键 非测试元件 >HTTP代理服 ...

  2. jQuery UI Draggable + Sortable 结合使用

    工作中需要将一个左边的设计好的控件,拖拽到右边的面板中,同时保持右边面板中的控件自由排序,这时候就需要及支持拖拽又支持排序的操作了, Demo截图:从左边控件拖到右边区域 代码段: <scrip ...

  3. js实现的点击div区域外隐藏div区域

    首先看下JS的事件模型,JS事件模型为向上冒泡,如onclick事件在某一DOM元素被触发后,事件将跟随节点向上传播,直到有click事件绑定在某一父节点上,如果没有将直至文档的根. 阻止冒泡:1.对 ...

  4. Python Twisted系列教程6:抽象地利用Twisted

    作者:dave@http://krondo.com/and-then-we-took-it-higher/  译者:杨晓伟(采用意译) 你可以从这里从头开始阅读这个系列. 打造可以复用的诗歌下载客户端 ...

  5. clock函数返回负值~ (转)

    使用clock() 函数来进行计时,时不时的返回一个很大的负数,怎么检查也检查不出错误,现在找出错误原因,给大家分享一下. 来源网页:http://kebe-jea.blogbus.com/logs/ ...

  6. collections、time和datetime模块

    主要内容: 一.collections模块 二.time模块 三.datetime模块 1️⃣  collection模块 1.什么是collections模块.干什么用? collections模块 ...

  7. 固本培元之三:Convert、运算符、流程控制语句、ref/out/in三种参数类型

    一.Convert类常用的类型转换方法Convert.ToInt32() 转换为整型(int)Convert.ToChar() 转换为字符型(char)Convert.ToString() 转换为字符 ...

  8. suse配置dhcp服务器

    Suse  dhcp服务器安装在安装系统时勾选 Suse dhcp 默认配置文件 /etc/dhcpd.conf Suse dhcp 启动程序 /etc/init.d/dhcpd restart 配置 ...

  9. PCL 编译中遇到 error C4996: 'pcl::SAC_SAMPLE_SIZE'

    1. error C4996: 'pcl::SAC_SAMPLE_SIZE': This map is deprecated and is kept only to prevent breaking ...

  10. ROS源码解读(一)--局部路径规划

    博客转载自:https://blog.csdn.net/xmy306538517/article/details/78772066 ROS局部路径导航包括Trajectory Rollout 和 Dy ...