zoukankan      html  css  js  c++  java
  • 也谈 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有Java版——GeoWebCache,如果更喜欢Java,可以参考它。

    Author:dulvyizhihua
  • 相关阅读:
    php中模拟多继承如何实现
    js进阶 12-4 jquery键盘事件如何使用
    php课程 3-12 带默认参数的函数怎么写
    android_线
    Cocos2d-x 文本渲染
    一张地图告诉你,只JavaScript不够!
    python 导入库问题
    Cocos2d-X字体
    R语言做文本挖掘 Part5情感分析
    Java存储区域——JVM札记&lt;一个&gt;
  • 原文地址:https://www.cnblogs.com/dulvyizhihua/p/1369002.html
Copyright © 2011-2022 走看看