最近因为工作需要学习了GeoWebCache,有了一些实战经验跟大家分享一下。

废话不多说,直接上问题!

1、切片的缓存问题

当地图服务(这里默认指WMS)的数据更新时,GeoWebCache的切片如何随之更新,客户浏览器上的缓存如何更新成了一个绕不开的问题。GeoWebCache提供了相应的配置项供我们自定义服务端和客户端的切片保存时间。

<!-- 可选:一个瓦片在服务器保持可用的秒数。后续请求将取回的结果是一个新的瓦片。默认是永久cache。参数列表应该常常以minZoom=""开头,然后单调递增。特殊值:-1表示从不缓存,-2表示从不过期 -->
<expireCacheList>
<expirationRule minZoom="" expiration="" />
<expirationRule minZoom="" expiration="" />
</expireCacheList>
<!-- 可选:客户端从GWC收到瓦片之后,需要缓存的时间(秒为单位)。默认值使用和WMS服务器提供的过期时间相同。如果值不可用,缓存2小时,参见expireCacheList -->
<expireClientsList>
<expirationRule minZoom="" expiration="" />
<expirationRule minZoom="" expiration="" />
</expireClientsList>

如果你不设置该配置项,服务端和客户端的默认缓存时间都是两个小时,你也可以根据需要单独设置任何一个缩放级别的缓存时间。

2、图片格式和图片压缩的问题

切片的一般是在浏览器上使用的,切片传到浏览器给客户展现出来需要考虑到使用的流量和需要的时间的问题,最好可以做到加载时间短,占用浏览少,试了很多办法,最有效的就是压缩切片。 GeoWebCache提供了相应的压缩切片的配置,我试了一下感觉效果最明显的还是对JPEG格式图片的压缩,大家可以试试,如果有问题可以跟我说。

<!-- 可选:格式修改器,这些也可以通过对各个图层单独定义 -->
<formatModifiers>
<!-- 能够有一个和多个这样的元素 -->
<formatModifier>
<!-- 必要:应用于JPEG -->
<responseFormat>image/jpeg</responseFormat>
<!-- 可选:从后端的PNG请求时,阻止双重压缩 -->
<requestFormat>image/png</requestFormat>
<!-- 可选:透明度支持 -->
<transparent>false</transparent>
<!-- 可选:背景颜色 -->
<bgColor>0xFFFFFF</bgColor>
<!-- 可选WMS服务器使用的调色板 -->
<palette>somepalette</palette>
<!-- 可选:调节压缩等级,.0是最佳质量 -->
<compressionQuality>0.9</compressionQuality>
</formatModifier>
</formatModifiers>

这里需要注意的是,最好把bgColor调为白色,这样图片大小会小一些,而且效果也会好一些,而compressionQuality最好不要小于0.75(官网上说0.75以上图片质量基本无损),当然还是要根据使用中的具体情况来调整,我就是用的0.5,完全满足要求。

3、使用ArcGIS Server发布地图服务的问题

ArcGIS Server很强大,美中不足的是它提供的Javascript api过于庞大,不适合手机上使用,于是就会想到用openlayers,但openlayers调用ArcGIS Server的切片服务的显示效果又很差(尤其是自定义坐标系),于是,我才会想到用GeoWebCache,还好GeoWebCache支持ArcGIS Server的WMS服务。

<wmsLayer>
<name>NEW-layer2</name>
<mimeFormats>
<string>image/jpeg</string>
</mimeFormats>
<!-- Grid Subset Example -->
<gridSubsets>
<gridSubset>
<gridSetName>EPSG:</gridSetName>
<extent>
<coords>
<double>-</double>
<double>-</double>
<double></double>
<double></double>
</coords>
</extent>
</gridSubset>
</gridSubsets>
<wmsUrl>
<string>http://test/arcgis/services/NEW-layer2/layer2/MapServer/WMSServer?</string>
</wmsUrl>
<wmsLayers></wmsLayers>
<transparent>false</transparent>
<bgColor>0xFFFFFF</bgColor>
</wmsLayer>

这里需要注意的是引用ArcGIS Sever发布的WMS服务的时候别忘了最后的那个"?",不加可能会有问题。还有就是要根据具体的需求配置好wmsLayers项,这个配置项是指你要在切片中显示的图层,多配或者少配显示效果都不对。再就是要配置正确你的坐标系和坐标范围,这些信息都可以从ArcGIS Server找到,如果这个设置有问题很可能会出现坐标计算不正确或者图像超出范围等问题。

