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

时间: 2024-08-05 01:26:47

ArcEngine IWorkspaceEdit Interface的相关文章

ArcEngine查询、添加、删除要数的方法

转自原文ArcEngine查询.添加.删除要数的方法 1.查找数据 1).利用FeaturCursor进行空间查询 //空间查询 ISpatialFilter spatialFilter = new SpatialFilterClass(); spatialFilter.Geometry = envelope;//指定几何体 String shpFld = featureClass.ShapeFieldName; spatialFilter.GeometryField = shpFld; spa

ArcEngine 数据导入经验(转载)

转自原文ArcEngine 数据导入经验(转载) (一) GIS系统数据是基础,想必大家在做ArcEngine二次开发的过程中都会遇到向MDB和SDE写入数据的工作,我们将会通过几个篇幅,从大数据量导入过程中的问题和解决方式入手带给大家一些实用的经验. 1.数据的写入和删除要使用IWorkspaceEdit.StartEditing来开启一个编辑流程,千万别草率的写入和删除.使用该接口,如果数据在处理过程中出现任何异常,可以不对操作结果进行保存编辑和结束编辑IWorkspaceEdit.Stop

ArcEngine 一些实现代码

[030]?? ArcEngine 一些实现代码 ---------------------------------------------------------------------------------------------------------原文链接:http://www.cnblogs.com/alex-bn-lee/archive/2012/04/08/2437358.html ●·● 目录: A1 ………… 实现:鼠标滑过显示要素 tipA2 ………… 实现:通过鼠标选择

ArcEngine的ToolbarControl解析

转自Love Lyre原文 ArcEngine的ToolbarControl解析 ToolbarControlClass有三个主要的接口: IToolbarControl, IToolbarControl2, IToolbarControlDefault 其中,IToolbarControl2是IToolbarControl的新版本.而IToolbarControlDefault is a 'pure' dispatch interface,始终是IToolbarControl的最新的版本,也就

Adding New Functions to MySQL(User-Defined Function Interface UDF、Native Function)

catalog 1. How to Add New Functions to MySQL 2. Features of the User-Defined Function Interface 3. User-Defined Function 4. UDF Argument Processing 5. UDF Return Values and Error Handling 6. UDF Compiling and Installing 7. Adding a New Native Functio

Interface接口

一.接口及作用 接口是一个非常重要的概念,理解这个,先举一个实现生活中的实例. 现在,电脑主板,有很多插槽,可用来插CPU.内存等.当CPU等元件需要更新换代升级时,只要将CPU单独更换就可以了,而不需要更换主板.其实,主板上的这些暴露在外的插槽,就可以理解为接口. 接口就是对外暴露的规则,只要符合规则的CPU.内存,不论品牌.型号.规格,都可以安插使用. 接口是程序的功能扩展.有了插槽,也就提高了主板的功能扩展性,比如内存不够用了,我们就可以换成内容最大的内存条,或再加新的内存条. 接口降低了

一个Interface 继承多个Interface 的总结

我们知道在Java中的继承都是单继承的,就是说一个父类可以被多个子类继承但是一个子类只能有一个父类.但是一个接口可以被不同实现类去实现,这就是我们说的Java中的多态的概念.下面我们再来说一下接口的多继承的概念,就是说一个接口是可以继承多个接口的. 下面是我们公司自己开发的ORM框架,就用到了接口的多继承的概念. @MybatisRepository public interface BaseQueryDao<T> extends IBaseQueryDao<T>, Dynamic

【翻译】Android Interface Definition Language (AIDL)

参考地址:https://developer.android.com/guide/components/aidl.html Android Interface Definition Language (AIDL) AIDL (Android Interface Definition Language) is similar to other IDLs you might have worked with. It allows you to define the programming inter

JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final修饰的局部变量 final,故名思意,就是最终的意思,由以上的五种特性,不过final的出现,也是有