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

 

 

使用说明 本程序可以一次性对多个SHP文件增加相 同字段.增加多个字段请输入字段名和类 型,长度等不同参数即可实现. 要注意的 是, 存放SHP的文件夹一定不能文命名 1. 请把本程序复制到 SHP 的文件夹运行 例如复制到D:\123,将对D盘下123目录 的所有SHP文件进行运算(包括子文件夹) 2. 因为 ARCMAP 的命令不支持文文件名 所以存放SHP 的文文件夹请不要以文 命名或特殊符号命名 3. ARCMAP的命令行不支持以数字开头.但可 在字段后面加数字,如CODE1,CODE2.所以 字段名不要用到数字开头,确实要用到数 字的请把SHP文转成TAB在MAPINFO里修改 但奇怪的是,直接在属性列表却可以添 加以数字开头的字段 4. 在运行程序后,请把弹出的记事本内容复 制到ARCMAP的命令行里粘帖后回车即可 5. 在XPSP2和2003SERVER系统可以执行 不能在98运行,2000的系统没测试 6.(还请哪位精通批处理的大侠指点一下) 目前尚有一个问题没有解决,就是同一类型 的字段如果要加二个,不能连着加.得关了程 序再开才能进行.否则弹的记事本内容,前 面的内容还是上次的字段路径. 但可以连着加不同的字段类型. 比如加完TEXT类型的字段.不能接着加TEXT 类型的字段,但可以加DATE/FLOAT等其他类型 ___________________________________ 如果不能运行或出现其他错误,请到我的 百度空间留言说明你的情况及建议: http://hi.baidu.com/lgx8280998 -----为解决问题而学习 BY 千浪 2009-03-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值