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

来源:互联网 发布:js怎么给元素添加属性 编辑:程序博客网 时间:2024/04/20 04:21
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;          }      }  

0 0
原创粉丝点击