ArcEngine IWorkspaceEdit Interface

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

ESRI都不對AO進行維護了,並且隨着ArcGIS產品版本的不斷更新,新的Lisence對於開發環境有着很苛刻的要求。因此從長遠來看,AO的開發會逐漸退出歷史舞臺,但對於剛開始接觸GIS開發的我來講,瞭解下仍是頗有必要的。數據庫

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

IWorkspaceEdit的優勢:spa

一、在編輯過程當中若是發生異常,則在編輯以前的操做將會回滾,不會保存到數據庫中。(在沒有執行存儲命令以前,這句話有效)code

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

三、能夠進行批量的更新(修改)操做,在對sde地理數據庫進行操做時,很大的發揮了性能優點。htm

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

 

下面就是主要對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,裏面涉及到不少接口、類,以及他們下面的方法、屬性。這些之後都回去瞭解下。

相關文章
相關標籤/搜索