最近因为工作需要学习了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. CSS background-color 、image 背景图片

    背景颜色 background-color 语法: background-color:<color> 默认值:transparent  透明 适用于:所有元素 继承性:无 动画性:是 计算 ...

  2. CSS3 text-shadow

    <!DOCTYPE html > <html > <head> <meta charset="utf-8"> <title&g ...

  3. Linux挂载卸载光盘&实践

    在Linux下有时候需要挂载光盘,拷贝文件或安装系统,例如拷贝Redhat操作系统镜像文件等.下面介绍一下在Linux系统下挂载.卸载光盘的方法. 在Linux系统中,每一个物理设备都可以看做是一个文 ...

  4. crontab不执行perl脚本分析

    在新装的Linux服务器上部署了一个作业监控磁盘空间并提前告警,在shell脚本里面调用了一个perl脚本发送告警邮件.结果出现了一个很奇怪的现象:如果手工执行该脚本/home/oracle/scri ...

  5. Reporting Services 错误案例一则

    遇到一个有意思的Reporting Services报表的案例,在2015-01-30号的凌晨20分左右的时候,有人发现Reporting Services的速度非常慢,而且最后有抛出异常,当时不知道 ...

  6. Unable to determine if the owner (Domain\UserName) of job JOB_NAME has server access

    早上巡检的的时候,发现一数据库的作业报如下错误(作业名等敏感信息已经替换),该作业的OWNER为一个域账号: JOB RUN: 'JOB_NAME' was run on 2016-6-1 at 7: ...

  7. ORACLE的SQL JOIN方式小结

    在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结),官方的解释如下所示 A join is a query that combines row ...

  8. linux shell for循环使用命令中读取到的值实例

    #!/bin/bash file="states" for state in `cat $file` do echo "Visit beautiful $state&qu ...

  9. java常用的文件读写操作

    现在算算已经做java开发两年了,回过头想想还真是挺不容易的,java的东西是比较复杂但是如果基础功扎实的话能力的提升就很快,这次特别整理了点有关文件操作的常用代码和大家分享 1.文件的读取(普通方式 ...

  10. 数据处理之PostgreSQL过程语言学习

    前段时间,公司更换新的PostgreSQL数据集市的系统过程中,自己下载了postgresqlAPI的pdf文件研究了一下PostgreSQL数据集市.发现使用PostgreSQL过程语言可以大大加快 ...