c#+arcgisengine 对属性表创…

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);
                        pFeature.set_Value(field2, 11);
                        pFeature.set_Value(field3, 11);                     
                    }
                    else
                    {
                        fldvalue[i] = Convert.ToString(pFeature.get_Value(i));
                    }
                }
                pFeature.Store();
                dataGridView1.Rows.Add(fldvalue);
                pFeature = pFeatureCursor.NextFeature();

                //关闭要素编辑状态
                workspaceEdit.StopEditing(true);
                workspaceEdit.StopEditOperation();
            }
        }

 

3、选定图层,对指定图层字段进行赋值

      private void button3_Click(object sender, EventArgs e)
        {

            //找到图层
            IFeatureLayer pFeatureLayer = pMap.get_Layer(LayerIndex) as IFeatureLayer;
            IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
                       
            //使要素处于编辑状态
            IDataset dataset = (IDataset)pFeatureClass;
            IWorkspace workspace = dataset.Workspace;
            IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;
            workspaceEdit.StartEditing(true);
            workspaceEdit.StartEditOperation();


            if (pFeatureLayer != null)
            {
                int nIndex = pFeatureClass.FindField("123456");
                if (nIndex != -1)
                {
                    IField pField = pFeatureClass.Fields.get_Field(nIndex);

                    IQueryFilter pFilter = new QueryFilterClass();
                    pFilter.WhereClause = "ENNM='汤河'";
                    IFeatureCursor pCursor = pFeatureClass.Update(pFilter, false);
                    IFeature pFeature = pCursor.NextFeature();
                    IFields pFields = pFeature.Fields;

                    while (pFeature != null)
                    {
                             pFeature.set_Value(nIndex, 15);
                             pCursor.UpdateFeature(pFeature);
                             pFeature = pCursor.NextFeature();
                     }
                           
            }
            //关闭要素编辑状态
            workspaceEdit.StopEditing(true);
            workspaceEdit.StopEditOperation();
        }

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值