也谈 TileCache 的安装、配置和使用

为什么叫做也谈呢?无非是因为我也是看过各位牛牛们的分享,然后自己动手实践了一把,在其中体验了很多的“快乐”与“悲伤”,最后决定把这些内心的变化都记录下来,与大家一起分享。

关于TileCache,前人讲了很多了。它是基于Python的WMS-C,通俗的讲就是为WMS做瓦片地图缓存,从而提高后台服务器的响应速度,而WMS作为OGC着力推广的GIS数据共享接口,因此为WMS接口所做的这些“外围”工作我们也需要认真关注。

 

TileCache的官方网站是http://tilecache.org/,在这里可以下载到最新版本的TileCache。

关于配置,可以参考Fiyingis的博文http://www.cnblogs.com/flyingis/archive/2008/01/28/1056298.html,当然如果你还是个新手,那么看了Flyingis的文章可能也还是配置不成功,ok,我参考了这篇博文,以及TileCache官方的http://tilecache.org/readme.html后做了些配置上的修改,希望以下的配置能够让大家成功部署TileCache。

目标:基于Apache Mod_Python部署和使用TileCache。

1、Windows平台,使用Apache HTTP Server 2.2做Web服务器,同样也要安装Python,这里我用了Python2.5,安装在D:\Program\Python25;

2、由于要使用Apache HTTP Server来启用Python,因此需要为Apache增加一个Module——mod_python,下载地址http://www.modpython.org/,安装后在Apache2\modules目录下生成mod_python.so文件;

3、打开Apache的conf\ httpd.conf文件,在#LoadModule后添加

LoadModule python_module modules/mod_python.so;

4、还是在conf\ httpd.conf文件中,为TileCache添加虚拟路径

Alias /tilecache/ "D:/Program/OpenSource/tilecache/tilecache-2.04/"
<Directory "D:/Program/OpenSource/tilecache/tilecache-2.04/">
  AddHandler python-program .py
  PythonHandler TileCache.Service
  PythonOption TileCacheConfig D:/Program/OpenSource/tilecache/tilecache-2.04/tilecache.cfg
  PythonDebug On
  Allow from all
</Directory>

这里需要注意的是要有Allow from all,否则没有权限访问;

5、修改TileCache目录下的tilecache.cgi文件为tilecache.py——为了在Apache Mod_Python下应用,然后修改tilecache.cfg中的

[cache]
type=Disk
base=D:/Program/OpenSource/tilecache/tilecache-2.04/tmp
这里的base指向了以后瓦片地图缓存存放的位置;

6、由于在TileCache的源码中还是默认调用了cgi的接口,这里为了彻底摆脱cgi,可以将TileCache目录下的tilecache.py修改为

import urllib2
from TileCache import Service, cgiHandler, cfgfiles, handler

if __name__ == '__main__':
# svc = Service.load(*cfgfiles)
# cgiHandler(svc)
  handler(urllib2.Request)

同样service.py也修改为

if __name__ == '__main__':
# svc = Service.load(*cfgfiles)
# cgiHandler(svc)
  handler(urllib2.Request)
   

7、千万别忘了在Python的sys.path中加入TileCache的路径,否则在访问时会报“找不到Module”的错误,切记切记;

8、启动Apache HTTP Server,访问http://localhost:8090/tilecache/tilecache.py?LAYERS=basic&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&BBOX=-180,-90,0,90&WIDTH=256&HEIGHT=256

,如果出图,那么就成功了。同样也可以访问http://localhost:8090/tilecache/index.html来进行验证。这里我的Apache使用的端口号是8090,默认一般为80。

 

既然部署好了,那么就不妨应用一下。可以使用GeoServer,ArcGIS,SuperMap等做个尝试,这里我用SuperMap的WMS做了一个简单的应用。

1、如果安装了SuperMap IS .NET,就是使用默认的WMS服务来尝试一下,使用的handler为http://localhost/IS/WebServices/wms_world.ashx,启动SuperMap服务先;

2、在TileCache目录下的tilecache.cfg中加入图层缓存的配置

[world]
type=WMS
layers=World
srs=EPSG:4326
url=http://localhost/IS/WebServices/wms_world.ashx
extension=png

3、在TileCache目录下的index.html的脚本内容中做如下修改

layer = new OpenLayers.Layer.WMS("world", "tilecache.py?", {layers: 'world', format: 'image/png'});
//layer = new OpenLayers.Layer.WMS( "VMap0", 
// "tilecache.py?", {layers: 'basic', format: 'image/png' } );

4、那么访问http://localhost:8090/tilecache/index.html吧,效果如图

 也谈 TileCache 的安装、配置和使用_第1张图片

 

最后想说的是,TileCache有Java版——GeoWebCache,如果更喜欢Java,可以参考它。

你可能感兴趣的:(cache)