1. 程式人生 > >ArcEngine IWorkspaceEdit Interface

ArcEngine IWorkspaceEdit Interface

() 版本 store 官方 可能 而且 數據庫 以及 class

ArcGIS 官方文檔鏈接 http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#/IWorkspaceEdit_Interface/002500000m5v000000/

ESRI都不對AO進行維護了,而且隨著ArcGIS產品版本的不斷更新,新的Lisence對於開發環境有著很苛刻的要求。所以從長遠來看,AO的開發會逐漸退出歷史舞臺,但對於剛開始接觸GIS開發的我來說,了解下還是很有必要的。

IWorkspaceEdit接口下的方法,它主要通過編輯操作和編輯會話對地理數據庫進行創建、修改、刪除等管理。官方幫助對其介紹的很詳細,在這就不贅述了。

IWorkspaceEdit的優點:

1、在編輯過程中如果發生異常,則在編輯之前的操作將會回滾,不會保存到數據庫中。(在沒有執行存儲命令之前,這句話有效)

2、利用UndoEditOperation 和 RedoEditOperation 方法,對已經停止編輯,但未保存的操作,進行撤銷和重做操作。

3、可以進行批量的更新(修改)操作,在對sde地理數據庫進行操作時,很大的發揮了性能優勢。

4、允許多用戶對一個地理數據庫進行編輯操作,在編輯過程中,用戶之間不會有影響。(保存編輯之後可能會有影響,這塊具體問題具體對待)

下面就是主要對StartEditing,StartEditOperation,StopEditing,StopEditOperation,AbortEditOperation方法簡單的說下,都是一些個人的見解。

 1 public void CreateRowInEditSession(IWorkspace workspace, ITable table)
 2 {
 3       //投射workspace到IWorkspaceEdit接口
 4       IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;
 5 
 6       // 開啟一個編輯會話
 7       workspaceEdit.StartEditing(false);
 8 
 9       // 開始一個編輯操作
10       workspaceEdit.StartEditOperation();
11 12 // 創建表裏的一行數據 13 IRow row = table.CreateRow(); 14 row.Store(); 15 16 // 保存編輯操作 17 workspaceEdit.StopEditOperation(); 18 19 // 提交編輯操作 20 workspaceEdit.StopEditing(true); 21 }

StartEditing(bool withUndoRedo) 這裏參數需要說下,如果為true,則會創建撤銷和重做棧。如果不是必須的話,一般會為 false,這樣在性能上會提高一些。

StopEditOperation() 只是將操作過程保存了下來,並沒有將操作結果保存。只有當StopEditing(bool saveEdits) 的參數為true時才會將操作結果保存下來。

AbortEditOperation() 會中止一個操作,往往用在異常拋出之前,緊跟其後的是StopEditing(false) 。

當然,ArcObjects還提供了專門針對編輯的 ESRI.ArcGIS.Editor的Library,裏面涉及到很多接口、類,以及他們下面的方法、屬性。這些以後都回去了解下。

ArcEngine IWorkspaceEdit Interface