c#+arcgisengine 对属性表创建字段项、并赋值(或对已有字段项值进行更改)

92 篇文章 5 订阅

1、创建属性表字段项:

        public IMapControl2 pMapControl;       
        public IMap pMap;      
        public int LayerIndex;       
        public string LayerName;  

 private void button1_Click(object sender, EventArgs e)
        {
            IFeatureLayer pFeatureLayer = pMap.get_Layer(LayerIndex) as IFeatureLayer;
            IFeatureClass pFc = pFeatureLayer.FeatureClass;
            IClass pClass = pFc as IClass;

            IFieldsEdit fldsE = pFc.Fields as IFieldsEdit;
            IField fld = new FieldClass();
            IFieldEdit2 fldE = fld as IFieldEdit2;
            fldE.Type_2 = esriFieldType.esriFieldTypeString;
            fldE.Name_2 = "123456";
            fldE.Length_2 = 20;
            pClass.AddField(fld);
        }

 

2、对字段项重新赋值

  private void button2_Click(object sender, EventArgs e)
        {
           //找到图层
            IFeatureLayer pFeatureLayer = pMap.get_Layer(LayerIndex) as IFeatureLayer;
            IFeatureClass pFc = pFeatureLayer.FeatureClass;
            IFeatureCursor pFeatureCursor = pFeatureLayer.FeatureClass.Search(null, false);
            IFeature pFeature = pFeatureCursor.NextFeature();
            IFields pFields = pFeature.Fields;
           // IField pField = pFeature.Fields;
            IClass pClass = pFc as IClass;

           

           //使要素处于编辑状态
            IDataset dataset = (IDataset)pFc;
            IWorkspace workspace = dataset.Workspace;
            IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;
            workspaceEdit.StartEditing(true);
            workspaceEdit.StartEditOperation();


            while (pFeature != null)
            {
                string[] fldvalue = new string[pFields.FieldCount];
                for (int i = 0; i < pFields.FieldCount; i++)
                {
                    if (pFields.get_Field(i).Name == "Shape")
                    {
                        fldvalue[i] = Convert.ToString(pFeature.Shape.GeometryType);
                        //修改属性值 
                        int field1 = pFields.FindField("123");
                        int field2 = pFields.FindField("123456");
                        int field3 = pFields.FindField("XXX");
                        pFeature.set_Value(field1, 123);
         

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值