修改 ArcGis Engine 图层字段值

 

直接上代码:

        /// <summary>
        /// 修改空间数据库列值
        /// </summary>
        private void EditSdeField()
        {
            //找到你的图层名
            IFeatureClass featureCls = GetFeatureClass("平衡单元");

            //得到该图层下有多少数据
            int featureCount = featureCls.FeatureCount(null);
 
            //查询指定列名在表中的索引
            int fieldIndex = featureCls.FindField("MAPDOCID");
 
            IDataset ds = featureCls as IDataset;

            IWorkspace workspace = ds.Workspace;

            IWorkspaceEdit edit = workspace as IWorkspaceEdit; 
            edit.StartEditing(false);
            edit.DisableUndoRedo();

            IFeatureCursor updateCursor = featureCls.Update(null, false);

            edit.StartEditOperation();

            IFeature feature = updateCursor.NextFeature(); 
            while (feature != null)
            { 
                feature.set_Value(fieldIndex, Guid.NewGuid().ToString("B")); 

                updateCursor.UpdateFeature(feature);
                feature = updateCursor.NextFeature();
            }

            edit.StopEditOperation();
            edit.StopEditing(true);
        }

        public IFeatureClass GetFeatureClass(string layerName)
        {
            try
            {
                IFeatureWorkspace pFeatureWorkspace =
                    DCIEngine.FrameWork.Global.m_pSDEWorkspace as IFeatureWorkspace;

                IFeatureClass pFeatureClass =
                    pFeatureWorkspace.OpenFeatureClass(layerName);

                return pFeatureClass;
            }
            catch (Exception)
            {
                return null;
            }
        }

要注意一点的就是arcgis的guid为{00000000-0000-0000-0000-000000000000} 形式,所以.net的guid 需要         ToString(“B”)转换为 他的格式。

posted @ 2011-12-08 16:56  吉桂昕  阅读(1346)  评论(2编辑  收藏  举报