#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);
}