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,里面涉及到不少接口、类,以及他们下面的方法、属性。这些之后都回去了解下。

相关文章
相关标签/搜索