C# ArcGIS 添加几何要素到地图图层
private void addFeature(string layerName, IGeometry geometry)
{
int i = 0;
ILayer layer = null;
// 查找目标图层
for (i = 0; i < axMapControl1.LayerCount; i++)
{
layer = axMapControl1.Map.get_Layer(i);
if (layer.Name.ToLower() == layerName)
{
break;
}
}
// 获取要素图层和要素类
IFeatureLayer featureLayer = layer as IFeatureLayer;
IFeatureClass featureClass = featureLayer.FeatureClass;
IDataset dataset = (IDataset)featureClass;
IWorkspace workspace = dataset.Workspace;
// 开始空间编辑
IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;
workspaceEdit.StartEditing(true);
workspaceEdit.StartEditOperation();
// 清除图层原有的实体对象
IFeatureCursor featureCursor = featureClass.Search(null, true);
IFeature feature;
feature = featureCursor.NextFeature();
while (feature != null)
{
feature.Delete();
feature = featureCursor.NextFeature();
}
// 开始插入新的实体对象
featureCursor = featureClass.Insert(true);
IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer();
featureBuffer.Shape = geometry; // 设置几何形状
object featureOID = featureCursor.InsertFeature(featureBuffer);
// 保存实体
featureCursor.Flush();
// 结束空间编辑
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);
System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor);
}
// 单击 AddGeometry 菜单项时触发的事件
private void addGeometryToolStripMenuItem_Click(object sender, EventArgs e)
{
// 创建一个几何要素集合
IGeometryCollection geometryCollection = new MultipointClass();
object missing = Type.Missing;
IPoint point;
// 添加 10 个点到集合
for (int i = 0; i < 10; i++)
{
point = new PointClass();
point.PutCoords(i * 2, i * 2);
geometryCollection.AddGeometry(point as IGeometry, ref missing, ref missing);
}
// 将集合转换为多点对象
IMultipoint multipoint = geometryCollection as IMultipoint;
// 调用 addFeature 方法添加多点到地图
addFeature('multipoint', multipoint as IGeometry);
// 设置地图显示范围
this.axMapControl1.Extent = multipoint.Envelope;
this.axMapControl1.Refresh();
}
代码说明:
addFeature方法用于向指定名称的图层添加几何要素。- 首先,它循环遍历地图控件中的所有图层,找到与给定名称匹配的图层。
- 然后,获取该图层的要素类,并使用
IWorkspaceEdit接口开始编辑工作空间。 - 接着,删除图层中所有现有的要素。
- 最后,使用
IFeatureCursor和IFeatureBuffer将新的几何要素插入到图层中,保存更改并结束编辑会话。
addGeometryToolStripMenuItem_Click方法演示了如何创建一个包含 10 个点的多点几何对象,并将其添加到名为 'multipoint' 的图层中。- 首先,创建一个
MultipointClass对象,并使用循环添加 10 个点。 - 然后,将
MultipointClass对象转换为IMultipoint接口。 - 最后,调用
addFeature方法将多点添加到地图,设置地图显示范围并刷新地图。
- 首先,创建一个
这段代码演示了如何使用 C# 和 ArcGIS API 向地图添加几何要素。 这对于开发自定义 GIS 应用程序非常有用。
原文地址: https://www.cveoy.top/t/topic/bedR 著作权归作者所有。请勿转载和采集!