為MapServer添加瓦片緩存服務
國際上有兩個比較流行的開源地圖瓦片緩存服務器:geowebcache和tilecache。
geowebcache基于J2EE架構,具有完整的Web圖形管理界面,支持多進程并發切圖,可以隨時查看切圖進度和剩余時間,搭配geoserver非常合適。
titlecache采用python編寫,CGI工作模式,非常小巧,2.11版本只有令人驚訝的68K!(這一點很像MapServer)。
titlecache采用SHELL或DOS命令行方式運行切圖程序,實時輸出切圖進度信息。
mapserver選擇titlecache作為地圖切片緩存服務器,在ms4w_3.0beta10中包含了tilecache插件,由于beta版本存在問題,
我們在ms4w_2.3.1正式版中手工加入tilecache服務器,具體步驟如下:
1、從tilecache官方網站下載安裝包tilecache-2.11.tar.gz,該安裝包適用于所有操作系統,我們使用Windows XP。
2、解壓安裝包,將其中的tilecache-2.11目錄整體復制到ms4w的apps目錄下。
3、進入ms4w的http.d目錄,新建一個名為httpd_tilecache.conf的文本文件,內容如下:
Alias /tilecache/ "/ms4w/apps/tilecache-2.11/"
<Directory "/ms4w/apps/tilecache-2.11/">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
addHandler cgi-script .cgi .py
4、進入ms4w/apps/tilecache-2.11目錄,打開tilecache.cgi文件,修改第一行的python編譯器路徑,例如
#!E:\Python25\python.exe
5、打開該目錄下的tilecache.cfg文件,修改cache標簽,指定本地磁盤緩存目錄,例如
[cache]
type=Disk
base=F:/tmp/tilecache
添加一個road標簽,指定地圖服務類型,服務地址,mapfile文件路徑,圖層名稱,柵格格式,空間參考系統編碼,例如
[road]
type=WMS
url=http://127.0.0.1/cgi-bin/mapserv.exe?map=I:/cn_data/c2.map&transparent=true&
layers=road
extension=png
srs=EPSG:4326
6、重新啟動Apache
7、打開tilecache下的index.html文件,根據實際情況修改openlayers.js的路徑,例如
<script src="/openlayers/OpenLayers.js"></script>
修改layer參數,例如
layer = new OpenLayers.Layer.WMS( "road", "tilecache.cgi?", {layers: 'road', format: 'image/png' } );
使用瀏覽器訪問http://127.0.0.1/tilecache,Web頁面上將顯示經過tilecache處理的地圖,客戶端瀏覽過的地圖切片文件被保存在tilecache.cfg文件指定的臨時目錄下,這里是F:/tmp/tilecache目錄,如果其中包含客戶端正在請求的地圖,這些地圖將不再通過MapServer動態生成,而是直接從緩存目錄讀取靜態圖片文件。對于大用戶量、高并發的地圖訪問,瓦片緩存機制可以非常有效的提高客戶端讀取、顯示地圖的速度。
通過執行tilecache_seed.py腳本,可以手動生成地圖切片,下面的命令給road圖層發布0到6級的地圖切片文件。
python "F:\ms4w\apps\tilecache-2.11\tilecache_seed.py" road 0 6
等待執行完畢,進入緩存目錄可以找到剛才發布的地圖切片文件。
posted on 2010-11-26 15:45
天狼 閱讀(3274)
評論(5) 編輯 收藏