Example #1
0
 /// <summary>
 /// 删除图层
 /// </summary>
 /// <param name="name"></param>
 /// <returns></returns>
 public static bool DeleteFeatureClass(this IWorkspace workspace, string name)
 {
     try
     {
         IEnumDatasetName pEnumDsName = workspace.get_DatasetNames(esriDatasetType.esriDTFeatureClass);
         IDatasetName     datasetName = pEnumDsName.Next();
         while (datasetName != null)
         {
             string[] name_arr = datasetName.Name.Split(new char[] { '.', '/', '\\' });
             if (name_arr[name_arr.Length - 1].ToUpper() == (name.ToUpper()))
             {
                 IFeatureWorkspaceManage pFWSM = workspace as IFeatureWorkspaceManage;
                 if (pFWSM.CanDelete((IName)datasetName))
                 {
                     pFWSM.DeleteByName(datasetName);
                     break;
                 }
             }
             datasetName = pEnumDsName.Next();
         }
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Example #2
0
        /// <summary>
        /// 删除特定数据集下的表
        /// </summary>
        /// <param name="gdbPath">workspace</param>
        /// <param name="tableName">表名称</param>
        public static void DeleteTable(IWorkspace workspace, string tableName)
        {
            IFeatureWorkspace       featureWorkspace      = workspace as IFeatureWorkspace;
            IFeatureWorkspaceManage featureWorkspaceMange = (IFeatureWorkspaceManage)featureWorkspace;
            //得到的数据集是FeatureClass
            //IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTFeatureClass);
            IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTTable);
            IDatasetName     datasetName     = null;

            while ((datasetName = enumDatasetName.Next()) != null)
            {
                if (datasetName.Name.Equals(tableName))
                {
                    //删除指定要素类(表)
                    featureWorkspaceMange.DeleteByName(datasetName);
                    break;
                }
            }
        }
Example #3
0
        /// <summary>
        /// 删除名称包含指定关键字的要素类
        /// </summary>
        /// <param name="workspace">工作空间</param>
        /// <param name="keyWord">关键字,不区分大小写</param>
        public static void DeleteFeatureClassesByKeyWord(this IWorkspace workspace, string keyWord)
        {
            if (!(workspace is IFeatureWorkspace featureWorkspace))
            {
                throw new Exception("工作空间不是要素类工作空间!");
            }

            keyWord = keyWord.ToLower();
            IFeatureWorkspaceManage featureWorkspaceMange = (IFeatureWorkspaceManage)featureWorkspace;
            IEnumDatasetName        enumDatasetName       = workspace.DatasetNames[esriDatasetType.esriDTFeatureClass];
            IDatasetName            datasetName;

            while ((datasetName = enumDatasetName.Next()) != null)
            {
                if (datasetName.Name.ToLower().Contains(keyWord))
                {
                    featureWorkspaceMange.DeleteByName(datasetName);//删除指定要素类
                }
            }
        }
Example #4
0
        /// <summary>
        /// 删除一个或多个要素类
        /// </summary>
        /// <param name="workspace">工作空间</param>
        /// <param name="featueClassNames">要删除的要素类的名称,名称不区分大小写</param>
        public static void DeleteFeatureClasses(this IWorkspace workspace, params string[] featueClassNames)
        {
            if (!(workspace is IFeatureWorkspace featureWorkspace))
            {
                throw new Exception("工作空间不是要素类工作空间!");
            }

            featueClassNames = featueClassNames.Select(v => v.ToLower()).ToArray();
            IFeatureWorkspaceManage featureWorkspaceMange = (IFeatureWorkspaceManage)featureWorkspace;
            IEnumDatasetName        enumDatasetName       = workspace.DatasetNames[esriDatasetType.esriDTFeatureClass];
            IDatasetName            datasetName;

            while ((datasetName = enumDatasetName.Next()) != null)
            {
                if (featueClassNames.Contains(datasetName.Name.ToLower()))
                {
                    featureWorkspaceMange.DeleteByName(datasetName);//删除指定要素类
                }
            }
        }
Example #5
0
        /// <summary>
        /// 删除特定数据集下的表
        /// </summary>
        /// <param name="gdbPath">gdb路径</param>
        /// <param name="tableName">表名称</param>
        public static void DeleteFeatureClass(string gdbPath, string tableName)
        {
            IWorkspaceFactory       worFact               = new FileGDBWorkspaceFactory();
            IWorkspace              workspace             = worFact.OpenFromFile(gdbPath, 0);
            IFeatureWorkspace       featureWorkspace      = workspace as IFeatureWorkspace;
            IFeatureWorkspaceManage featureWorkspaceMange = (IFeatureWorkspaceManage)featureWorkspace;
            //得到的数据集是FeatureClass
            //IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTFeatureClass);
            IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTTable);
            IDatasetName     datasetName     = null;

            while ((datasetName = enumDatasetName.Next()) != null)
            {
                if (datasetName.Name.Equals(tableName))
                {
                    //删除指定要素类(表)
                    featureWorkspaceMange.DeleteByName(datasetName);
                    break;
                }
            }
        }
