TileCache从去年开始使用已经有一段时间了,之前是为了配合GeoServer来产生缓存网格块,之后在3-8月份处于停滞状态,到9月份身体开始恢复就重新启动swMap工程,彻底抛弃了GeoServer(效率和安装运行环境不能满足要求)。在使用geoServer期间,采用Tilecache产生了千万的tile图块,默认是存放在文件系统,产生的Tile在备份迁移的时候令我寒心,那么多的文件拷贝每次都要耗费4,5个小时,考虑到这种情况,我自己编写了TileCache的Store Backend,将Tilecache产生的Tile存储进PostGresDB,这样我只要备份DB就可以了。
随即而来的是放弃Geoserver,自己重新开发地图渲染服务器,使用了QT令我效果满意,那再使用那一套GeoServer的东西就不合时宜了,TileCache也是需要绑定Apache+mod_python才能工作,简直太累最了,配置个环境还是不太容易,想想自己只是想提供一个WMS的服务罢了何必那么麻烦呢。 地图服务器也有了,产生CacheTiles也开发了自动化的工具,将全国不同显示比例的图块按256x256规格分别放入多个文件,这样备份起来就快速多了。
之前看过TileCache的代码,那时候只是为了编写一个新的Cache Store backend,现在重新回过头来,我决定抛弃apache,语言还是用python,之前做一个酒店广告投放系统时开发过一个Http代理服务器,所以轻车熟路了,保留其Http服务功能,加上TileCache的WMS服务代码,一个swMap的WMS 服务器就可以诞生了。
端详了一会儿TileCache,发现是多么的简单,几乎不用多修改什么地方就可以完成。
由于我的swMap服务程序提供了预先缓存和实时绘制地图的功能,所以通过Http可以以两种模式进行,当然实时模式是用于调试地图层SLD时派上大用场。
实时绘制的时候我的WMS服务器通过Ice连接到swMap服务器,当缓存访问时我的WMS服务器直接从本地Tile文件中读取,那时多么舒服的事情哪!