• <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++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(54)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

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

            tilecache有這些不如我意的地方,所以之前自己也考慮再寫一個(gè)tilecache的 backend,將渲染出來的東西直接存儲(chǔ)進(jìn)pgsql數(shù)據(jù)庫,那以后只要導(dǎo)出數(shù)據(jù)庫的tablespace就可以了,嗯!的確可行,也跑了一段時(shí)間
            最后還是決定放棄tilecahce了,畢竟wms自己已經(jīng)實(shí)現(xiàn)了,要再做個(gè)backend也是很簡(jiǎn)單,做完直接整合進(jìn)wms服務(wù)器。
            我考慮采用sqlite來存儲(chǔ)這些瓦片圖形,由于sqlite處理多線程時(shí)天性有點(diǎn)問題,多線程不能共享同一個(gè)連接(connection),所以實(shí)現(xiàn)的時(shí)候在每個(gè)線程創(chuàng)建了新的連接,開銷是有一些的,那比之前實(shí)時(shí)請(qǐng)求TileServer要快的多了。
            現(xiàn)在wms跑的很開心了,cpu也不忙了,就是累死了硬盤了
            一臺(tái)機(jī)器上渲染的地圖瓦片數(shù)據(jù)單獨(dú)存儲(chǔ)在一個(gè)文件里面,要部署到另外一臺(tái)機(jī)器也很方便了,只需要拷貝一下就可以了
            接著看看將這個(gè)sqlite換成pgsql,看看性能哪個(gè)更強(qiáng)一點(diǎn)
            python代碼實(shí)現(xiàn):
             1     def getBitmapTile3(self,renderTile,mapid,res,xy,size):        
             2         if not self.enable:
             3             return None    #表示需要實(shí)時(shí)請(qǐng)求地圖數(shù)據(jù)
             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 

            記得空的時(shí)候在flex端寫個(gè)自動(dòng)跑地圖的程序,不能讓機(jī)器閑著,沒事的時(shí)候把全國(guó)地圖的瓦片自動(dòng)產(chǎn)生一下,免得在訪問地圖系統(tǒng)的時(shí)候再去產(chǎn)生瓦片!









            posted on 2011-07-11 22:34 放屁阿狗 閱讀(1598) 評(píng)論(0)  編輯 收藏 引用 所屬分類: MapGis 、WebGis 、WebService 、FlexswMap
            亚洲精品国产综合久久一线| 日韩精品久久久久久久电影| 欧洲成人午夜精品无码区久久| 精品国产乱码久久久久软件| 国产精品女同久久久久电影院| 色综合久久精品中文字幕首页| 国产精品女同一区二区久久| 亚洲精品成人网久久久久久| 国产精品久久久久久久久免费 | 人妻少妇精品久久| 久久人妻少妇嫩草AV蜜桃| 欧美综合天天夜夜久久| 久久精品一本到99热免费| 久久av高潮av无码av喷吹| 性欧美丰满熟妇XXXX性久久久| 97久久精品人人做人人爽| 久久久久精品国产亚洲AV无码| 国产亚洲精午夜久久久久久| 国产aⅴ激情无码久久| 日韩精品无码久久一区二区三| 久久99精品久久久久久久久久| 精品人妻伦九区久久AAA片69| 国产精品99久久精品爆乳| 久久亚洲精品国产精品| 色青青草原桃花久久综合| 久久久久亚洲AV成人网人人网站| 99精品久久精品一区二区| 日本久久久久亚洲中字幕| 亚洲综合伊人久久综合| 午夜精品久久久久久| 国产午夜电影久久| 91精品婷婷国产综合久久 | 国内精品久久久久久久coent | 无码人妻久久一区二区三区免费 | 国产精品99久久久精品无码| 女同久久| 久久久久香蕉视频| 久久综合九色综合网站| 国产精品久久久久久久久久影院 | 99久久99久久久精品齐齐| 久久九九久精品国产免费直播|