前陣子想得到全國70個大中城市的Google地圖,開始接觸TileCache,TileCache在建立分塊地圖緩存,提高客戶端訪問速度方面絕對是一個好幫手,只不過官方文檔比較的難看懂,搜索的關于安裝配置方面的文章,通過摸索發現實際上不是大多數人說的那樣,或多或少的漏掉一些東西了,由于本人剛接觸,才疏學淺,有描述不當的地方請大家指正。
TileCache可以作為IIS和Apache的CGI插件,由于我的應用是Windows環境下的MapServer配合Apache服務器運行,所以以下都是在Windows環境下Apache服務器完成的安裝配置過程的描述。理論上IIS也可以,至于在Linux平臺下,應該區別不是很大。
TileCache的官方網站是
http://tilecache.org/,在這里可以下載到最新版本的TileCache。
我的Apache服務器版本是2.2.8,接下來安裝Python,我選擇的2.3版本,建議安裝在驅動器根目錄下(如C:\Python23 )。
要在Apache服務器上啟用Python還要下載安裝一個Module,下載地址
http://www.modpython.org/ ,在下載頁面選擇合適的版本,由于我的環境是Apache2.2.8和Python2.3,于是我選擇了mod_python-3.3.1.win32-py2.3-Apache2.2.exe,安裝完成后在Apache\modules目錄下可以看到mod_python.so文件。
在Apache安裝目錄下找到conf/httpd.conf文件,編輯該文件,在LoadModule部分增加如下設置:
LoadModule python_module modules/mod_python.so
同時,還要為TileCache在Apache服務器建立虛擬目錄,同樣在conf/httpd.conf文件增加以下設置:
#TileCache虛擬目錄
Alias /tilecache/ "F:/GIS/TileCache/2.10/"
<Directory "F:/GIS/TileCache/2.10/">
AddHandler mod_python .py
AddHandler python-program .py
PythonHandler TileCache.Service
PythonOption TileCacheConfig F:/GIS/TileCache/2.10/tilecache.cfg
PythonDebug On
PythonPath "['F:/GIS/TileCache/2.10/']+sys.path"
AllowOverride None
Options Indexes FollowSymLinks Multiviews
Order allow,deny
Allow from all
</Directory>
這一部分是目前相關參考資料都沒有完整的說明白的地方,
第2行將虛擬目錄指向TileCache的安裝目錄,請根據你的TileCache安裝目錄進行調整;
注意第4行和第5行,mod_python .py和python-program .py中“.py”前面有空格;
第7行指定TileCache配置文件路徑;
第9行很重要,指定PythonPath為安裝目錄和系統目錄,不加上sys.path通常會出現“ImportError: No module named TileCache.Service”錯誤;
同事為了允許匿名訪問還要加上第12行。
這樣,Apache服務器的配置就完成了。
接下來要配置TileCache了,在TileCache安裝目錄編輯tilecache.cgi,將第一行更改成:
#!C:/Python23/python.exe -u
保存后,將擴展名改成.py
同樣在TileCache安裝目錄編輯tilecache.cfg,進行以下配置:
[cache]
type=Disk
base=E:/TileCache
其中,base就是分塊地圖的緩存物理位置。
這樣,整個配置過程就完成了,重新啟動Apache看看效果吧。用以下地址進行測試,如果出錯的話,可以看到詳細的出錯提示,
http://127.0.0.1/tilecache/tilecache.py?LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-180,0,-90,90&WIDTH=256&HEIGHT=256
一切正常以后可以訪問http://127.0.0.1/tilecache/index.html進行瀏覽。