• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            socketref,再見!高德

            https://github.com/adoggie

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(54)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            學習過MapGuid,MapServer,Qgis等多種開源地圖處理服務軟件,開發了遵循WMS標準的地圖服務,包括wms接入,地圖渲染服務。
            近1年的時間跑的地圖展示都是wms服務器實時請求TileServer進行繪制,Tileserver進程被部署在一臺高端的服務器上,同時啟動了8個服務進程,訪問忙碌的時候機器有點吃不消,就看到cpu那根線飚的很高。
            geoserver這個用java做的wms服務器,性能不敢恭維,玩geoserver的時候接觸了tilecahce這個開源軟件,目前跑啥版本就不清楚了,之前將其研究了個明白,知道自己需要的是什么,所以一切還是得自己寫。
            對我來講tilecache不實用的原因有多個:
            1.支持過多的cahce 存儲方式,什么google的數據庫,oracle的也有,雖然代碼框架的好,但很多東西都不管用,所以代碼維護不夠靈活
            2.tilecache通過apache提供web的wms服務,然后tilecahe里再請求后端的geoserver服務,產生的cache根據他定 義的一個網格依次按x,y,z的索引存儲在文件系統里面,并將圖形進行編碼分類。這種實現并沒有問題,但要知道這些cache出來的圖像文件是那么的多且 都零碎,有些圖片還夠不上一個文件系統基本的一個存儲頁大小,所以會大量浪費空間;由于文件零碎且多,移動這些文件也是個相當大的問題,一次為了將這些 cahce tile文件從A機器拷貝到B機器盡然花費了1天的時間。

            tilecache有這些不如我意的地方,所以之前自己也考慮再寫一個tilecache的 backend,將渲染出來的東西直接存儲進pgsql數據庫,那以后只要導出數據庫的tablespace就可以了,嗯!的確可行,也跑了一段時間
            最后還是決定放棄tilecahce了,畢竟wms自己已經實現了,要再做個backend也是很簡單,做完直接整合進wms服務器。
            我考慮采用sqlite來存儲這些瓦片圖形,由于sqlite處理多線程時天性有點問題,多線程不能共享同一個連接(connection),所以實現的時候在每個線程創建了新的連接,開銷是有一些的,那比之前實時請求TileServer要快的多了。
            現在wms跑的很開心了,cpu也不忙了,就是累死了硬盤了
            一臺機器上渲染的地圖瓦片數據單獨存儲在一個文件里面,要部署到另外一臺機器也很方便了,只需要拷貝一下就可以了
            接著看看將這個sqlite換成pgsql,看看性能哪個更強一點
            python代碼實現:
             1     def getBitmapTile3(self,renderTile,mapid,res,xy,size):        
             2         if not self.enable:
             3             return None    #表示需要實時請求地圖數據
             4         
             5         tile = None
             6         dbconn = sqlite3.connect(self.dbname)
             7         try:            
             8             #dbconn.text_factory = str
             9             cr = dbconn.cursor()
            10             cr.execute('select image from tiles where res=? and x=? and y=?',(res,xy[0],xy[1]))
            11             r = cr.fetchone()
            12             if not r:
            13                 tile = renderTile(mapid,res,xy,size)
            14                 if tile and tile.pixmap:
            15                     b = sqlite3.Binary(tile.pixmap)
            16                     print '*'*20
            17                     cr.execute(u'insert into tiles (res,x,y,z,image) values(?,?,?,?,?)',(res,xy[0],xy[1],0,b))                    
            18             else:
            19                 tile = r[0]
            20                 self.cacheshooted+=1
            21                 print 'shooted ',self.cacheshooted
            22         except:            
            23             traceback.print_exc()
            24             tile = None
            25         dbconn.commit()
            26         return tile
            27 

            記得空的時候在flex端寫個自動跑地圖的程序,不能讓機器閑著,沒事的時候把全國地圖的瓦片自動產生一下,免得在訪問地圖系統的時候再去產生瓦片!









            posted on 2011-07-11 22:34 放屁阿狗 閱讀(1606) 評論(0)  編輯 收藏 引用 所屬分類: MapGisWebGisWebServiceFlexswMap
            97精品依人久久久大香线蕉97 | 久久国产欧美日韩精品| 久久无码高潮喷水| 久久亚洲AV成人无码电影| 精品久久香蕉国产线看观看亚洲| 99久久免费国产特黄| 久久久久亚洲精品无码网址 | 久久精品国产亚洲AV不卡| 国产精品久久久久9999| 亚洲午夜无码AV毛片久久| 97久久超碰国产精品旧版| 久久99精品国产99久久6| 奇米综合四色77777久久| 国産精品久久久久久久| 久久精品国产精品亚洲毛片| 久久婷婷人人澡人人| 国产精品久久久久国产A级| 日韩欧美亚洲综合久久影院Ds| 久久婷婷国产综合精品| 欧美日韩精品久久久免费观看| 国产精品一区二区久久不卡| 一本一道久久a久久精品综合| 色综合久久88色综合天天| 久久偷看各类wc女厕嘘嘘| 性做久久久久久免费观看| 精品精品国产自在久久高清| 亚洲va中文字幕无码久久| 久久久综合香蕉尹人综合网| 91精品国产91热久久久久福利 | 人人狠狠综合久久亚洲高清| 999久久久免费国产精品播放| 久久夜色精品国产噜噜亚洲AV| 亚洲国产精品成人AV无码久久综合影院| 国产成人精品久久免费动漫| 久久丫精品国产亚洲av不卡| 99久久国产宗和精品1上映| 久久毛片一区二区| 国产精品久久久久久久久久影院| 久久精品女人天堂AV麻| 久久精品无码一区二区三区日韩| 久久嫩草影院免费看夜色|