ArcGIS批量添加字段 AddField

前些日子做了一个数据库的修改工作,要为数据添加字段,数据为Geodatabase类型,里面有90多个图层,每个图层添加6个字段,一共要做2个小时左右,而且效率比较低,容易出错,因此想到了通过程序来解决。

       实现如下,首先先建立程序主窗体,包括TocControl,AxMapControl和ToolBarControl,设置好他们之间的Buddy属性,在ToolBarControl中添加基本工具(包含数据加载工具,用于加载操作数据)。

       地图加载进来,就可以对图层进行循环处理添加字段了。

       主要代码如下:   

       public ILayer pLayer;
       public IFeatureLayerpFLayer;
       public IFeatureClasspFC;
       public ILayerFieldspLayerFields;
       DataTable dt = new DataTable();
       private voidbtnAdd_Click(object sender, EventArgs e)
       {
            if(axMapControl1.LayerCount == 0)
            {
               MessageBox.Show("请先加载添加字段的图层!");
                return;
            }
            //循环所有图层
            for(int i = 0; i < axMapControl1.LayerCount;i++)
            {
                try
                {
                    pLayer =axMapControl1.get_Layer(i);
                    pFLayer = pLayer as IFeatureLayer;
                    pFC = pFLayer.FeatureClass;
                    pLayerFields = pFLayer as ILayerFields;
                    ITablepTable = (ITable)pFC;
                    //删除原来表中的数据,若不需要可以去除,在数据库有数据的情况下无法插入非空字段
                    pTable.DeleteSearchedRows(null);
                    IFieldnewField = new FieldClass();
                    IFieldEditfieldEdit = (IFieldEdit)newField;
                    fieldEdit.Name_2 = "字段名称";
                    //数据类型,这里以字符型为例
                    fieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                    //字节长度
                    fieldEdit.Length_2 = 1;
                    //字段是否允许为空
                    fieldEdit.IsNullable_2 = false;
                   pFC.AddField(newField);                 
                }
                catch(Exception exc)
                {
                    MessageBox.Show("添加失败" + exc.Message);
                }
            }
        }

转载自:https://blog.csdn.net/kone0611/article/details/51149053

You may also like...