使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

时间:2024-03-23 08:58:05

网上的很多都没说清楚,埋了很多坑,自己试验成功后将方法公布。此文在20180815更新

1.  概述

严格来说,是利用GeoServer的自带Web服务器,使用GeoWebCache独立产品,发布ArcGIS的缓存切片(离散型切片)。GeoServer现在的版本,已经集成了GeoWebCache的大部分功能,但是如果想调用第三方的瓦片,还需要安装独立的GeoWebCache产品。老规矩,先上效果图:(好爽,不用花钱买ArcGIS了)

使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

图1 GeoServer发布ArcGIS切片效果图

GeoServer缓存瓦片格式和ArcGIS缓存瓦片的存储目录结构不同,如果手里有一套切好的ArcGIS格式瓦片,但是不想安装ArcGIS Server,可直接利用免费的开源的GeoServer将其发布为瓦片服务供前端调用。下图分别是GeoServer和ArcGIS Server的瓦片结构,可以看出,命名方式并不相同。本文即介绍实现该目的GeoWebCache的相关配置方法。

使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

图2 GeoServer的瓦片结构

使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

图3 ArcGIS Server的瓦片结构

2. 下载安装

GeoServer和GeoWebCache的下载安装都非常简单,这里选择“独立于平台的二进制版本”,即通常讲的免安装版。选择GeoServer2.9.0GeoWebCache1.10.0,都从官网下载,需要Java 8的支持。GeoServer可解压缩到任意位置,GeoWebCache需解压缩至GeoServer的webapps目录下,如“D:\geoserver-2.9.0\webapps\”,只有这样GeoWebCache才能利用GeoServer集成的Jetty Web应用服务器打开服务主页,当然如果安装了Tomcat,就本文想达成的目的来说,GeoServer甚至可以不用安装。(我蒙的啊,没试过)

使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

图4 GeoWebCache部署目录

注意,本文开始选择的最新版的GeoServer 2.12.0和GeoWebCache 1.12.2,会存在“HTTP ERROR:503 Service Unavailable”的提示,GeoWebCache主页打不开,替换为现在版本,可成功运行。(开源的坑就是多啊~_~)

3. GeoWebCache的配置

1.新建缓存配置目录(姑且这么叫),并修改web-inf文件夹下的文件web.xml,在</context-param>节点后添加如下节点,记录新建的目录:

    <context-param>

        <param-name>GEOWEBCACHE_CACHE_DIR</param-name>

        <param-value>D:\geoserver-2.9.0\webapps\geowebcache\arcgis</param-value>

    </context-param>

本文新建了个arcgis文件夹,可任意命名,只要与web.xml添加的节点中保持一致。

 使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

2.重启服务

会发现该目录下自动生成了几个文件,注意这里的geowebcache.xml

使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

3.添加ArcGIS切片的路径

修改在上文出现的geoserver-2.9.0\webapps\geowebcache\arcgis\geowebcache.xm文件,在<layer>…</layer>节点中添加如下节点:

注意:启动服务时该配置文件中所有服务对应的切片方案和切片路径必须都存在,否则打不开GeoWebCache主页,显示“503...”,要删去不存在的arcgisLayer节点,并重启服务!

<arcgisLayer>

<name>fsRoads</name>

<tilingScheme>C:\Users\gishy\Desktop\TileTest\testOne08\Layers\conf.xml</tilingScheme>

<tileCachePath>C:\Users\gishy\Desktop\TileTest\testOne08\Layers\_alllayers</tileCachePath>

<hexZoom>false</hexZoom>

</arcgisLayer>

fsRoads为服务名,GeoWebCache服务页面中可看到改名字,这里随便起的。conf.xml就是ArcGIS Server发布服务设置缓存后生成的配置文件,该目录就是瓦片所在目录,是不是很眼熟?

使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

4. 浏览服务

再次重启GeoServer,进入GeoWebCache主页:

在以下链接中可以看到发布的服务:

A list ofall the layers and automatic demos

使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

使用Openlayer即可浏览服务,出现文初的效果图。

使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图

可以看出,并没有修改GeoServer的任何地方,GeoWebCache只是利用GeoServer启动服务。