使用版本的過程分為以下幾個步驟
1.將workspace或者資料集註冊為使用版本的workspace或者資料集
iversionedobject verobj= ds as iversionedobject;//假設ds 是乙個資料集
if(verobj!=null&&(!verobj.pverdobj.isregisteredasversioned))
2.獲取版本資料
獲取版本資料的過程比較簡單。在連線資料庫的時候 需要提供版本字串。
預設是使用sde.default這個版本。如果使用其他版本字串就會獲得其他版本的資料。
3.建立新版本
//假設space 是乙個workspace 而且是乙個企業資料庫的workspace。個人資料庫和檔案工作空間是
//沒有版本功能的。
iversionedworkspace pverws=(iversionedworkspace)space;
iversion pv=pverws.defaultversion;//上一級版本 這裡使用預設版本作為上一級版本
iversion pvc=pv.createversion(vername); //建立版本
pvc.description=verdesc;//版本的描述
pvc.access=esriversionaccess.esriversionaccessprivate;//版本的訪問策略為私有
pnewverws=(iversionedworkspace)pvc;//獲取使用新版本的workspace的一種快捷方式
4.合併(融合)版本資料
合併資料使用iversionedit介面
這個介面有versionedworkspace 實現。
下面介紹這個介面
canpost 當前正在編輯的版本是否可以提交到目標版本中去 。
commonancestorversion 當前版本和目標版本的共同祖先 。
conflictclasses 有衝突的class。
modifiedclasses 在兩個版本中發生變化的class 。
post 提交版本資料
prereconcileversion 目標版本在檢測衝突之前的狀態(?)。
reconcile 測試資料是否衝突 如果返回true表示有衝突
reconcileversion 目標版本在衝突檢測開始的時候的狀態(?)
starteditingversion 目標版本開始編輯的時候的狀態 (?)
在提交資料之前 一定要呼叫reconcile 否則很有可能會返回錯誤。
5.瀏覽工作版本元資料
瀏覽版本元資料是指統計工作空間中一共有哪些版本。某個指定的版本的父親或祖先是誰?
他又有哪些派生的版本?
iversioninfo 介面提供了這些資訊
下面是iversioninfo介面的詳細資訊:
access 介面的訪問策略
ancestors 版本的所有祖先,按照由近到遠的次序排列
children 該版本的直接派生版本。
created 建立的時間
description 版本的描述
isowner 當前使用者是不是擁有該版本
modified 最後修改時間
parent 版本的直接父親接電
versionname 版本的名稱
注意versioninfo 實現了上述介面 但是versioninfo 不是乙個可以用來建立物件的類。我們只能通過
別的方式獲取他
iversionedworkspace.findversion("目標版本名稱");
或者iversionedworkapce.versions 獲取所有當前使用者可以獲得的版本。包括自己建立 別人建立的public 和protected的版本
但是如果別人建立的版本是protected 的那麼 你就只能看到資料。不能編輯。
ArcEngine中對Feature的編輯
arcengine中對feature的編輯 對feature的編輯分為以下幾個部分 1.新建 2.修改 3.刪除 涉及到的介面有以下幾個 iworkspaceedit ifeatureclass ifeaturecursor ifeature 其中iworkspaceedit用於啟動編輯 開始編輯操...
ArcEngine中對Feature的編輯
arcengine中對feature的編輯 arcengine中對feature的編輯 對feature的編輯分為以下幾個部分 1.新建 2.修改 3.刪除 涉及到的介面有以下幾個 iworkspaceedit ifeatureclass ifeaturecursor ifeature 其中iwor...
ArcEngine幾何變換中的策略模式
1.itransform2d介面的transform方法 1 c public void transform 2esritransformdirection direction,3 itransformation transformation 大部分的geometry物件都實現了itransform...