SDE数据库中的要素类导出到本地文件夹shp文件

来源:互联网 发布:key-value数据库原理 编辑:程序博客网 时间:2024/06/05 19:00
        /// <summary>        /// SDE数据库中的要素类导出到本地文件夹          /// </summary>        /// <param name="pFeatureClass">sde数据库中的要素类</param>        /// <param name="queryFilter">过滤条件</param>        /// <param name="filePath">本地文件夹路径</param>        /// <param name="fileName">导出保存的文件名</param>        /// <returns></returns>        public static bool ExportShpFromSde(IFeatureClass pFeatureClass,IQueryFilter queryFilter, string filePath, string fileName)        {            try            {                //设置输出位置属性                IPropertySet pPropertySet = new PropertySetClass();                pPropertySet.SetProperty("DATABASE", filePath);                //设置输出工作空间                IWorkspaceName pWorkspaceName = new WorkspaceNameClass();                pWorkspaceName.ConnectionProperties = pPropertySet;                pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.shapefileWorkspaceFactory.1";                //初始化输出要素类                IFeatureClassName pFeatureClassName = new FeatureClassNameClass();                IDatasetName pDatasetName = pFeatureClassName as IDatasetName;                pDatasetName.Name = fileName;                pDatasetName.WorkspaceName = pWorkspaceName;                //设置输入工作空间                IDataset dataset = pFeatureClass as IDataset;                IWorkspaceName sWorkspaceName = new WorkspaceNameClass();                sWorkspaceName.ConnectionProperties = dataset.Workspace.ConnectionProperties;                IWorkspaceFactory pFWorkFactory = dataset.Workspace.WorkspaceFactory;                if (pFWorkFactory.GetType().Name.ToUpper().IndexOf("ACCESS") > -1)                {                    sWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory.1";                }                else if (pFWorkFactory.GetType().Name.ToUpper().IndexOf("FILEGDB") > -1)                {                    sWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory.1";                }                else if (pFWorkFactory.GetType().Name.ToUpper().IndexOf("SDE") > -1)                {                    sWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory.1";                }                //初始化输入要素类                IFeatureClassName sFeatureClassName = new FeatureClassNameClass();                IDatasetName sDatasetName = sFeatureClassName as IDatasetName;                sDatasetName.Name = dataset.Name;                sDatasetName.WorkspaceName = sWorkspaceName;                new FeatureDataConverterClass().ConvertFeatureClass(sFeatureClassName, queryFilter, null, pFeatureClassName, null, null, "", 0x3e8, 0);                return true;            }            catch            {                return false;            }        }