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文件中讀取,那時多么舒服的事情哪!