电子地图的瓦片--在IIS上安装TileCache

来源:互联网 发布:自学php需要什么基础 编辑:程序博客网 时间:2024/03/29 01:39

TileCache是我在翻译《GIS for Web developer》一书时了解的一个GIS组件,它居于GIS服务器之前,可以将任何WMS服务的数据进行Cache处理,以产生瓦片式WebGIS效果。我在网络上寻找了许久关于TileCache安装和使用的资料,但是一直没有什么结果,后来好不容易在Google的缓存中寻找到一篇《Seting up TileCache on IIS》的文章,特翻译出来以共享之。

 

TileCache的缓存效果可以使得WMS服务的速度加快10-100倍,甚至更高,但它是使用python开发的一个开源工具,其开发者是Metacarta labs。我们下面将在IIS上使用TileCache。(我觉得IIS挺好用的,比起Apache来)

 

  • 下载最新版本的Python(2.5.1)【2.1版本不行】。我安装的是ESRI软件中包含的2.4版本,因此下面的版本号可以有所不同;
  • 运行Python installer fow windows并安装Python在默认目录"c:/python24"
    /
  • 安装完python后,需要设置其环境变量。如下图所示:
    /
  • 在变量Path中添加“;c:/python24/;”,注意前后的逗号
    /
  • 下载TileCache的最新版本2.0.4,解压到“C:/Inetpub/wwwroot/tilecache”中:
    /
  • 打开IIS的管理器,一个快捷方式是在运行中输入inetmgr;
  • 现在我们需要让IIS能够解析Python脚本,在“默认网站”右键中选择“属性”“主目录”“配置”按钮:
    /
  • 在弹出的映射对话框中点击“添加”,在对话框中如下设置,注意两个%s:
    /
  • 输入完成后,将出现下列情况,现在IIS就能解析Python了:
    /
  • 点击tilecache文件夹右键“属性”,弹出对话框:
    /
  • 在对话框中“目录”“应用程序设置”的“应用程序名称”应该是不存在的,点击旁边的“新建”按钮,出现下面情况:
    /
  • 打开命令行窗口,在c:/inetpub/adminscripts目录下顺序键入下面两个命令:
    • adsutil set w3svc/AllowPathInfoForScriptMappings True
    • adsutil set w3svc/1/AllowPathInfoForScriptMappings True
  • 将‘C:/Inetpub/wwwroot/tilecache/tilecache.cgi’文件重命名为‘C:/Inetpub/wwwroot/tilecache/tilecache.py’
  • 编辑tilecache.py文件,将第一行代码‘#!/usr/bin/env python’删除,将Service.Load中的参数修改为‘C://Inetpub//wwwroot//tilecache//tilecache.cfg’ 。像下面这样:
    /
  • 在tilecache文件夹中新建一个Cache文件夹,这样是产生Cache的目录。我们需要给这个文件夹一个“可写”的权限。
  • 编辑tilecache文件夹中的tilecache.cfg文件,将[cache]修改:
    /
    改为
    /
  • 修改处于[basic]下面的url值,[basic]是你想要缓存的图层名,这个设置必须正确。下面是来自Metacarta一个WMS服务上的图层,名为basic
    /
  • 编辑tilecache文件夹中的index.html文件,将tilecache.cgi?改为tilecache.py?
    /
  • 现在,恭喜你,你的Tilecache在IIS上的安装已经完成了。
    /
  • 查看Cache文件夹,已经有缓存产生了,basic文件夹表示的是basic图层,你可以看到许许多多文件夹:
    /
  • 现在让我们为整幅地图产生缓存,即手工来产生Cache,在命令行工具中输入下面的命令:
    python “C:/Inetpub/wwwroot/tilecache/tilecache_seed.py” “http://localhost/tilecache/tilecache.py?” basic 0 2
  • 这里的0,2是指地图的缓存级别,你可以自己设置,如果你设置成0 6,它将会产生7级的地图缓存,不过消耗的时间非常多。反正我是没这样做的。 修改index.html的内容,注意是TitleCache:

  • 再次恭喜你,一切成功咯。