前阵子想得到全国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进行浏览。