GIS二次开发:实验四 编辑工具条的实现

实验四 编辑工具条的实现

一、实验目的

1.熟悉arcgis中的编辑工具
2.掌握通过arcgis engine 的toolbarcontrol添加编辑工具条
3.掌握自定义工具条的添加

二、实验仪器与设备

计算机、visual studio 软件、ArcGIS engine 开发包

三、实验内容与步骤

  1. 通过arcgis engine 的toolbarcontrol添加编辑工具条
    (1)从工具箱中添加一个toolbarcontrol到主界面中
    在这里插入图片描述

(2)在toolbarcontrol中右键属性打开属性设置对话框,设置Buddy,绑定地图显示窗口。
在这里插入图片描述

(3)选择item页面,点击添加,选择相应的编辑按钮。
在这里插入图片描述

  1. 自定义工具条
    自定义工具条实现的基本步骤:
    (1)调用IEngineEditor接口的StartEditing方法打开一个编辑对象;
    (2)将设定好参数的IEngineEditor接口跳转到IEngineEditLayers接口,设置目标图层;
    (3)通过IEngineEditTask对象设定编辑任务,并将其传递给当前的EngineEditor对象的CurrentTask属性;
    (4)实现所要执行的编辑操作(使用工具代替);
    (5)使用IEngineEditor接口的StopEditing方法,结束编辑任务并保存。
    具体步骤如下:
    (1) 如toolbarcontrol中工具添加一样,添加 新建、编辑、捕捉、属性编辑、节点编辑、撤销、重做等工具;
    (2) 在界面上添加对应的自定义工具和图层选择下拉列表
    在这里插入图片描述

(3) 开始编辑按钮

    /// <summary>
    /// 开始编辑
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    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) 添加新要素

/// <summary>
/// 添加新要素
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonItem21_Click(object sender, EventArgs e)
{
    ICommand cmd = axToolbarControl1.GetItem(1).Command;
    axMapControl1.CurrentTool = (ITool)cmd;

}

(5) 编辑要素

/// <summary>
/// 属性编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonItem28_Click(object sender, EventArgs e)
{
    ICommand cmd = axToolbarControl1.GetItem(3).Command;
    cmd.OnClick();

}
/// <summary>
/// 移动要素
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonItem22_Click(object sender, EventArgs e)
{
    ICommand cmd = axToolbarControl1.GetItem(2).Command;
    axMapControl1.CurrentTool = (ITool)cmd;

}

(6) 撤销与重做

/// <summary>
/// 撤销
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonItem24_Click(object sender, EventArgs e)
{
    ICommand cmd = axToolbarControl1.GetItem(6).Command;
    cmd.OnClick();
}
/// <summary>
/// 重做
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonItem25_Click(object sender, EventArgs e)
{
    ICommand cmd = axToolbarControl1.GetItem(7).Command;
    cmd.OnClick();
}

(7) 节点编辑

/// <summary>
/// 节点编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonItem23_Click(object sender, EventArgs e)
{
    ICommand cmd = axToolbarControl1.GetItem(4).Command;
    cmd.OnClick();
}

(8) 停止编辑

    /// <summary>
    /// 终止编辑
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void buttonItem27_Click(object sender, EventArgs e)
    {
        m_engineeditor.StopEditing(true);
    }

四、实验要求

分别采用arcgis engine的toolbarcontrol以及结合自定义工具分别实现矢量文件的编辑工具条。
在这里插入图片描述
在这里插入图片描述

五、实验心得与体会

1.学会了两种属性编辑的创建方式
2.对属性编辑有了更加深入的认识。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
GIS二次开发是指在已有地理信息系统(GIS)平台的基础上,进行二次开发,以满足特定的需求和功能。其中,使用MapObjects是一种常见的二次开发方式。 MapObjects是一套面向对象的GIS开发工具,可用于快速构建基于地图的应用程序。它提供了一系列的API和控件,用于地图显示、地理数据处理、地图编辑和空间分析等功能。通过MapObjects的二次开发,可以实现自定义地图展示、数据编辑、地理分析等功能。 首先,在二次开发中,我们可以通过MapObjects的地图显示功能,自定义地图的展示效果。可以通过选择合适的地图底图、设置样式和符号,使地图符合特定项目或用户的需求。同时,还可以添加自定义的图层和标注,提高地图的可视化效果。 其次,MapObjects还提供了地理数据处理的功能,可以将各种格式的地理数据导入系统中,并进行处理和分析。可以进行空间查询、空间拓扑分析等操作,以满足用户对地理数据的查询和分析需求。例如,可以利用MapObjects进行缓冲区分析,计算两个地点之间的最短路径等。 此外,MapObjects还支持地图编辑功能,可以对地图进行编辑操作。可以添加、删除、修改地理要素,编辑地理数据的属性信息,并将修改结果保存到数据库或文件中。这在一些需要对地理数据进行实时更新和维护的应用场景中非常有用。 综上所述,通过MapObjects进行GIS二次开发可以实现地图展示、地理数据处理、地图编辑和空间分析等功能。它是一种方便、高效的二次开发方式,可用于各种GIS应用的定制化开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nochengzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值