乙個使用C 和ArcPy實現的版本壓縮工具(一)

2021-09-12 17:32:24 字數 1063 閱讀 5063

arcgis版本化資料管理機制中,增量資料最初是儲存在增量表即a表和d表中的。當我們壓縮版本時,增量表中的資料才會進入到基表(對歸檔後的資料而言,實質上是檢視,只不過給使用者的感覺還是乙個資料表)。

我們固然可以使用arcgis engine去實現版本壓縮功能,arcgis engine也提供了相應的介面。

在版本化資料更新流程中,我們去建立乙個子版本,將資料更新提交到子版本中,確認無誤後可以進行版本協調,解決衝突,完成資料更新過程。子版本不再需要時,可以將其刪除。

久而久之,隨著更新的資料越來越多,增量表變得越來越大,版本世系表中也會儲存越來越多的更新記錄,導致進行瀏覽和編輯的速度越來越慢。效能下降,對使用者而言,就是體驗不好。

此時,乙個行之有效的解決辦法是進行版本壓縮,將增量表中的記錄壓縮到基表中。最理想的壓縮結果是增量表是記錄為0,版本世系表中也只保留一條default版本的記錄

如果不進行資料壓縮,或壓縮進行得不徹底,效能方面的問題可能將會一直存在。

基於arcgis engine去開發版本壓縮功能,是一種可行的方案。但是,考慮到以下幾點:

版本壓縮一般是在伺服器端進行的,不需要客戶端去看或取得操作結果

徹底的版本壓縮一般是在非使用時段進行的,可以設定其定時執行

普通的版本壓縮,應當在每次更新資料完成後自動執行,而非當增量表已經太大時執行

版本壓縮過程一般需要伴協調更新資料、刪除子版本、重建空間索引、分析資料集等操作

arcgis engine開發**行數較多,且受arcgis產品版本影響較大

伺服器端一般都會安裝arcgis,且自帶python直譯器和arcpy開發包

我們認為,使用arcgis engine開發,不如使用arcpy更佳。且該功能應當能夠以某種服務的方式,提供給客戶端呼叫。

從技術選型上,我們決定使用arcpy來實現針對arcsde的操作,如壓縮、協調版本、刪除子版本、重建空間索引、分析資料集等功能,而使用c#來做介面,實現對python指令碼的觸發。

實現乙個迷你版的vue

專案位址 其實vue1和vue2最大的區別就是vue2多了乙個虛擬dom,其他的區別都是很小的。所以理解了vue1的原始碼,就相當於理解了vue2,中間差了乙個虛擬dom的diff演算法 先來科普一下mvvm的概念及原理 mini vuex 全域性方法 繼承minivue 產生乙個新的子類建構函式 ...

乙個二叉樹的實現 C版

二叉樹是一種很常見的資料結構,特別是二叉搜尋樹,如果在插入的時候組建二叉樹的話,在搜尋的時候可以達到很高的速度。下面我把自己實現的乙個二叉搜尋樹的原始碼貼出來,大家可以參考一下。先看資料結構的定義 bintree.h include struct tnode struct tnode addtree...

C 和Qt實現的對於異常處理的乙個使用策略

一 基礎 1 c 中的異常處理的基本格式 try catch exception exception finally 一般來說finally 段用於處理沒有被託管的資源的釋放過程。2 qt中的異常處理基本格式 try catch qstring exception 二 異常捕獲的策略 1 try塊的...