SuperMap iObjects .NET 11i二次开发(八)——小白进阶之交互式编辑绘制

本文详细介绍了GIS交互式编辑绘制在SuperMapiObjects.NET中的应用,包括MapControl和Layer类的作用,常用属性说明,以及如何实现添加地图元素、绘制二维点线面和控制图层编辑状态。
摘要由CSDN通过智能技术生成

前言

上一篇博文简单介绍了有关属性查图与图查属性的相关操作,这个部分主要认识下交互式编辑绘制的相关操作。


在GIS交互式编辑绘制中,用户可以通过鼠标或其他输入设备在地图界面上进行绘制操作,例如绘制新的地理要素、编辑现有要素的形状或属性,删除不需要的要素等。通过交互式编辑绘制,用户可以快速、直观地创建、修改和管理地图数据,从而帮助更好地理解和分析地理空间信息。GIS交互式编辑绘制是GIS应用中常见的功能之一,为用户提供了方便、灵活的地图编辑工具。

一、有关常用类说明

MapControl类

地图控件类。该类是用于为地图的显示提供界面的,同时为地图与数据的互操作提供了途径。

Layer类

图层类。该类提供了图层显示和控制等便于地图管理的一系列属性。

二、有关常用属性说明

MapControl.Action

获取或设置地图控件中地图的当前操作状态。在Action类中定义了目前支持的所有的对地图的操作模式。

Layer.IsEditable

获取图层是否处于可编辑状态。可编辑属性控制是否对图层所引用的数据进行修改。

三、界面设计

(1)新增右键菜单内容

在原有右键菜单的基础上,添加按钮,名为“添加到地图中”,原有右键菜单内容可见下方博文:SuperMap iObjects .NET 11i二次开发(五)——小白进阶之有关数据集操作icon-default.png?t=N7T8https://blog.csdn.net/Adoudoudou_/article/details/135448479?spm=1001.2014.3001.5502

(2)新建按钮

新建交互式编辑绘制按钮,此处以绘制二维点、线、面为例。

四、功能实现

(1)添加到地图

private void AddtoMap_Click(object sender, EventArgs e)
{
    WorkspaceTreeNodeBase treeNode = D_workspaceControl.WorkspaceTree.SelectedNode as WorkspaceTreeNodeBase;

    switch (treeNode.NodeType)
    {
        case WorkspaceTreeNodeDataType.DatasetImage:
            {
                //当选择对象为影像数据集时,将数据集添加到地图窗口
                string name = treeNode.Text;
                Dataset dataset = D_workspace.Datasources[0].Datasets[name];
                //数据集添加到地图图层集合
                D_mapControl.Map.Layers.Add(dataset, true);
                //设置图层管理器关联的地图
                D_layersControl.Map = D_mapControl.Map;
                D_layersControl.Refresh();
                D_mapControl.Map.Refresh();
                break;
            }
        case WorkspaceTreeNodeDataType.DatasetVector:
            {
                //当选择对象为矢量数据集时,将数据集添加到地图窗口
                string name = treeNode.Text;
                Dataset dataset = D_workspace.Datasources[0].Datasets[name];
                //数据集添加到地图图层集合
                D_mapControl.Map.Layers.Add(dataset, true);
                //设置图层管理器关联的地图
                D_layersControl.Map = D_mapControl.Map;
                D_layersControl.Refresh();
                D_mapControl.Map.Refresh();
                break;
            }
        case WorkspaceTreeNodeDataType.DatasetGrid:
            {
                //当选择对象为栅格数据集时,将数据集添加到地图窗口
                string name = treeNode.Text;
                Dataset datasetgrid = D_workspace.Datasources[0].Datasets[name];
                //数据集添加到地图图层集合
                D_mapControl.Map.Layers.Add(datasetgrid, true);
                //设置图层管理器关联的地图
                D_layersControl.Map = D_mapControl.Map;
                D_layersControl.Refresh();
                D_mapControl.Map.Refresh();
                break;
            }
    }
}

(2)绘制二维点

private void DrawPoint_Click(object sender, EventArgs e)
{
    D_mapControl.Action = SuperMap.UI.Action.CreatePoint;
}

(3)绘制二维线

private void DrawLine_Click(object sender, EventArgs e)
{
    D_mapControl.Action = SuperMap.UI.Action.CreateLine;
}

(4)绘制二维面

private void DrawPolygon_Click(object sender, EventArgs e)
{
    D_mapControl.Action = SuperMap.UI.Action.CreatePolygon;
}

(5)如不使用点击画笔按钮开启图层可编辑而使用代码开启图层可编辑,例:

private void DrawPoint_Click(object sender, EventArgs e)
{
    D_mapControl.Map.Layers[0].IsEditable = true;
    //D_mapControl.Map.Layers["name"].IsEditable = true;
    D_mapControl.Action = SuperMap.UI.Action.CreatePoint;
}

五、运行结果


 总结

以上就是有关于SuperMap iObjects 11i .NET交互式编辑绘制的相关操作的一些过程记录,我们下篇博文再见!

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值