ArcGIS Engine代码共享-工作空间(workspace)对象操作

来源:互联网 发布:中控考勤机 php接口 编辑:程序博客网 时间:2024/04/20 00:18
public class WorkspaceHelper    {        public static string GISConnectionString;        public static IWorkspace GetAccessWorkspace(string sFilePath)        {            if (!File.Exists(sFilePath))            {                return null;            }            try            {                IWorkspaceFactory factory = new AccessWorkspaceFactoryClass();                return factory.OpenFromFile(sFilePath, 0);            }            catch            {                return null;            }        }        public static IWorkspace GetSDEWorkspace(string sServerName, string sInstancePort, string sUserName, string sPassword, string sVersionName)        {            IPropertySet set = new PropertySetClass();            set.SetProperty("Server", sServerName);            set.SetProperty("Instance", sInstancePort);            set.SetProperty("User", sUserName);            set.SetProperty("password", sPassword);            set.SetProperty("version", sVersionName);            SdeWorkspaceFactoryClass class2 = new SdeWorkspaceFactoryClass();            try            {                return class2.Open(set, 0);            }            catch (Exception ex)            {                return null;            }        }        public static IWorkspace GetFGDBWorkspace(string sFilePath)        {            if (!System.IO.Directory.Exists(sFilePath))            {                return null;            }            try            {                IWorkspaceFactory factory = new FileGDBWorkspaceFactoryClass();                return factory.OpenFromFile(sFilePath,0);            }            catch            {                return null;            }        }        public static IWorkspace GetShapefileWorkspace(string sFilePath)        {            if (!File.Exists(sFilePath))            {                return null;            }            try            {                IWorkspaceFactory factory = new ShapefileWorkspaceFactoryClass();                sFilePath = System.IO.Path.GetDirectoryName(sFilePath);                return factory.OpenFromFile(sFilePath, 0);            }            catch            {                return null;            }        }        public static string PGDBDataConnectionString(string sPath)        {            return ("Provider=ESRI.GeoDB.OLEDB.1;Data Source=" + sPath + ";Extended Properties=workspacetype=esriDataSourcesGDB.AccessWorkspaceFactory.1;Geometry=WKB");        }        public static string SDEDataConnectionString(string sServerName, string sDataSource, string sUserName, string sPW)        {            return ("Provider=ESRI.GeoDB.OLEDB.1;Location=" + sServerName + ";Data Source=" + sDataSource + "; User Id=" + sUserName + ";Password=" + sPW + "; Extended Properties=WorkspaceType= esriDataSourcesGDB.SDEWorkspaceFactory.1;Geometry=WKB|OBJECT;Instance=5151;Version=SDE.DEFAULT");        }        public static string ShapefileDataConnectionString(string sPath)        {            sPath = System.IO.Path.GetDirectoryName(sPath);            return ("Provider=ESRI.GeoDB.OLEDB.1;Data Source=" + sPath + ";Extended Properties=WorkspaceType=esriDataSourcesFile.ShapefileWorkspaceFactory.1;Geometry=WKB|OBJECT");        }        public static bool HighPrecision(IWorkspace pWorkspace)        {            IGeodatabaseRelease geoVersion = pWorkspace as IGeodatabaseRelease;            if (geoVersion == null) return false;            if (geoVersion.MajorVersion == 2                && geoVersion.MinorVersion == 2)            {                return true;            }            return false;        }        public static List<String> QueryFeatureClassName(IWorkspace pWorkspace)        {            return QueryFeatureClassName(pWorkspace, false, false);        }        public static List<String> QueryFeatureClassName(IWorkspace pWorkspace, bool pUpperCase)        {            return QueryFeatureClassName(pWorkspace, pUpperCase, false);        }        public static List<String> QueryFeatureClassName(IWorkspace pWorkspace, bool pUpperCase, bool pEscapeMetaTable)        {            try            {                String ownerName = "";                if (pWorkspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)                {                    ownerName = pWorkspace.ConnectionProperties.GetProperty("user").ToString();                    ownerName = ownerName.ToUpper();                }                List<String> sc = new List<String>();                IEnumDatasetName edn = pWorkspace.get_DatasetNames(esriDatasetType.esriDTFeatureDataset);                IDatasetName dn = edn.Next();                while (dn != null)                {                    string dsName = dn.Name.ToUpper();                    if (ownerName.Equals(LayerHelper.GetClassOwnerName(dsName)))                    {                        #region 添加数据集下面的FeatureClass                        IEnumDatasetName fdn = dn.SubsetNames;                        dn = fdn.Next();                        while (dn != null)                        {                            dsName = dn.Name.ToUpper();                            bool isTopology = dn is ITopologyName;                            if (!isTopology)                            {                                string shortName = LayerHelper.GetClassShortName(dsName);                                if (pUpperCase)                                {                                    shortName = shortName.ToUpper();                                }                                if (pEscapeMetaTable)                                {                                                                   }                                else                                {                                    sc.Add(shortName);                                }                            }                            dn = fdn.Next();                        }                        #endregion                    }                    dn = edn.Next();                }                #region 获取直接的FeatureClass                edn = pWorkspace.get_DatasetNames(esriDatasetType.esriDTFeatureClass);                dn = edn.Next();                while (dn != null)                {                    string dsName = dn.Name.ToUpper();                    if (ownerName.Equals(LayerHelper.GetClassOwnerName(dsName)))                    {                        string shortName = LayerHelper.GetClassShortName(dsName);                        if (pUpperCase)                        {                            shortName = shortName.ToUpper();                        }                        if (pEscapeMetaTable)                        {                                                  }                        else                        {                            sc.Add(shortName);                        }                    }                    dn = edn.Next();                }                #endregion                return sc;            }            catch (Exception ex) { return null; }        }        public static List<IConfigurationKeyword> GetConfigurationKeywordList(IWorkspace pWS)        {            List<IConfigurationKeyword> pList = new List<IConfigurationKeyword>();            IWorkspaceConfiguration pWConfig = pWS as IWorkspaceConfiguration;            IEnumConfigurationKeyword pEnumConfig = pWConfig.ConfigurationKeywords;            IConfigurationKeyword pConfig = pEnumConfig.Next();            while (pConfig != null)            {                pList.Add(pConfig);                pConfig = pEnumConfig.Next();            }           return  pList;        }        public static List<IConfigurationParameter> GetConfigurationParameterList(IConfigurationKeyword pConfig)        {            List<IConfigurationParameter> pList = new List<IConfigurationParameter>();            IEnumConfigurationParameter pEnumCP = pConfig.ConfigurationParameters;            IConfigurationParameter pCP = pEnumCP.Next();            while (pCP != null)            {                pList.Add(pCP);                pCP = pEnumCP.Next();            }            return pList;        }    }

原创粉丝点击