1、要使用tilecache,就得使用mapseerver的python_mapscript[离线表情]在编译好的mapserver目录下,找到面向python的mapscript文件夹,运行setup.py build ,setup.py install。
2、安装tilecache的python模块。到tilecache的根目录下,运行setup.py build ,setup.py install。
3、安装APACHE及python模块。
4、修改apache配置,以便加载tilecache:
在需要运行tilecache的apache映射目录加入以下内容
Options Indexes FollowSymLinks
Options Indexes FollowSymLinks ExecCGI
AddHandler mod_python .py
AddHandler python-program .py
PythonHandler TileCache.Service
PythonOption TileCacheConfig /opt/apache/htdocs/tilecache.cfg #tilecache的配置文件路径
AllowOverride None
PythonDebug On
5、测试tilecache:修改tilecache.cgi为tilecache.py,启动apache,浏览器:./tilecache.py??LAYERS=basic&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&BBOX=-180,-90,0,90&WIDTH=256&HEIGHT=256,成功运行就说明成功了。
下面就是具体应用了。
修改tilecache.cfg,如下:
[vmap0]
type=MapServer
mapfile=testcall.map
修改Service.py,使默认情况下调用固定的参数。如:layer=vmap0 v=mgmaps等。
修改Tile类,在Layer.py里,添加属性作为生成目录的参数。注意要在初始化的时候完成赋值,和X,Y,Z一样。同时修改tile规则。这里修改为:
def bounds (self):
import math
zoom=self.z
x=self.x
y=self.y
zoomfactor = math.pow(2.0, zoom)
#printf("X: %i Y: %i Z: %i\n",x,y,zoom);
SPHEREMERC_GROUND_SIZE = 20037508.34*2
tilesize = SPHEREMERC_GROUND_SIZE / zoomfactor
minx = (x * tilesize) - (SPHEREMERC_GROUND_SIZE / 2.0)
maxx = ((x + 1) * tilesize) - (SPHEREMERC_GROUND_SIZE / 2.0)
miny = (SPHEREMERC_GROUND_SIZE / 2.0) - ((y + 1) * tilesize)
maxy = (SPHEREMERC_GROUND_SIZE / 2.0) - (y * tilesize)
return (minx, miny, maxx, maxy)
修改MGMaps.py,让他在初始Tile时添加初始参数。如:userId
修改MapServer.py,接受Tile的属性,进行特殊数据源的处理。
修改Disk.py(GoogleDisk.py),修改其建目录规则,这里在layer下加入
"%s" % int(tile.userId),
完成以上操作后再运行setup.py build ,setup.py install,重新安装tilecache。
运行./tilecache.py?zoom=10&x=105&y=48&userId=8,再到图片cache目录下查看其生成路径。
没有评论:
发表评论