Example #6
0
        //删除名称对象
        public static void DeleteByName(IFeatureWorkspace pFeaWorkspace, IDatasetName pDatasetName)
        {
            IFeatureWorkspaceManage pWorkspaceManager = pFeaWorkspace as IFeatureWorkspaceManage;

            pWorkspaceManager?.DeleteByName(pDatasetName);
        }
Example #7
0
        /// <summary>
        /// 移除拓扑
        /// </summary>
        /// <param name="pFeaDataet">数据集</param>
        /// <param name="pTopoName">拓扑名</param>
        /// <param name="outError">异常</param>
        public void RemoveTopo(IFeatureDataset pFeaDataet, string topoName, out Exception outError)
        {
            outError = null;
            //topoName = topoName + "_Topology";
            IWorkspace              pWorkspace              = pFeaDataet.Workspace;
            IFeatureWorkspace       pFeatureWorkspace       = pWorkspace as IFeatureWorkspace;
            IFeatureWorkspaceManage pFeatureWorkspaceManage = pFeatureWorkspace as IFeatureWorkspaceManage;

            //if (!((IWorkspaceEdit)pWorkspace).IsBeingEdited())
            //{
            //    //((IWorkspaceEdit)pWorkspace).StartEditing(true);
            //    //((IWorkspaceEdit)pWorkspace).StartEditOperation();
            //}
            //    int iCount = 0;
            //    try
            //    {
            try
            {
                ITopologyContainer pTopoCon = pFeaDataet as ITopologyContainer;
                ITopology          pTopo    = pTopoCon.get_TopologyByName(topoName);

                //ISchemaLock pLock = pTopo as ISchemaLock;
                //pLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);

                ////删除该拓扑下所有的拓扑规则
                //RemoveTopoRule(pTopo, out outError);
                //if (outError != null) return;

                ////删除该拓扑下左右的拓扑图层
                //RemoveTopoClass(pTopo, out outError);
                //if (outError != null) return;

                //删除拓扑
                IDataset     pTopoDt          = pTopo as IDataset;
                IName        pName            = pTopoDt.FullName;
                IDatasetName ptopodatasetname = pName as IDatasetName;
                pFeatureWorkspaceManage.DeleteByName(ptopodatasetname);

                //(pTopo as IDataset).Delete();
                //pTopo.FeatureDataset.Delete();

                //Marshal.ReleaseComObject(pTopo);
                pTopo = null;
                //++iCount;

                //pLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
            }
            catch (Exception ex)
            {
                ////*********************************************
                ////guozheng 2010-12-24 平安夜  added 系统异常日志
                //if (ModData.SysLog == null) ModData.SysLog = new clsWriteSystemFunctionLog();
                //ModData.SysLog.Write(ex);
                ////**********************************************
                outError = ex;
            }
            //}
            //finally
            //{
            //    if (((IWorkspaceEdit)pWorkspace).IsBeingEdited())
            //    {
            //        if (iCount > 0)
            //        {
            //            ((IWorkspaceEdit)pWorkspace).StopEditOperation();
            //            ((IWorkspaceEdit)pWorkspace).StopEditing(true);
            //        }
            //        {
            //            ((IWorkspaceEdit)pWorkspace).AbortEditOperation();
            //            ((IWorkspaceEdit)pWorkspace).StopEditing(true);
            //        }
            //    }
            //}
        }