#AE实现矢量数据的基本操作—属性表操作(IFeatureClass)

it2024-07-07  42

#AE实现矢量数据的基本操作—属性表操作(IFeatureClass)

实现:字段添加、字段删除、字段查找、读取属性值:

1.字段添加:

首先查看IFeatureClass接口,其中有AddField方法可以添加字段。

而IFeatureLayer中存在FeatureClass属性直接获得IFeatureClass接口,使用AddField方法就可以添加字段。

但是AddField方法中需要一个IField对象。查看IField接口发现其中的属性不可写;(IFieldEdit中的属性可读可写

可以添加字段),于是使用IFieldEdit来创建IField对象(接口跳转),FieldClass实现了IFieldEdit和IField接口。

private void button1_Click(object sender, EventArgs e) { //获得MapControl控件中的图层 IFeatureLayer mylayer = axMapControl1.Map.get_Layer(0) as IFeatureLayer; //查询帮助文档,获得图层属性表有IFeatureClass接口有操作矢量数据字段的属性和方法 IFeatureClass myclass = mylayer.FeatureClass; IFieldEdit field = new FieldClass(); field.Name_2 = "place"; field.Type_2 = esriFieldType.esriFieldTypeString; field.Length_2 = 10; myclass.AddField(field as IField); MessageBox.Show("success"); }

2.删除字段:

//删除字段,根据一个矢量图层的矢量数据获得该矢量数据的IFields对象, //使用该对象的deleteField()方法删除一个指定索引位置的数据 private void button2_Click(object sender, EventArgs e) { IFeatureLayer mylayer = axMapControl1.get_Layer(0) as IFeatureLayer; IFeatureClass myclass = mylayer.FeatureClass; IFields fds = myclass.Fields; MessageBox.Show(fds.ToString()); IField fd = fds.get_Field(9); myclass.DeleteField(fd); MessageBox.Show("删除成功"); }

4.查找字段名:

//查找字段名,返回字段对应的索引 private void button3_Click(object sender, EventArgs e) { IFeatureLayer mylayer = axMapControl1.get_Layer(0) as IFeatureLayer; IFeatureClass myclass = mylayer.FeatureClass; int index = myclass.FindField("NAME"); MessageBox.Show(index.ToString()); }

5.读取属性值:接口跳转:IFeatureLayer-->IFeatureClass-->IFeature-->IFeature.get_value(index);IFeatureClass.FindField(【字段名】)-->index

//读取某一个字段的属性值 private void button4_Click(object sender, EventArgs e) { IFeatureLayer mylayer = axMapControl1.get_Layer(0) as IFeatureLayer; IFeatureClass myclass = mylayer.FeatureClass; IFeature fea = myclass.GetFeature(0); int index = myclass.FindField("NAME"); string name = Convert.ToString(fea.get_Value(index)); MessageBox.Show(name); }
最新回复(0)