在IIS上安装TileCache

Posted by 蒋波涛 31 July,2008 Views (23)Comment

 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:
  • 再次恭喜你,一切成功咯。

    【转载请注明出处www.hmgis.cn

Related Items

Categories : Python Tags : ArcIMS  Python  
Comments
2008-8-7 13:41:17

你好,我按照你说的方法在IIS下安装了tilecache,但是图片并不显示,我在用浏览器看tilecache.py文件时,出错:“An error occurred: The requested layer (tilecache.py) does not exist. Available layers are: * basic ”,不知道是怎么回事,在网上查了好久也没找到解决的方法,你遇到过这样的错吗,请帮我分析一下。

Posted by mhj Gravatar Icon

2008-8-7 16:57:56

干嘛用浏览器查看tilecache.py啊,不需要的

Posted by 蒋波涛 Gravatar Icon

2008-8-7 17:55:54

现在重点不是用什么查看的问题,是我配置完成后打开你说的http://localhost/tilecache/index.html,图像不显示。什么提示没有,我只有在IIS管理器中直接打开tilecache.py来看才能发现有那么一个错误。如果说撇开tilecache.py不说,就是我的配置完后,图像不显示,你说那是什么原因。

Posted by mhj Gravatar Icon

2008-8-7 18:36:15

1.先用Layer.WMS类型的图层看看labs.metacarta.com的WMS服务是否可用,即index.html能否显示地图,如果可以进行下一步
2.在命令行中运行python “C:\Inetpub\wwwroot\tilecache\tilecache_seed.py” “http://localhost/tilecache/tilecache.py?” basic 0 2
看看Cache文件夹中是否出现了切割后的文件夹。如果存在将Layer.WMS改为Layer.TileCache。
你为什么打开有错误呢,很简单,因为缺少参数。tilecache.py是一个服务器文件,要传入参数的,而上面的命令后的“http://localhost/tilecache/tilecache.py?” basic 0 2就是参数,真正的执行文件是tilecache_seed.py。

至于你要找到那篇文章,我只在Google的页面缓存中发现过。

Posted by 蒋波涛 Gravatar Icon

2008-8-7 18:37:20

http://203.208.35.101/search?q=cache:EkK3k4ydezIJ:viswaug.wordpress.com/2008/02/03/setting-up-tilecache-on-iis/+Seting+up+TileCache+on+IIS&hl=zh-CN&ct=clnk&cd=1&gl=cn&client=aff-cs-worldbrowser&st_usg=ALhdy2-En6CrI75vNVKCILX_0201P5NQiw
这是缓存地址

Posted by 蒋波涛 Gravatar Icon

2008-8-7 20:01:07

你说的那个第一步是可以的,服务好用。第二步的那个是切图的命令吧,我执行了,问题就是layer=svc.layers[sys.argv[2]]
KeyError:'basic'.
我现在就是执行到你的“现在,恭喜你,你的Tilecache在IIS上的安装已经完成了。”那步就已经不显示图了。我查看那个tilecache中自带的文档readme中有这个问题,他写的是When using Tilecache with TMS style requests, you will need to change your
IIS configuration to allow PATH_INFO to be delivered to the CGI script.
http://support.microsoft.com/kb/q184320/ provides information on this
topic. If you do not do this, you will get an error message like:

"The requested layer (tilecache.cgi) does not exist."
但是你写的那两个命令:
adsutil set w3svc/AllowPathInfoForScriptMappings True
adsutil set w3svc/1/AllowPathInfoForScriptMappings True
不是解决这个问题的吗?
麻烦你了,帮我好好看看,谢谢!

Posted by mhj Gravatar Icon

2008-8-7 22:26:35

把你的切图命令和tilecache.cfg文件内容给我看看就知道了。

Posted by 蒋波涛 Gravatar Icon

2008-8-8 9:03:57

cfg文件跟你的一样:
[cache]
type=DiskCache
base=C:\Inetpub\wwwroot\tilecache\Cache
[basic]
type=WMSLayer
url=http://labs.metacarta.com/wms/vmap0
extension=png
我还没切图呢就是显示就不出来。

我看了好几遍我完全是按照你写的步骤写的,就是不行。

Posted by mhj Gravatar Icon

2008-8-8 10:26:17

这个就很奇怪了,我曾经遇到过layer=svc.layers[sys.argv[2]]
KeyError:'basic'.这个问题,其原因是我把cfg文件中[basic]
type=WMSLayer
url=http://labs.metacarta.com/wms/vmap0
extension=png的[basic]修改了,与“C:\Inetpub\wwwroot\tilecache\tilecache_seed.py” “http://localhost/tilecache/tilecache.py?” basic 0 2
中的basic不一致的缘故。

