首页 > 代码库 > ArcEngine IWorkspaceEdit Interface
ArcEngine IWorkspaceEdit Interface
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