前言
上一篇博文简单介绍了有关属性查图与图查属性的相关操作,这个部分主要认识下交互式编辑绘制的相关操作。
在GIS交互式编辑绘制中,用户可以通过鼠标或其他输入设备在地图界面上进行绘制操作,例如绘制新的地理要素、编辑现有要素的形状或属性,删除不需要的要素等。通过交互式编辑绘制,用户可以快速、直观地创建、修改和管理地图数据,从而帮助更好地理解和分析地理空间信息。GIS交互式编辑绘制是GIS应用中常见的功能之一,为用户提供了方便、灵活的地图编辑工具。
一、有关常用类说明
MapControl类 | 地图控件类。该类是用于为地图的显示提供界面的,同时为地图与数据的互操作提供了途径。 |
Layer类 | 图层类。该类提供了图层显示和控制等便于地图管理的一系列属性。 |
二、有关常用属性说明
MapControl.Action | 获取或设置地图控件中地图的当前操作状态。在Action类中定义了目前支持的所有的对地图的操作模式。 |
Layer.IsEditable | 获取图层是否处于可编辑状态。可编辑属性控制是否对图层所引用的数据进行修改。 |
三、界面设计
(1)新增右键菜单内容
在原有右键菜单的基础上,添加按钮,名为“添加到地图中”,原有右键菜单内容可见下方博文:SuperMap iObjects .NET 11i二次开发(五)——小白进阶之有关数据集操作https://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;
}