1. 程式人生 > >利用全能電子地圖下載器+GeoWebCache釋出Arcgis Server快取瓦片過程全記錄

利用全能電子地圖下載器+GeoWebCache釋出Arcgis Server快取瓦片過程全記錄

前言

因為公司業務需要,要在內網搭建一個瓦片地圖伺服器,於是乎這個任務就落到我這個實習生身上了。這個屬於GIS(地理資訊系統)的範疇了,我也從來沒有接觸過這個,這個課程在大學的時候只有其他專業有。哎~沒辦法,還是要開始折騰,要找到一種方便好用的跨平臺方案還真不容易,前前後後試了好幾款軟體,才找到今天要說的這個組合。為了搭建這個服務足足折騰了我兩天啊!還不知道最後的效果是不是公司需要的,但願吧~

軟體選擇

這幾天主要試了三四款軟體:
- BIGEMAP
- TileMapServer
- 全能電子地圖下載器
- GeoWebCache
下面對這幾款做一個簡評吧:
- BIGEMAP:方便好用,並且提供基於XMAPP的離線地圖釋出服務,不過痛點就是要授權,它是使用一串客戶ID進行授權,網上的註冊機根本不管用!授權方式有兩種,一種是交錢,還有一種是幫忙推廣,不過聽說後者雖然是給你授權了,但是有些功能還是用不了。so,不太適合開發,不選擇
- TileMapServer:軟體體積小,但是痛點就是不適合初學者用啊,也就是說切圖的時候經緯度都要自己輸入,不僅如此,所有的地圖資料來源要我們自己提供,還要寫在複雜的配置檔案中,真的會崩潰!so,不太適合伺服器搭建,不選擇
- 全能電子地圖下載器:極力推薦!

設定簡單,並且提供多種地圖資料來源,支援多種格式匯出,能與ArcGis這類的專業GIS軟體對接。關鍵是,有綠色版!so,切圖就選它了!本文末放出下載連結
- GeoWebCache一個用Java Web編寫的地圖快取伺服器,內部用到了Spring框架,我想有Spring框架基礎知識的話會比較容易上手,因為許多配置都是定義在配置檔案中的,熟悉Spring的話看過去就會有親和感~這款軟體的優點是:開源、跨平臺!並且支援前者全能電子地圖下載器匯出的ArcGis Server 快取瓦片,非常適合伺服器端搭建!本文末放出下載連結

關於GeoWebCache的誤區

百度上很多資料說GeoWebCache只支援ArcGis Server的鬆散型(exploded format)

瓦片,而不支援緊湊型(compact format)瓦片。這個是在早期版本的說法了,後來比較新的版本官方在文件中說明了兩者都支援

以下是GeoWebCache1.6.3文件中Serving Layers From Pre-Cached ArcGIS Tiling Schemes這一節的引子內容:

GeoWebCache offers the possibility of serving cached tiles created by ArcGIS Server 9.2, 9.3 and 10.0, as long as the ArcGIS cache is in the so called “exploded format”, and not in the “compact format” introduced in ArcGIS Server 10.

This is so because the compact storage format uses a legacy file format to store multiple tiles inside a single file, but it’s structure is not published by ESRI.

以下是GeoWebCache1.10.0文件中Serving Layers From Pre-Cached ArcGIS Tiling Schemes這一節的引子內容:

GeoWebCache can serve cached tiles created by ArcGIS Server 9.2, 9.3 and 10.x, in either the so called “exploded format” or the “compact format” introduced in ArcGIS Server 10.

顯然,網上的說法並不準確。

思路

思路非常簡單:
1、從全能電子地圖下載器下載瓦片資料,並用該軟體轉換成ArcGis Server快取瓦片。
2、使用Notepad++將conf.xml和conf.cdi轉換成UTF-8無BOM模式
3、使用GeoWebCache釋出瓦片

環境

  • JDK:1.8.0_171
  • Tomcat:7.0.69
  • 全能電子地圖下載器:3.0
  • GeoWebCache:1.10.0

搭建過程

Setp1 利用全能電子地圖下載器下載瓦片資料

注:資料來源我選擇了谷歌地圖

選擇下載區域

左側勾選下載地圖等級

注:等級越高,瓦片數越多,體積越大

把下載的切片轉換為ArcGis Server快取瓦片

注:任務檔案要和左側的【任務列表】中的保持一致

轉換成功後會自動彈出所在資料夾

Setp2 GeoWebCache的部署與配置

部署GeoWebCache

將GeoWebCache1.10.0的war包放到Tomcat目錄中Webapps目錄下,啟動Tomcat即可,它會自動解壓部署。如果部署過程中沒有報錯的話,瀏覽器輸入
http://127.0.0.1:8080/geowebcache,會看到以下介面

注:部署成功後,先關閉Tomcat,並且刪除war包,不然再次啟動的時候會重新部署,之前做的所有配置都前功盡棄了。。。

配置GeoWebCache

尋找geowebcache.xml檔案位置

http://127.0.0.1:8080/geowebcache所開啟網頁的最下面,有這樣一行內容

畫紅框的地方就是配置檔案的所在地,這個是可以修改的,原始位置應該在tmp目錄下面的某個地方。

修改geowebcache.xml檔案位置,並配置geowebcache-core-context.xml

將上面查到的geowebcache.xml檔案拷貝到本地硬碟的某一個位置,我上面就拷貝到了C盤的map目錄下。
然後在Tomcat安裝目錄下的geowebcache目錄中開啟geowebcache-core-context.xml,找到以下這個bean標籤

將原來的

<constructor-arg ref="gwcDefaultStorageFinder" />

註釋掉,並新增

<constructor-arg value="C:\\map\\" />

這個value的值就是你geowebcache.xml檔案所在的物理磁碟路徑

轉換由全能電子地圖下載器生成的Arcgis Server瓦片快取的配置檔案格式



分別用NotePad++開啟,並選擇【使用UTF-8編碼】,儲存

如果不進行此步驟,啟動Tomcat的時候會報錯

上傳地圖切片資料

將地圖瓦片快取和conf.xmlconf.cdi複製到伺服器上的某個位置即可(建議為每一個快取建立一個資料夾進行存放)
我是複製到了
C:\map\arcgiscache\fztest\Layers目錄下

配置geowebcache.xml

開啟geowebcache.xml,在layers標籤內新增以下內容:

<arcgisLayer>
    <name>fztest</name>
    <tilingScheme>C:\\map\\arcgiscache\\fztest\\Layers\\conf.xml</tilingScheme>
    <tileCachePath>C:\\map\\arcgiscache\\fztest\\Layers\\_alllayers</tileCachePath>
</arcgisLayer>

注:name:表示要顯示在頁面上的名稱
tilingScheme:conf.xml檔案所在處
tileCachePath:瓦片地圖圖片資料所在位置

Setp3 啟動Tomcat,部署結束!

如果一切順利,再次進入網頁時,點選A list of all the layers and automatic demos

會進入到一個Demo頁面,在這裡就會看到指向我們部署的名為fztest的瓦片資料鏈接了

點選右側的png,即可瀏覽

軟體下載連結

全能電子地圖下載器3.0(已破)
GeoWebCache 1.10.0
注:GeoWebCache 1.10.0下載war包即可