ArcGIS緊湊型切片讀取與應用1 解析(附原始碼)

2022-04-06 11:19:14 字數 2361 閱讀 7082

arcgis緊湊型切片讀取與應用1-解析(附原始碼)

arcgis緊湊型切片讀取與應用2-webgis動態載入緊湊型切片(附原始碼)

arcgis緊湊型切片讀取與應用3-緊湊型批量轉分散型(附原始碼)

1.前言

arcgis 發布的切片服務分為緊湊型切片和傳統的分散型切片以及最新arcgis por新增的向量切片。傳統的分散型切片面臨的問題是檔案個數太多,部署拷貝過程十分的耗時,緊湊型切片是對分散型切片進行壓縮處理的。乙個.bundle檔案可以存上萬張切片,有利於部署拷貝,.bundlx檔案提供切片索引。本教材分為三個模組依次是

(1)檔案解析。

(2)webgis動態載入緊湊型切片。

(3)緊湊型批量轉分散型。

下面是對緊湊型切片解析的過程,實現使用的c#**。

2.解析

大家可以發現所有.bundlx切片索引檔案大小都是81kb,查閱資料發現每個切片索引都存放著128*128個切片的索引位址。但是並不是每個.bundle檔案都有128*128個切片,例如1級切片只有4個,其餘位置會為空位元組表示。解析方式就是通過切片的x,y,z作為引數解析出對應的索引檔名稱,然後從索引檔案讀取切片的索引位置,最後切片檔案中讀取對應位元組流,儲存成即可,流程如下。

核心實現**如下:

1.通過xyz獲取檔名稱與路徑

///

///查詢切片對應的檔案路徑

//////

路徑///

切片等級

//////

///private

string getbundlepath(string root,int level, int rgroup , int

cgroup )

}l = "

l" +l;

var r = rgroup.tostring("x"

);

var rlength =r.length;

if (rlength < 4

)

}r = "

r" +r;

var c = cgroup.tostring("x"

);

var clength =c.length;

if (clength < 4

)

}c = "

c" +c;

var bundlepath=string.format (@"

\_alllayers\\

", bundlesdir,

l, r, c);

return

bundlepath;

}

2.通過xy獲取索引值

int packsize = 128

;var rgroup = convert.toint32(packsize * convert.toint32(y /packsize));

var cgroup = convert.toint32(packsize * convert.toint32(x /packsize));

context.index = packsize * (x - cgroup) + (y - rgroup);

3.通過讀取索引檔案,根據索引值獲取切片索引位置

///

///讀取切片

//////

///private

byte

readtilefrombundlev1(bundlx context)

}

4.讀取具體切片資料

///

///讀取切片對應位元組

/// ///

//////

private

byte readtile(string bundlefilename,int

offset)

}

3.成果將位元組流儲存成.png輸出,對應專案

專案,**已經上傳github,下篇寫一下webgis動態載入緊湊型切片。

出處:

記憶體緊湊對齊

以前對於記憶體緊湊對齊總是和模糊今天終於弄明白了,拿出來分享下 當使用者指定乙個align值n 或編譯器的預設 時,每種資料型別的實際align值定義如下 actual align min n,natual align 其中natual 值為資料型別的大小或者結構的實際align大小 結構體 str...

軟體的緊湊性

今天閱讀了作者對系統設計有這樣一點建議 在設計系統的時候,合理對待緊湊性 是指乙個設計是否能夠放進人腦中的特性 設計時盡量考慮,決不隨意拋棄.具有緊湊性的軟體工具可以使人樂於使用,令使用者的工作和想法完美結合.就拿前段時間製作的乙個宿舍管理系統為例,如果僅將系統功能侷限在表層次的crud功能下,使用...

Google Reader 恢復緊湊布局CSS修正

google reader 今天更新了新的介面,與 相整合。只是閱讀器條目變得過於鬆散,一頁之內顯示不了幾個,令人很不爽。修正方法 windows 環境,moziila firefox 瀏覽器 資料夾,開啟 usercontent example.css,另存為 usercontent.css,在其...