GeoWebCache 关于GeoWebCache的部署说明
来源:互联网 发布:小莫零食淘宝店 编辑:程序博客网 时间:2024/04/28 06:40
转:http://blog.csdn.net/wd4java/article/details/44677781
原文连接:http://www.cnblogs.com/znlgis/p/3487663.html
总结了网络的各种资料终于成功部署,并加载arcgis wms服务(当然tilecache部署失败了,有时间再试试)
主要修改2个地方(包用的1.5的,目前最新的1.7的部署失败)
1.将geowebcache-1.5.3-war 解压的tomcat webapp下
修改web.xml内容
- <context-param>
- <param-name>GEOWEBCACHE_CACHE_DIR</param-name>
- <param-value>D:/geowebcache/data</param-value>
- </context-param>
在<web-app>根目录下添加上面代码param-value:指定图片缓存位置
2.启动tomcat
在D:/geowebcache/data下会生成如下文件
2.修改geowebcache.xml添加自己的图层服务,进行切图
修改后的内容
- <?xml version="1.0" encoding="utf-8"?>
- <gwcConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://geowebcache.org/schema/1.5.3"
- xsi:schemaLocation="http://geowebcache.org/schema/1.5.3 http://geowebcache.org/schema/1.5.3/geowebcache.xsd">
- <version>1.5.3</version>
- <backendTimeout>120</backendTimeout>
- <serviceInformation>
- <title>GeoWebCache</title>
- <description>GeoWebCache is an advanced tile cache for WMS servers.It supports a large variety of protocols and
- formats, including WMS-C, WMTS, KML, Google Maps and Virtual Earth.</description>
- <keywords>
- <string>WFS</string>
- <string>WMS</string>
- <string>WMTS</string>
- <string>GEOWEBCACHE</string>
- </keywords>
- <serviceProvider>
- <providerName>John Smith inc.</providerName>
- <providerSite>http://www.example.com/</providerSite>
- <serviceContact>
- <individualName>John Smith</individualName>
- <positionName>Geospatial Expert</positionName>
- <addressType>Work</addressType>
- <addressStreet>1 Bumpy St.</addressStreet>
- <addressCity>Hobart</addressCity>
- <addressAdministrativeArea>TAS</addressAdministrativeArea>
- <addressPostalCode>7005</addressPostalCode>
- <addressCountry>Australia</addressCountry>
- <phoneNumber>+61 3 0000 0000</phoneNumber>
- <faxNumber>+61 3 0000 0001</faxNumber>
- <addressEmail>john.smith@example.com</addressEmail>
- </serviceContact>
- </serviceProvider>
- <fees>NONE</fees>
- <accessConstraints>NONE</accessConstraints>
- </serviceInformation>
-
- <gridSets>
-
- <gridSet>
-
- <name>EPSG:4326</name>
- <srs>
- <number>4326</number>
- </srs>
- <extent>
- <coords>
- <double>121.067963</double>
- <double>36.699255</double>
- <double>122.939758</double>
- <double>37.647947</double>
- </coords>
- </extent>
- <scaleDenominators>
- <double>18489297.737236</double>
- <double>9244648.868618</double>
- <double>4622324.434309</double>
- <double>2311162.217155</double>
- <double>1155581.108577</double>
- </scaleDenominators>
- <tileHeight>256</tileHeight>
- <tileWidth>256</tileWidth>
- </gridSet>
- </gridSets>
-
- <layers>
- <wmsLayer>
- <name>GaoDeMapTile</name>
- <mimeFormats>
- <string>image/png</string>
- </mimeFormats>
- <gridSubsets>
- <gridSubset>
- <gridSetName>EPSG:4326</gridSetName>
- </gridSubset>
- </gridSubsets>
- <wmsUrl>
- <string>http://172.31.170.98:6080/arcgis/services/GaoDeMapTile/MapServer/WMSServer?</string>
- </wmsUrl>
- <wmsLayers>0</wmsLayers>
- </wmsLayer>
- </layers>
-
- </gwcConfiguration>
当然具体的参数需要自己去查找与自己图层一致的参数(可以参考部署说明(2))3.我是直接预览的
4.可以查看1中生成的文件夹内容,就是缓存的切片
5.附上openlayer调用显示代码
- <pre name="code" class="html"><html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>openlayer EPSG:4326 image/png</title>
- <link rel="stylesheet" type="text/css" href="openlayers/theme/default/style.css"/>
- <style type="text/css">
- body { font-family: sans-serif; font-weight: bold; font-size: .8em; }
- body { border: 0px; margin: 0px; padding: 0px; }
- #map { width: 100%; height: 100%; border: 0px; padding: 0px; }
- </style>
- <script type="text/javascript" src="openlayers/OpenLayers.js"></script>
- <script type="text/javascript">
- var map, demolayer;
- OpenLayers.DOTS_PER_INCH = 90.71428571428572;
- OpenLayers.Util.onImageLoadErrorColor = 'transparent';
- function init(){
- var mapOptions = {
- resolutions: [0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.02197265625,
- 0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 6.866455078125E-4,
- 3.4332275390625E-4, 1.71661376953125E-4, 8.58306884765625E-5, 4.291534423828125E-5,
- 2.1457672119140625E-5, 1.0728836059570312E-5, 5.364418029785156E-6, 2.682209014892578E-6,
- 1.341104507446289E-6, 6.705522537231445E-7, 3.3527612686157227E-7
- ],
- projection: new OpenLayers.Projection('EPSG:4326'),
- maxExtent: new OpenLayers.Bounds(-180.0,-90.0,180.0,90.0),
- units: "degrees",
- controls: []
- };
- map = new OpenLayers.Map('map', mapOptions );
-
- map.addControl(new OpenLayers.Control.PanZoomBar({
- position: new OpenLayers.Pixel(0, 5)
- }));
- map.addControl(new OpenLayers.Control.Navigation());
- map.addControl(new OpenLayers.Control.Scale($('scale')));
- map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
-
- demolayer = new OpenLayers.Layer.WMS(
- "GaoDeMapTile","http://172.31.170.98:6080/arcgis/services/GaoDeMapTile/MapServer/WMSServer?",
- {layers: '0', format: 'image/png' },
- { tileSize: new OpenLayers.Size(256,256)}
- );
- map.addLayer(demolayer);
- map.zoomToExtent(new OpenLayers.Bounds(121.067963, 36.699255,
- 122.939758, 37.647947)
- );
- }
- </script>
- </head>
- <body onLoad="init()">
- <div id="map"></div>
- </body>
- </html>
1、切片的缓存问题
当地图服务(这里默认指WMS)的数据更新时,GeoWebCache的切片如何随之更新,客户浏览器上的缓存如何更新成了一个绕不开的问题。GeoWebCache提供了相应的配置项供我们自定义服务端和客户端的切片保存时间。
-
- <expireCacheList>
- <expirationRule minZoom="0" expiration="14400" />
- <expirationRule minZoom="10" expiration="7200" />
- </expireCacheList>
-
- <expireClientsList>
- <expirationRule minZoom="0" expiration="7200" />
- <expirationRule minZoom="10" expiration="600" />
- </expireClientsList>
如果你不设置该配置项,服务端和客户端的默认缓存时间都是两个小时,你也可以根据需要单独设置任何一个缩放级别的缓存时间。
2、图片格式和图片压缩的问题
切片的一般是在浏览器上使用的,切片传到浏览器给客户展现出来需要考虑到使用的流量和需要的时间的问题,最好可以做到加载时间短,占用浏览少,试了很多办法,最有效的就是压缩切片。 GeoWebCache提供了相应的压缩切片的配置,我试了一下感觉效果最明显的还是对JPEG格式图片的压缩,大家可以试试,如果有问题可以跟我说。
-
- <formatModifiers>
-
- <formatModifier>
-
- <responseFormat>image/jpeg</responseFormat>
-
- <requestFormat>image/png</requestFormat>
-
- <transparent>false</transparent>
-
- <bgColor>0xFFFFFF</bgColor>
-
- <palette>somepalette</palette>
-
- <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>
-
- <gridSubsets>
- <gridSubset>
- <gridSetName>EPSG:2383</gridSetName>
- <extent>
- <coords>
- <double>-26</double>
- <double>-402</double>
- <double>525</double>
- <double>20</double>
- </coords>
- </extent>
- </gridSubset>
- </gridSubsets>
- <wmsUrl>
- <string>http://test/arcgis/services/NEW-layer2/layer2/MapServer/WMSServer?</string>
- </wmsUrl>
- <wmsLayers>0</wmsLayers>
- <transparent>false</transparent>
- <bgColor>0xFFFFFF</bgColor>
- </wmsLayer>
这里需要注意的是引用ArcGIS Sever发布的WMS服务的时候别忘了最后的那个"?",不加可能会有问题。还有就是要根据具体的需求配置好wmsLayers项,这个配置项是指你要在切片中显示的图层,多配或者少配显示效果都不对。再就是要配置正确你的坐标系和坐标范围,这些信息都可以从ArcGIS Server找到,如果这个设置有问题很可能会出现坐标计算不正确或者图像超出范围等问题。 0 0