关于GeoWebCache的部署说明的更多相关文章

  1. 矢量切片应用中geoserver与geowebcache分布式部署方案

    在进行GIS项目开发中,常使用Geoserver作为开源的地图服务器,Geoserver是一个JavaEE项目,常通过Tomcat进行部署.而GeoWebCache是一个采用Java实现用于缓存WMS ...

  2. Geoserver+Tomcat+GeoWebCache搭建地图服务

    依赖TomcatGeoserverGeoWebCache环境部署JDKTomcat服务器Geoserver配置GeoWebCache配置环境启动使用使用geowebcache进行切片 依赖 Tomca ...

  3. geoserver集成以及部署arcgis server瓦片数据

    关注重点: 一般来说,geoserver是不支持arcgis server格式瓦片数据部署的,至少我本机的geoserver版本(2.8.5)以及之前的版本并没有集成进来,不知道目前官网的最新版是否支 ...

  4. 基于ArcGIS API for Javascript的地图编辑工具

    最近工作上需要用ArcGIS API for Javascript来开发一个浏览器上使用的地图编辑工具,分享一下一些相关的开发经验. 我开发的地图编辑工具是根据ESRI提供的例子修改而来的,参考的例子 ...

  5. 独立部署GeoWebCache

    在进行GIS项目开发中,常使用Geoserver作为开源的地图服务器,Geoserver是一个JavaEE项目,常通过Tomcat进行部署.而GeoWebCache是一个采用Java实现用于缓存WMS ...

  6. 基于Tomcat部署的Geoserver配置Geowebcache,并转发ArcGIS切片

    1.将GeowebCache的war包解压到tomcat的webapp下,打开war包中的WEB-INF中的web.xml文件,同时创建一个你想保存geowencache的切片的空文件夹,例如我命名叫 ...

  7. [置顶] 遵循Java EE标准体系的开源GIS服务平台之二:平台部署

    传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 传送门 ☞ GoF23种设计模式 ☞ 转载请注明 ☞ http://blog.csd ...

  8. Geoserver2.15.1 配置自带 GeoWebCache 插件发布 ArcGIS Server 瓦片(附配置好的 Geoserver2.15.1 下载)

    之前写过一篇关于 Geoserver2.8.5 版本的部署配置发布 ArcGIS Server 瓦片点击查看,那是下载 Geoserver2.8.5 源码编译,重新打包 jar 来部署配置思路的,版本 ...

  9. [原]CentOS7.2部署node-mapnik

    转载请注明表作者think8848及出处(http://think8848.cnblogs.com) node-mapnik依赖项中要求g++ >= 5, toolchain (>= GL ...

随机推荐

  1. React Native知识5-Touchable类组件

    React Native 没有像web那样可以给元素绑定click事件,前面我们已经知道Text组件有onPress事件,为了给其他组件 也绑定点击事件,React Native提供了3个组件来做这件 ...

  2. IOS开发之Bug--使用xib的自动布局和代码中修改遇到的bug

    首先,在xib中约束了宽高22,但是需要代码动态重设,所以一开始如下设置,但是实际显示的仍然是22,而不是重设的值: 然后直接拿xib的将布局约束对象拖线重新通过代码重设约束值,虽然打印的结果宽高值是 ...

  3. C# 6.0新特性---语法糖

    转载:http://www.cnblogs.com/TianFang/p/3928172.html 所谓语法糖就是在编译器里写做文章,达到简化代码书写的目的,要慎重使用,省略过多不易理解. NULL检 ...

  4. 显示转换explicit和隐式转换implicit

    用户自定义的显示转换和隐式转换 显式转换implicit关键字告诉编译器,在源代码中不必做显示的转型就可以产生调用转换操作符方法的代码. 隐式转换implicit关键字告诉编译器只有当源代码中指定了显 ...

  5. Linux SendMail服务启动慢总结

    在 CentOS release 6.6 上启动sendmail服务时发现服务启动过程非常慢,基本上要耗费3分多钟.有点纳闷:什么原因导致sendmail启动这么慢?搜索了这方面的一些资料,结合自己的 ...

  6. ORACLE调整SGA_TARGET值耗费时间长案例

    在一数据库版本为(标准版)Oracle Database 10g Release 10.2.0.4.0 - 64bit Production 的服务器上调整 sga_target时,遇到命令执行了非常 ...

  7. Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

    新下载的php3.23,本地访问数据库可以,服务器上不行.如下: :( Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' 错误位置 FILE: /u ...

  8. js字符串转为日期格式

    1. <script type="text/javascript"> //字符串转日期格式,strDate要转为日期格式的字符串 function getDate(st ...

  9. 在MySQL中,如何计算一组数据的中位数?

    要得到一组数据的中位数(例如某个地区或某家公司的收入中位数),我们首先要将这一任务细分为3个小任务: 将数据排序,并给每一行数据给出其在所有数据中的排名. 找出中位数的排名数字. 找出中间排名对应的值 ...

  10. linux中offsetof与container_of宏定义

    linux内核中offsetof与container_of的宏定义 #define offsetof(TYPE, MEMBER)    ((size_t) &((TYPE *)0)->M ...