arcgis engine中添加及修改圖層的欄位

來源:互聯網
上載者:User
 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.