//判断要素类、图层名和地图对象是否为空,为空返回false
if (featureClass == null || sLayerName == \ || m_map == null) { returnfalse; }
//通过接口创建要素图层对象,将要素类以层的形式进行操作 IFeatureLayerfeatureLayer = newFeatureLayerClass(); featureLayer.FeatureClass = featureClass; featureLayer.Name = sLayerName;
//将要素图层转换为一般图层,并判断是否成功 ILayer layer = featureLayerasILayer; if (layer == null) { returnfalse; }
//将创建好的图层添加至地图对象,将地图对象转化为活动视图,并判断是否成功 m_map.AddLayer(layer);
IActiveViewactiveView = m_mapasIActiveView; if (activeView == null) { returnfalse; }
//活动视图进行刷新,新添加的图层将被展开在控件中 activeView.Refresh(); returntrue; }
3. 实现创建shape文件
//创建文件菜单项点击函数
privatevoidmiCreateShapefile_Click(object sender, EventArgs e) {
//创建文件,将其以要素类形式获取,判断是否成功
DataOperatordataOperator = newDataOperator(axMapControl1.Map); IFeatureClassfeatureClass = dataOperator.CreateShapefile(\, \, \); if (featureClass == null) {
MessageBox.Show(\创建Shape文件失败!\); return;
}
//将要素类添加到地图中,设置图层名为\,记录结果 boolbRes = dataOperator.AddFeatureClassToMap(featureClass, \Stations\); if (bRes)
{
miCreateShapefile.Enabled = false; return;
} else
{
MessageBox.Show(\将新建Shape文件加入地图失败!\); return;
} }
4.运行结果
添加要素实验主要包以下部分:
1. 添加主窗体控件:创建数据操作菜单项的下拉菜单项“添加要素” 2. 添加类成员函数:在数据操作类中添加“添加要素至图层”函数
3. 添加事件响应函数:包括两个,添加要素菜单项的点击事件响应函数和鼠标按下事件响应函数 流程图如下:
添加主窗体控件添加类成员函数添加事件响应函数运行,创建文件,点击添加要素鼠标在地图中按下,创建点要素
关键代码:
1. 添加“新增要素”函数
//添加要素函数
publicboolAddFeatureToLayer(StringsLayerName, StringsFeatureName, IPoint point) {
//判断图层名、要素名、要素坐标和地图对象是否为空
if (sLayerName == \ || sFeatureName == \ || point == null || m_map == null) { returnfalse; }
//对地图对象中的图层进行遍历,寻找指定图层 ILayer layer = null;
for (inti = 0; i layer = m_map.get_Layer(i); if (layer.Name == sLayerName) { break; } layer = null; } //判断图层是否获取成功 if (layer == null) { returnfalse; } //通过接口访问访问获取到的图层,并进一步获取其要素类 IFeatureLayerfeatureLayer = layer asIFeatureLayer;