ArcGIS Engine 编辑- IEngineEditor

来源:互联网 发布:杜兰特首秀数据 编辑:程序博客网 时间:2024/06/03 19:53

IEngineEditor接口被EngineEditorClass实现,而EngineEditor对象相当于我们在ArcMap中编辑的时候用到的Editor工具条,回想下我们要在一个线图层中添加一条新的要素,我们往往是按照下面的步骤

1)start editing

2)将targetlayer 设置为我们要编辑的图层

3)设置task 为create new feature

4)然后使用草图工具开始编辑。

其实这4个分别对应了四个接口,而这4个接口都被直接或间接被EngineEditorClass实现。这4个接口分别是:

IEngineEditor

IEngineEditLayer

IEngineEditSketch

还有一个间接的

ITask

task是一个任务流,ArcGIS 中的这个task就是对一系列操作的封装,也就是用草图工具所做的一系列动作(mousedown,mousemove等)。

这个示例中我定义了一个给等高线批量赋值的task。

主要代码如下:


             IWorkspaceFactory pWsF = new ShapefileWorkspaceFactory();

             IFeatureWorkspace pFtWs = pWsF.OpenFromFile(@"E:\arcgis\Engine\数据", 0) as IFeatureWorkspace;

             IFeatureClass pFClass = pFtWs.OpenFeatureClass("ctour9_Clip");

             IFeatureLayer pFtLayer = new FeatureLayerClass();

             pFtLayer.Name = "等高线";

             pFtLayer.FeatureClass = pFClass;

             axMapControl1.AddLayer(pFtLayer as ILayer);

             axMapControl1.Refresh();

//启动编辑
             pEngineEditor = new EngineEditorClass();

                     pEngineEditor.StartEditing(pFtWs as IWorkspace, axMapControl1.Map);

             pEngineEditor.StartOperation();

//设置目标图层

             IEngineEditLayers pEditLayer = pEngineEditor as IEngineEditLayers;

             pEditLayer.SetTargetLayer(pFtLayer, 0);

// 设置任务

             pEngineEditor.CurrentTask = new CalculatContourTask() as IEngineEditTask;

//草图工具
             ICommand pSketch = new ControlsEditingSketchToolClass();

             pSketch.OnCreate(axMapControl1.Object);

             axMapControl1.CurrentTool = pSketch as ITool;

0 0