geoserver(旧版本的geowebcache)发布arcgis切片数据的一点问题

最近项目中,由于成本的考虑,要弃用arcgis的产品,用arcgis server 发布的的(影像)切片服务也不能直接使用,导致产生的缓存切片造成了浪费,再加上想偷懒

项目主要开发环境:1.openlayer+arcgis for server 10.2 /geoserver

根据开发环境想到了两个解决方案:

1.直接用openlayers 加载缓存后的arcgis切片(explode松散型切片),相关方法在文章:https://blog.csdn.net/qq_26991807/article/details/80261169 中代码有介绍

只需将缓存好的切片数据放到相应的目录中,用于程序进行调用即可(注意只能用于接受影像切片缓存,arcgis10.2 的矢量缓存好像切片原理不一样,导致不能正常成功的加载)

方法二

打算直接用geoServer来对该arcgis切片进行wmts发布。(感觉有点多此一举,但是为了练手多动手总没错)

参考连接:

https://blog.csdn.net/wo_buzhidao/article/details/78680117  https://www.cnblogs.com/flanker521/p/5845793.html 
特点:1.将arcgis已经发布的切片数据的进行cachhe缓存,样式和标注都已经完成了。
2.修改缓存切片的配置信息,相对第一种方法,暂时比较省时。

3.需要进行相关的设置,需要进行单独安装 geowebcache。

具体步骤如下:

1.下载geowebcache.war ,然后放到tomcat的webapp下面运行tomcat进行解压,解压完成后,删除war包,

2.进入geowebcache的web-inf目录下编辑 web.xml 文件,在web-app元素下面添加用于保存相关缓存配置文件的目录(可以新建或者指定相应目录),编辑好后,重启Tomcat,
重启!重启!重启!重启后会在该目录下生成相关的配置文件,包括 geowebcache.xml

<context-param>
    <param-name>GEOWEBCACHE_CACHE_DIR</param-name>
    <param-value>D:\apache-tomcat-7.0.52-windows-x64\webapps\geowebcache\WEB-INF\temp</param-value>
 </context-param>

 3.编辑上面设置的缓存目录中的 geowebcache.xml 在layers元素中添加切片(可以放置arcgis切片数据)的目录位置,用arcgisLayer标签包裹,例如:

	<arcgisLayer>
      <name>szdt</name>
      <tilingScheme>D:\\szdt_Tiledata\\szdt_CAD_lianwuqujian\\layers\\Conf.xml</tilingScheme>
      <tileCachePath>D:\\szdt_Tiledata\\szdt_CAD_lianwuqujian\\layers\\_alllayers</tileCachePath>
      <hexZoom>false</hexZoom>      
    </arcgisLayer>


    <arcgisLayer>
      <name>World Cities Population</name>
      <tilingScheme>D:\\szdt_Tiledata\\World Cities Population\\Conf.xml</tilingScheme>
      <tileCachePath>D:\\szdt_Tiledata\\World Cities Population\\_alllayers</tileCachePath>
      <hexZoom>false</hexZoom>
    </arcgisLayer>

随后重启tomcat即可以在http://localhost:8080/geowebcache/home看到该切片服务,openlayers加载方法wms方式

var extent = [112.89757872872849,22.331949154617746,115.33414679869873,24.768517224587924];//深圳地区
      var projection = new ol.proj.get("EPSG:4326");
      var projectionExtent = projection.getExtent();
      var layers=[      
                new ol.layer.Tile({      
                  
                  source:new ol.source.TileWMS({      
                      url:'http://localhost:8080/geowebcache/service/wms', 
                      extent:extent,   
                      params:{      
                          'LAYERS':'szdt',//postgis:procity,postgis:loccity 此处可以是单个图层名称,也可以是图层组名称,或多个图层名称  
                          
                          'FORMAT': 'image/png',
                          'VERSION': '1.1.1', 
                          'TILED':false ,
                          'CRS':'EPSG:4326' ,
                          // 'CRS' :'EPSG:4326' ,
                          // 'BBOX':[112.89757872872849,22.331949154617746,115.33414679869873,24.768517224587924],
                      },
                       projection:'EPSG:4326',      
                      // serverType:'geoserver'    //服务器类型  
                      tileGrid:new ol.tilegrid.TileGrid({
                        resolutions:[0.00475892201166056, 0.00237946100583028, 0.00118973050291514, 5.9486525145757E-4, 2.97432625728785E-4, 1.5228550437313792E-4, 7.614275218656896E-5, 3.807137609328448E-5, 1.903568804664224E-5, 9.51784402332112E-6, 4.75892201166056E-6, 2.37946100583028E-6, 1.18973050291514E-6, 5.9486525145757E-7, 2.97432625728785E-7],
                          origin: new ol.extent.getBottomLeft(projectionExtent),//[-400.0,399.9999999999998],
                          extent:extent//[112.89757872872849,22.331949154617746,115.33414679869873,24.768517224587924]
                    })
                  })     
              })      
          ]; 

注意:1.arcgis 10.2 对矢量的缓存切片与影像的缓存不太一致,导致不能加载矢量的切片,

2.还有就是geowebcache和geoserver的版本也会影响切片的正常加载

3.这里用的是压缩包基于tomcat的geowebcache部署。现在的geoserver已经内置了geowebcahce,所以最好建议直接使用geoserver来进行服务发布。下一篇将介绍基于tomcat的geoserver的部署。

转载自:https://blog.csdn.net/qq_26991807/article/details/80973167

You may also like...