Posted by 蒋波涛 Gravatar Icon

2008-8-8 10:58:51

我觉得我的错就是在于.cfg文件中的url没有被识别,但是不知道怎么才能解决这个问题。

Posted by mhj Gravatar Icon

2008-8-8 11:16:20

jbttm老师,我知道怎么回事了,应该先切图,再在浏览器中浏览http://localhost/tilecache/index.html,才能有图显示。您在第二次告诉我的做法是十分正确的,呵呵,我那时候那个错确实是我已经把我.cfg中的wms服务改成自己的了,两个图层名字不一样的原因。我刚看了你的新回复,就把图层名写成一样的然后先敲切图命令行,再浏览那个网址就显示了,谢谢您这么耐心的指导,您太善良了,哈哈。

Posted by mhj Gravatar Icon

2008-8-9 11:55:30

我已经用ArcIMS发布了一个WMS,然后想用tilecache把我的这个WMS切了,我将.cfg文件中的图层名,url,bbox都换成了我自己的,其中
url=http://localhost:88/wmsconnector/com.esri.wms.Esrimap/d
但是执行python命令时出错,urlopen error <10061,'Connection refused'>不知道是什么原因,难道是我的url写的不对,用OpenLayers是能够直接读到这个服务的。
另外,我已经用ArcGIS Server切过一次我自己的地图了,因为tilecache切图慢,我想把我自己切好的图放到tilecache的cache文件夹中直接用,但是他们的文件目录结构不同,用OpenLayers.layer.tilecache()读不出图片,不知道我的想法能不能行的通,问题怎么解决。
我这次就是想用OpenLayers开发一个类似于mapabc网站中的地图浏览器,但是遇到的问题一个接着一个,希望可以从您这得到一些启示,呵呵,谢谢。

Posted by mhj Gravatar Icon

2008-8-9 14:30:37

IMS的时候显然连接有问题;AS切割的方式不建议,图片多的情况下这个文件夹组织的时间远远多于你用Tilecache的时间。

Posted by 蒋波涛 Gravatar Icon

2008-11-18 10:30:43

博主好,用TilcCache方式连接Mapnik怎么弄,有没有研究?

Posted by zys Gravatar Icon

2008-11-18 13:33:02

没研究过,不过只要Mapnik支持OGC服务就行

Posted by 蒋波涛 Gravatar Icon

2008-11-22 21:16:39

网页上的图×啊看不到啊?希望检查下哈!
今天终于去把<gis for web应用开发之道>买回来了,尽管我手上拿到了英文版本的!

Posted by xat Gravatar Icon

2008-11-23 19:14:57

见http://blog.csdn.net/chiangbt/archive/2008/07/31/2743400.aspx,这也是我的blog,图片存在上面

Posted by 蒋波涛 Gravatar Icon

2009-4-26 9:56:56

jbttm您好,按照您的操作流程,我也是进行到"现在,恭喜你,你的Tilecache在IIS上的安装已经完成了"这一步,在浏览器中输入http://localhost/tilecache/index.html看不到图片。我在命令行中运行python “C:\Inetpub\wwwroot\tilecache\tilecache_seed.py” “http://localhost/tilecache/tilecache.py?” basic 0 2 之后,显示"tilecache_seed.py:error:Incorrect number of arguments.bbox and padding are now options (-b and -p)",请问接下来该如何解决这个问题呢?谢谢

Posted by xiaoyan Gravatar Icon

2009-4-27 16:21:18

很久没碰了,没法一下子回答你

Posted by 蒋波涛 Gravatar Icon

2009-4-27 18:00:16

您方便给我留个电子邮箱么?有很多不懂的知识想请教您,多谢了

Posted by xiaoyan Gravatar Icon

2009-5-7 12:49:33

我在网上都按照你的演示进行了,就是输入命令提示参数不正确。tilecache_seed.py:error:Incorrect number of arguments.bbox and padding are now options (-b and -p)" 无法完成切图,所以也就看不到图片

Posted by 切图错误 Gravatar Icon

2009-5-7 19:45:15

是不是Python版本不同,再检查下

Posted by 蒋波涛 Gravatar Icon

2009-7-14 22:24:44

可解决Incoorrect Number of arguments的错误
直接输入
python “C:\Inetpub\wwwroot\tilecache\tilecache_seed.py” basic 0 2

Posted by tianxia Gravatar Icon

Leave a comment

Or, take a look at Archives and Categories

目录

存档