arcgis engine中添加及修改图层的字段

 ILayer layer = m_hookHelper.FocusMap.get_Layer(layerIndex);           //输入图层1
                IFeatureLayer flayer = (IFeatureLayer)layer;
                IFeatureClass fclass = flayer.FeatureClass;
                int featureCount = fclass.FeatureCount(null);
                int idField = -2,proField=-2;                                        //第一列和第二列对应的属性字段的序号
                if ((idField=fclass.FindField(fields[0]))==-1)          //若在图层中不存在第一列所对应的属性字段,则退出
                {
                    MessageBox.Show("图层中找不到与第一列对应的属性字段");
                    return;
                }
                if ((proField=fclass.FindField(fields[1]))==-1)
                {           //若图层中不存在第二列对应的属性字段,则在该图层上添加字段
                    #region 添加字段
                    IField newField = new FieldClass();
                    IFieldEdit fieldEdit = (IFieldEdit)newField;
                    fieldEdit.Name_2 = fields[1];
                    fieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
                    fclass.AddField(newField);
                    #endregion             
                }
                #region 修改字段的值
                IDataset dataset = fclass as IDataset;
                IWorkspace workspace = dataset.Workspace;
                IWorkspaceEdit wse = workspace as IWorkspaceEdit;
                wse.StartEditing(false);
                wse.StartEditOperation();
                proField = fclass.FindField(fields[1]);
                for (int i = 0; i < featureCount; i++)
                {
                    tmp = fclass.GetFeature(i).get_Value(idField).ToString();
                    for (int j = 0; j < pro1.Length; j++)
                    {
                        if (tmp == pro1[j])
                        {
                            fclass.GetFeature(i).set_Value(proField, pro2[j]);
                            fclass.GetFeature(i).Store();
                            break;
                        }
                    }
                }
                wse.StopEditOperation();
                wse.StopEditing(true);
                #endregion
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值