本文是最近內部的一個學習的自我整理,只有關鍵信息,若是須要詳細瞭解,請參閱ArcGIS幫助文檔:html
http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/003n000000tq000000/(關於版本機制)數據庫
一、適用條件:僅支持企業地理數據庫(ArcSDE地理數據庫),而我的地理數據庫、文件型地理數據庫不支持;工具
二、定義:版本是整個地理數據庫在某個時刻的快照,其中包含地理數據庫中的全部數據集。利用版本化,多個用戶可對 ArcSDE 地理數據庫中的同一數據進行編輯,而無需應用鎖或複製數據。學習
三、版本的分類:3d
子版本:從任意現有版本建立子版本或分支版本的方式來建立版本,如能夠經過建立 DEFAULT 版本的子版原本建立第一個版本。子版本會從父版本從繼承全部相關數據。一個建立好的版本樹以下:htm
四、版本的控制原理blog
數據集(要素類、要素數據集或表)註冊爲版本後,數據庫中將會建立兩個增量表:用於插入和更新的 A(添加)表以及用於刪除的 D(刪除)表。每次更新或刪除數據集中的記錄時,都會向這兩個表或其中一個表添加行。如:我在數據庫中新建了一個Line要素類,而後將其註冊爲版本後,數據庫中出現了以下兩個表:a8,D8,8表明該要素類在[SDE_table_registry]表中的數據集的ID。繼承
總的來講,基表、A 表和 D 表中的全部行表示要素類或表的全部版本。這表示任何一個版本都只能引用這三個表中的行的子集文檔
A 表和 D 表中的各行使用被稱爲狀態 ID 的整型標識符進行標記,以在向表中添加行時提供參考。每次編輯版本時均會建立新的狀態,並向這兩個增量表或其中一個增量表添加新行。狀態可被看做是樹結構的一部分,在樹結構中,各分支記錄了版本的發展狀況。記錄版本從基表到當前狀態之間一連串變動的一系列狀態稱爲譜系。顯示或查詢版本時,ArcGIS 會查詢版本的譜系以獲取狀態 ID,而後從 A 表和 D 表中檢索正確的記錄。get
幾個專業術語:
父版本:是生成其餘版本時所基於的地理數據庫版本。若是剛纔提到的其餘版本仍然存在,則沒法刪除父版本。
子版本:是經過父版本建立的地理數據庫版本。最初建立時,子版本包含與父版本相同的數據,狀態與父版本相同。在子版本中進行編輯後,一般會將這些編輯內容回發到父版本。
增量表:數據集的添加表和刪除表統稱爲增量表,由於它們用於存儲對數據集所作的更改。
刪除表:可記錄在版本化數據集中所作的全部刪除。它還包含已更新記錄的記錄,由於更新記錄的過程就是先刪除原有記錄,而後再添加修改過的記錄,所以更新記錄等同於刪除記錄。刪除表也稱爲 D 表。
基表:基表是要素類的核心表。它包含全部非空間屬性,若是使用 SQL 幾何類型,則它還包含空間屬性。術語「基表」用於將該核心表與其餘端表(例如增量表、ArcSDE XML 表或 sdebinary 幾何存儲類型使用的 f 和 s 表)區分開來。基表也稱爲業務表。
五、如何註冊爲版本
在某個數據集上點擊右鍵,選擇建立爲版本,如圖:
點擊建立爲版本後,會彈出以下對話框:
若是此處勾選,則在之後的編輯中,若是點擊保存,則全部數據將自動保存到基表中,並刪除全部在增量表的數據;若是不勾選,則保存後全部數據數據不會提交到基表中,
若是要查詢當前已經審覈入庫的全部數據只能經過查詢視圖的方式(視圖爲:數據集名稱_VW)。
六、如何切換版本
在將數據加載到地圖後,在TOC控件中,點擊」List by Source」視圖,能夠看每一個數據集的來源,以下圖,要素類pnt來源不一樣的版本:
那麼如何切換不一樣的版本進行編輯呢?咱們能夠在TOC控件中的數據上,點擊右鍵,並切換版本:
七、版本的衝突與協調
在編輯工具欄中,選擇「Options」能夠設置處理衝突的方式,能夠看出ArcGIS支持在行級別以及屬性級別進行衝突處理,而提交的順序支持按照入庫順序或者編輯順序進行處理。
具體項目中要選擇哪一種方式,應該具體狀況具體分析。如圖: