1.熟悉arcgis中的编辑工具
2.掌握通过arcgis engine 的toolbarcontrol添加编辑工具条
3.掌握自定义工具条的添加
计算机、visual studio 软件、ArcGIS engine 开发包
三、实验内容与步骤- 通过arcgis engine 的toolbarcontrol添加编辑工具条
(1)从工具箱中添加一个toolbarcontrol到主界面中
(2)在toolbarcontrol中右键属性打开属性设置对话框,设置Buddy,绑定地图显示窗口。
(3)选择item页面,点击添加,选择相应的编辑按钮。
- 自定义工具条
自定义工具条实现的基本步骤:
(1)调用IEngineEditor接口的StartEditing方法打开一个编辑对象;
(2)将设定好参数的IEngineEditor接口跳转到IEngineEditLayers接口,设置目标图层;
(3)通过IEngineEditTask对象设定编辑任务,并将其传递给当前的EngineEditor对象的CurrentTask属性;
(4)实现所要执行的编辑操作(使用工具代替);
(5)使用IEngineEditor接口的StopEditing方法,结束编辑任务并保存。
具体步骤如下:
(1) 如toolbarcontrol中工具添加一样,添加 新建、编辑、捕捉、属性编辑、节点编辑、撤销、重做等工具;
(2) 在界面上添加对应的自定义工具和图层选择下拉列表
(3) 开始编辑按钮
////// 开始编辑 /// /// /// private void buttonItem15_Click(object sender, EventArgs e) { //获取进行编辑的图层 IFeatureLayer m_cureditlayer = getfeaturelayerbyname(this.cb_layerselect.Text); if (m_cureditlayer == null) { MessageBox.Show("请选择可编辑的图层!"); return; } //编辑工具初始化 m_engineeditor = new EngineEditorClass(); //设置是否可以进行撤销、重做 m_engineeditor.EnableUndoRedo(true); //开始编辑操作 m_engineeditor.StartEditing(((IDataset)m_cureditlayer.FeatureClass).Workspace, this.axMapControl1.Map); //设置编辑图层 IEngineEditLayers editlayer = m_engineeditor as IEngineEditLayers; editlayer.SetTargetLayer(m_cureditlayer, 0); //设置当前的编辑任务(创建新要素) m_engineeditor.CurrentTask = m_engineeditor.GetTaskByUniqueName("ControlToolsEditing_CreateNewFeatureTask"); }
(4) 添加新要素
////// 添加新要素 /// /// /// private void buttonItem21_Click(object sender, EventArgs e) { ICommand cmd = axToolbarControl1.GetItem(1).Command; axMapControl1.CurrentTool = (ITool)cmd; }
(5) 编辑要素
////// 属性编辑 /// /// /// private void buttonItem28_Click(object sender, EventArgs e) { ICommand cmd = axToolbarControl1.GetItem(3).Command; cmd.OnClick(); } ////// 移动要素 /// /// /// private void buttonItem22_Click(object sender, EventArgs e) { ICommand cmd = axToolbarControl1.GetItem(2).Command; axMapControl1.CurrentTool = (ITool)cmd; }
(6) 撤销与重做
////// 撤销 /// /// /// private void buttonItem24_Click(object sender, EventArgs e) { ICommand cmd = axToolbarControl1.GetItem(6).Command; cmd.OnClick(); } ////// 重做 /// /// /// private void buttonItem25_Click(object sender, EventArgs e) { ICommand cmd = axToolbarControl1.GetItem(7).Command; cmd.OnClick(); }
(7) 节点编辑
////// 节点编辑 /// /// /// private void buttonItem23_Click(object sender, EventArgs e) { ICommand cmd = axToolbarControl1.GetItem(4).Command; cmd.OnClick(); }
(8) 停止编辑
///四、实验要求/// 终止编辑 /// /// /// private void buttonItem27_Click(object sender, EventArgs e) { m_engineeditor.StopEditing(true); }
分别采用arcgis engine的toolbarcontrol以及结合自定义工具分别实现矢量文件的编辑工具条。
1.学会了两种属性编辑的创建方式
2.对属性编辑有了更加深入的认识。



