ArcGIS批量添加字段 AddField

本文介绍了一种利用程序自动为Geodatabase类型的数据库添加字段的方法,通过创建主窗体并设置Buddy属性,实现对90多个图层的循环处理,每个图层添加6个字段,有效提高效率并减少错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       前些日子做了一个数据库的修改工作,要为数据添加字段,数据为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);
                }
            }
        }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值