網上的很多都沒說清楚,埋了很多坑,自己試驗成功後將方法公佈。此文在20180815更新
1. 概述
嚴格來說,是利用GeoServer的自帶Web服務器,使用GeoWebCache獨立產品,發佈ArcGIS的緩存切片(離散型切片)。GeoServer現在的版本,已經集成了GeoWebCache的大部分功能,但是如果想調用第三方的瓦片,還需要安裝獨立的GeoWebCache產品。老規矩,先上效果圖:(好爽,不用花錢買ArcGIS了)
圖1 GeoServer發佈ArcGIS切片效果圖
GeoServer緩存瓦片格式和ArcGIS緩存瓦片的存儲目錄結構不同,如果手裏有一套切好的ArcGIS格式瓦片,但是不想安裝ArcGIS Server,可直接利用免費的開源的GeoServer將其發佈爲瓦片服務供前端調用。下圖分別是GeoServer和ArcGIS Server的瓦片結構,可以看出,命名方式並不相同。本文即介紹實現該目的GeoWebCache的相關配置方法。
圖2 GeoServer的瓦片結構
圖3 ArcGIS Server的瓦片結構
2. 下載安裝
GeoServer和GeoWebCache的下載安裝都非常簡單,這裏選擇“獨立於平臺的二進制版本”,即通常講的免安裝版。選擇GeoServer2.9.0和GeoWebCache1.10.0,都從官網下載,需要Java 8的支持。GeoServer可解壓縮到任意位置,GeoWebCache需解壓縮至GeoServer的webapps目錄下,如“D:\geoserver-2.9.0\webapps\”,只有這樣GeoWebCache才能利用GeoServer集成的Jetty Web應用服務器打開服務主頁,當然如果安裝了Tomcat,就本文想達成的目的來說,GeoServer甚至可以不用安裝。(我蒙的啊,沒試過)
圖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添加的節點中保持一致。
2.重啓服務
會發現該目錄下自動生成了幾個文件,注意這裏的geowebcache.xml
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發佈服務設置緩存後生成的配置文件,該目錄就是瓦片所在目錄,是不是很眼熟?
4. 瀏覽服務
再次重啓GeoServer,進入GeoWebCache主頁:
在以下鏈接中可以看到發佈的服務:
A list ofall the layers and automatic demos
使用Openlayer即可瀏覽服務,出現文初的效果圖。
可以看出,並沒有修改GeoServer的任何地方,GeoWebCache只是利用GeoServer啓動服務。