ArcGIS Server开发教程系列(3)切片
切片工作,我們可以一級(jí)一級(jí)的切,也可以,所有的一塊切,Recreate All Tiles這項(xiàng)是說(shuō),在沒(méi)有進(jìn)行任何的切片工作時(shí),可以選用這項(xiàng);Recreate Empty Tiles這項(xiàng)是說(shuō),如果之前已經(jīng)對(duì)某一級(jí)進(jìn)行了切片,再重新切片時(shí),可以選這項(xiàng),具體可以查看幫助;Delete Tiles這項(xiàng)可以刪除之前切的切片;比方說(shuō)我們計(jì)算機(jī)正在切圖,突然間斷電了,切了幾天,幾十G的地圖切片,怎么辦?我們不能重新開(kāi)始切啊,我們就可以選擇Recreate Empty Tiles,把剩余的地圖切片補(bǔ)上即可。
?
切片參數(shù)設(shè)置可以在發(fā)布服務(wù)時(shí)進(jìn)行,或者catalog里點(diǎn)擊已發(fā)布的服務(wù)修改服務(wù)屬性
?
?
這里設(shè)置文本的反鋸齒,最好設(shè)置為normal或以上,否則容易出現(xiàn)文本不清晰
設(shè)置緩存目錄:這個(gè)很重要,因?yàn)槲覀冇袝r(shí)切圖可數(shù)據(jù)量可能幾十G,上百G,甚至上T,這樣的話我們不能把切片默認(rèn)到目錄:C:\arcgisserver\directories\arcgiscache目錄,我們需要添加一個(gè)磁盤(pán)空間比較大的盤(pán)
?
?
設(shè)置切片的CPU核數(shù),本機(jī)4個(gè)CPU,4個(gè)線程;所以我們?cè)O(shè)置最大用幾個(gè)CPU切片的時(shí)候,那就是3了,如果你設(shè)置成5,那么最后發(fā)布是不成功的。
Cpu線程數(shù)決定了你將要最多要實(shí)例化多少個(gè)進(jìn)程去切圖,一般最大設(shè)置為CPU線程數(shù)-1,這樣保證CPU使用率在50%左右,如果設(shè)置太大,會(huì)造成CPU使用率在100%,硬件使用率一直在100%?可能會(huì)導(dǎo)致負(fù)荷過(guò)重,從而導(dǎo)致系統(tǒng)出現(xiàn)問(wèn)題。
?
根據(jù)需求分別設(shè)置下面的參數(shù),切片切幾個(gè)級(jí)別
?
選擇suggest,彈出輸入框輸入設(shè)置幾個(gè)級(jí)別,這里設(shè)置為5
?
下面按圖設(shè)置即可
?
可以添加或刪除自定義下的比例尺(這個(gè)地方已經(jīng)進(jìn)行過(guò)切片所以是灰色的),可以設(shè)置切片的格式為PNG32,存儲(chǔ)格式
?
?
高級(jí)設(shè)置這里根據(jù)需要選擇
?
?
以下一段資料參考http://blog.csdn.net/warrenwyf/article/details/6069711
在ArcGIS 10中出現(xiàn)了一種新的切片緩存文件格式:緊湊型存儲(chǔ)(Compact)。與之前的松散型存儲(chǔ)(Exploded)相比,它有遷移方便、創(chuàng)建更快、減少存儲(chǔ)空間等諸多優(yōu)點(diǎn),已經(jīng)成為了創(chuàng)建切片緩存的默認(rèn)格式。對(duì)于本身ArcGIS的產(chǎn)品而言,訪問(wèn)緊湊型存儲(chǔ)與訪問(wèn)松散型存儲(chǔ)沒(méi)有任何區(qū)別,但是,如果第三方應(yīng)用想訪問(wèn)新的切片格式,目前官方給出了“不可以”的答復(fù):
The internal architecture of the bundle is not publicly documented by ESRI. If you've coded your own logic to pull tiles out of a virtual directory, you should continue to use the "exploded" format which stores each tile as a single file and was the only option at ArcGIS Server versions 9.3.1 and previous.
我Google了一下,也沒(méi)有任何相關(guān)的資料,因此索性自力更生,自己分析一下緊湊型存儲(chǔ)的格式,相信這是目前可以找到的關(guān)于緊湊型存儲(chǔ)內(nèi)部格式的唯一資料。
l??緊湊型存儲(chǔ)的原理
緊湊型存儲(chǔ)最主要的兩種文件是bundle和bundlx文件,其中bundle文件用以存儲(chǔ)切片數(shù)據(jù),bundlx是bundle文件中切片數(shù)據(jù)的索引文件。
一個(gè)bundle文件中最多可以存儲(chǔ)128×128(16384)個(gè)切片,但是創(chuàng)建切片緩存并不是一張張切片單獨(dú)生成,而是以4096像素(無(wú)抗鋸齒)或2048像素(有抗鋸齒)為邊長(zhǎng)渲染的,如果我們選擇的切片邊長(zhǎng)為256像素并開(kāi)啟了抗鋸齒,那么每次ArcSOC進(jìn)程創(chuàng)建的是一張以8×8(64)個(gè)切片拼接成的大圖,然后切割后存入bundle文件中。
下圖中,藍(lán)色邊框代表的是bundle文件,黑色格子是生成切片時(shí)拼接的大圖,具體的每個(gè)切片在黑色格子中,圖中并沒(méi)有顯示出來(lái)。
?
?
l??存儲(chǔ)格式的分析
在分析緊湊型存儲(chǔ)格式之前,我首先問(wèn)自己,如果你要在一個(gè)bundle文件中存儲(chǔ)內(nèi)容,同時(shí)通過(guò)一個(gè)bundlx文件中存放索引應(yīng)該怎么做?中規(guī)中矩的做法就是參考數(shù)據(jù)庫(kù)的位圖索引方式,在bundlx文件中用固定的幾個(gè)字節(jié)標(biāo)識(shí)一個(gè)切片在bundle文件中的狀態(tài)(存儲(chǔ)的偏移量和長(zhǎng)度)。
觀察ArcGIS生成的bundlx文件,每個(gè)文件都是一樣的大小:81952字節(jié)。上面已經(jīng)提到,每個(gè)bundle文件中最多存儲(chǔ)16384個(gè)切片,雖然bundle文件中可能并沒(méi)有這么多切片,但是,我猜測(cè)bundlx文件中必然是保留了所有者16384個(gè)切片的索引位置。粗略估計(jì)每個(gè)切片會(huì)占據(jù)大約5個(gè)字節(jié),16384×5=81920字節(jié),還多出32字節(jié),猜測(cè)存儲(chǔ)bundlx文件的標(biāo)識(shí)信息。
通過(guò)對(duì)一個(gè)很存儲(chǔ)切片很稀疏的bundlx文件的規(guī)律進(jìn)行觀察和猜測(cè),確定了bundlx中文件起始16字節(jié)和文件結(jié)束16字節(jié)與索引無(wú)關(guān),剩余的81920字節(jié)數(shù)據(jù)以5個(gè)字節(jié)的頻率重復(fù),構(gòu)成了一個(gè)對(duì)bundle文件的索引。
本來(lái)以為這5個(gè)字節(jié)會(huì)保存bundle文件中切片數(shù)據(jù)的偏移和長(zhǎng)度,但是發(fā)現(xiàn)5個(gè)字節(jié)表達(dá)的信息量可能不夠,因此,我同時(shí)對(duì)bundle中的切片數(shù)據(jù)進(jìn)行了一個(gè)分析。
我猜想文件并沒(méi)有進(jìn)行壓縮處理,因此在文件中搜索PNG文件的文件頭0x89504E47(我在創(chuàng)建緩存時(shí)選擇了PNG24格式),發(fā)現(xiàn)果然如此。同時(shí),每2個(gè)切片數(shù)據(jù)之間相隔了4個(gè)字節(jié)(切片數(shù)據(jù)我是用Exploded的圖片直接進(jìn)行比較的),通過(guò)猜想、嘗試,發(fā)現(xiàn)這4個(gè)字節(jié)正好是以低位到高位的方式標(biāo)示了后續(xù)這個(gè)切片數(shù)據(jù)的長(zhǎng)度。
既然切片數(shù)據(jù)長(zhǎng)度是在bundle文件中記錄的,那么在bundlx文件中索引的必然只包括切片數(shù)據(jù)的偏移量,經(jīng)過(guò)實(shí)驗(yàn)發(fā)現(xiàn),bundlx中的5個(gè)字節(jié)也是以低位到高位的方式標(biāo)示了數(shù)據(jù)的偏移量。
切片數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)偏移猜想應(yīng)該是無(wú)符號(hào)的整數(shù),后面的實(shí)踐證明了這一點(diǎn)。
還有一個(gè)問(wèn)題,bundlx中的每5個(gè)字節(jié)標(biāo)示的到底是哪個(gè)切片的數(shù)據(jù)偏移?我的實(shí)驗(yàn)的結(jié)果是:按列排序:
| 1 | 129 | … | … |
| 2 | 130 | ? | ? |
| 3 | 131 | ? | ? |
| … | … | ? | ? |
| … | … | ? | ? |
| 128 | 256 | ? | 16384 |
從上面的分析,我們?nèi)绻懒艘粋€(gè)切片的級(jí)別、行號(hào)、列號(hào),就可以通過(guò)bundlx首先找到bundle中切片內(nèi)容的偏移,然后從bundle文件中取出4個(gè)字節(jié)的長(zhǎng)度數(shù)據(jù),再隨后根據(jù)這個(gè)長(zhǎng)度讀取真實(shí)的切片數(shù)據(jù)。關(guān)于如何計(jì)算切片的行號(hào)、列號(hào),以及bundle文件的命名方式,相對(duì)比較簡(jiǎn)單,這里就不詳細(xì)敘述了。
?
然后在catalog里就開(kāi)始自動(dòng)切片了,可以查看切片進(jìn)度
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的ArcGIS Server开发教程系列(3)切片的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android横竖屏切换继续播放视频
- 下一篇: SVN版本回退