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

来源:互联网 发布:电商大数据应用案例 编辑:程序博客网 时间:2024/04/27 05:52
  1. 转载于:http://blog.csdn.net/linghe301/article/details/7204985

  2. public class WorkspaceHelper  
  3.     {  
  4.         public static string GISConnectionString;  
  5.         public static IWorkspace GetAccessWorkspace(string sFilePath)  
  6.         {  
  7.             if (!File.Exists(sFilePath))  
  8.             {  
  9.                 return null;  
  10.             }  
  11.             try  
  12.             {  
  13.                 IWorkspaceFactory factory = new AccessWorkspaceFactoryClass();  
  14.                 return factory.OpenFromFile(sFilePath, 0);  
  15.             }  
  16.             catch  
  17.             {  
  18.                 return null;  
  19.             }  
  20.         }  
  21.         public static IWorkspace GetSDEWorkspace(string sServerName, string sInstancePort, string sUserName, string sPassword, string sVersionName)  
  22.         {  
  23.             IPropertySet set = new PropertySetClass();  
  24.             set.SetProperty("Server", sServerName);  
  25.             set.SetProperty("Instance", sInstancePort);  
  26.             set.SetProperty("User", sUserName);  
  27.             set.SetProperty("password", sPassword);  
  28.             set.SetProperty("version", sVersionName);  
  29.             SdeWorkspaceFactoryClass class2 = new SdeWorkspaceFactoryClass();  
  30.             try  
  31.             {  
  32.                 return class2.Open(set, 0);  
  33.             }  
  34.             catch (Exception ex)  
  35.             {  
  36.                 return null;  
  37.             }  
  38.         }  
  39.         public static IWorkspace GetFGDBWorkspace(string sFilePath)  
  40.         {  
  41.             if (!System.IO.Directory.Exists(sFilePath))  
  42.             {  
  43.                 return null;  
  44.             }  
  45.             try  
  46.             {  
  47.                 IWorkspaceFactory factory = new FileGDBWorkspaceFactoryClass();  
  48.                 return factory.OpenFromFile(sFilePath,0);  
  49.             }  
  50.             catch  
  51.             {  
  52.                 return null;  
  53.             }  
  54.         }  
  55.         public static IWorkspace GetShapefileWorkspace(string sFilePath)  
  56.         {  
  57.             if (!File.Exists(sFilePath))  
  58.             {  
  59.                 return null;  
  60.             }  
  61.             try  
  62.             {  
  63.                 IWorkspaceFactory factory = new ShapefileWorkspaceFactoryClass();  
  64.                 sFilePath = System.IO.Path.GetDirectoryName(sFilePath);  
  65.                 return factory.OpenFromFile(sFilePath, 0);  
  66.             }  
  67.             catch  
  68.             {  
  69.                 return null;  
  70.             }  
  71.         }  
  72.         public static string PGDBDataConnectionString(string sPath)  
  73.         {  
  74.             return ("Provider=ESRI.GeoDB.OLEDB.1;Data Source=" + sPath + ";Extended Properties=workspacetype=esriDataSourcesGDB.AccessWorkspaceFactory.1;Geometry=WKB");  
  75.         }  
  76.         public static string SDEDataConnectionString(string sServerName, string sDataSource, string sUserName, string sPW)  
  77.         {  
  78.             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");  
  79.         }  
  80.         public static string ShapefileDataConnectionString(string sPath)  
  81.         {  
  82.             sPath = System.IO.Path.GetDirectoryName(sPath);  
  83.             return ("Provider=ESRI.GeoDB.OLEDB.1;Data Source=" + sPath + ";Extended Properties=WorkspaceType=esriDataSourcesFile.ShapefileWorkspaceFactory.1;Geometry=WKB|OBJECT");  
  84.         }  
  85.         public static bool HighPrecision(IWorkspace pWorkspace)  
  86.         {  
  87.             IGeodatabaseRelease geoVersion = pWorkspace as IGeodatabaseRelease;  
  88.             if (geoVersion == null) return false;  
  89.             if (geoVersion.MajorVersion == 2  
  90.                 && geoVersion.MinorVersion == 2)  
  91.             {  
  92.                 return true;  
  93.             }  
  94.             return false;  
  95.         }  
  96.         public static List<String> QueryFeatureClassName(IWorkspace pWorkspace)  
  97.         {  
  98.             return QueryFeatureClassName(pWorkspace, false, false);  
  99.         }  
  100.         public static List<String> QueryFeatureClassName(IWorkspace pWorkspace, bool pUpperCase)  
  101.         {  
  102.             return QueryFeatureClassName(pWorkspace, pUpperCase, false);  
  103.         }  
  104.         public static List<String> QueryFeatureClassName(IWorkspace pWorkspace, bool pUpperCase, bool pEscapeMetaTable)  
  105.         {  
  106.             try  
  107.             {  
  108.                 String ownerName = "";  
  109.                 if (pWorkspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)  
  110.                 {  
  111.                     ownerName = pWorkspace.ConnectionProperties.GetProperty("user").ToString();  
  112.                     ownerName = ownerName.ToUpper();  
  113.                 }  
  114.                 List<String> sc = new List<String>();  
  115.                 IEnumDatasetName edn = pWorkspace.get_DatasetNames(esriDatasetType.esriDTFeatureDataset);  
  116.                 IDatasetName dn = edn.Next();  
  117.                 while (dn != null)  
  118.                 {  
  119.                     string dsName = dn.Name.ToUpper();  
  120.                     if (ownerName.Equals(LayerHelper.GetClassOwnerName(dsName)))  
  121.                     {  
  122.                         #region 添加数据集下面的FeatureClass  
  123.                         IEnumDatasetName fdn = dn.SubsetNames;  
  124.   
  125.                         dn = fdn.Next();  
  126.                         while (dn != null)  
  127.                         {  
  128.                             dsName = dn.Name.ToUpper();  
  129.                             bool isTopology = dn is ITopologyName;  
  130.                             if (!isTopology)  
  131.                             {  
  132.                                 string shortName = LayerHelper.GetClassShortName(dsName);  
  133.                                 if (pUpperCase)  
  134.                                 {  
  135.                                     shortName = shortName.ToUpper();  
  136.                                 }  
  137.                                 if (pEscapeMetaTable)  
  138.                                 {  
  139.                                      
  140.                                 }  
  141.                                 else  
  142.                                 {  
  143.                                     sc.Add(shortName);  
  144.                                 }  
  145.                             }  
  146.                             dn = fdn.Next();  
  147.                         }  
  148.                         #endregion  
  149.                     }  
  150.                     dn = edn.Next();  
  151.                 }  
  152.                 #region 获取直接的FeatureClass  
  153.                 edn = pWorkspace.get_DatasetNames(esriDatasetType.esriDTFeatureClass);  
  154.                 dn = edn.Next();  
  155.                 while (dn != null)  
  156.                 {  
  157.                     string dsName = dn.Name.ToUpper();  
  158.                     if (ownerName.Equals(LayerHelper.GetClassOwnerName(dsName)))  
  159.                     {  
  160.                         string shortName = LayerHelper.GetClassShortName(dsName);  
  161.                         if (pUpperCase)  
  162.                         {  
  163.                             shortName = shortName.ToUpper();  
  164.                         }  
  165.                         if (pEscapeMetaTable)  
  166.                         {  
  167.                             
  168.                         }  
  169.                         else  
  170.                         {  
  171.                             sc.Add(shortName);  
  172.                         }  
  173.                     }  
  174.                     dn = edn.Next();  
  175.                 }  
  176.                 #endregion  
  177.                 return sc;  
  178.             }  
  179.             catch (Exception ex) { return null; }  
  180.         }  
  181.         public static List<IConfigurationKeyword> GetConfigurationKeywordList(IWorkspace pWS)  
  182.         {  
  183.             List<IConfigurationKeyword> pList = new List<IConfigurationKeyword>();  
  184.             IWorkspaceConfiguration pWConfig = pWS as IWorkspaceConfiguration;  
  185.             IEnumConfigurationKeyword pEnumConfig = pWConfig.ConfigurationKeywords;  
  186.             IConfigurationKeyword pConfig = pEnumConfig.Next();  
  187.             while (pConfig != null)  
  188.             {  
  189.                 pList.Add(pConfig);  
  190.                 pConfig = pEnumConfig.Next();  
  191.             }  
  192.            return  pList;  
  193.         }  
  194.         public static List<IConfigurationParameter> GetConfigurationParameterList(IConfigurationKeyword pConfig)  
  195.         {  
  196.             List<IConfigurationParameter> pList = new List<IConfigurationParameter>();  
  197.             IEnumConfigurationParameter pEnumCP = pConfig.ConfigurationParameters;  
  198.             IConfigurationParameter pCP = pEnumCP.Next();  
  199.             while (pCP != null)  
  200.             {  
  201.                 pList.Add(pCP);  
  202.                 pCP = pEnumCP.Next();  
  203.             }  
  204.             return pList;  
  205.         }  
  206.     }  
0 0
原创粉丝点击