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

代码:

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

时间: 2024-11-08 21:27:17

ArcGIS Engine代码共享-工作空间(workspace)对象操作的相关文章

ArcGIS Engine开发之旅09--几何对象和空间参考

1.Geometry  Geometry 是 GIS 中使用最为广泛的对象集之一,用户在创建.删除.编辑和进行地理分析的时候,就是处理一个包含几何形体的矢量对象:除了显示要素意外,控件对象选择,要素符号化,标注要素,编辑要素都需要 Geometry 参与.在 ArcGIS Engine 中,几个对象都有严格的定义,比如我们所说的直线,多断线等,于此同时 ArcGIS Engine 提供了而一个几何对象的模型图,如下: 2.Geometry 集合接口 通过前边对于具体的 Geometry 对象的介

ArcGIS Engine开发之旅08--和查询相关的对象和接口

查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询的时候,让我们先了解下面的对象. 1.Table 对象 Table 是不含有空间信息的一张二维表,它主要实现了 ITable 接口.在这张二维表中,每一行称之为 Row(IRow),ITable 接口 定义了对这张二维表行的插入,更新,查询,以及删除等操作. 独立表(standalone table):就是一个单独的不含空间信息的表也就是只能在 ArcMap 中 Tab

ArcGIS Engine开发模板及代码

以下为AE开发软件自带的模板及代码,开发工具为VS 2012+ArcGIS Engine 10.2. using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; using System.Runtime.InteropServices; using

J2EE(java)后台调用ArcGIS Engine(AE)的部署和代码

arcgis的BS开发解决方案一直是个坑,主推的地图服务查询速度慢,需要异步,功能少.相对来说主要用于CS的AE功能更强大全面,只是部署有点复杂 本文软件环境: win7 sp1 64位 MyEclipse 10,jdk 1.6.45 32位,tomcat 6.0.41 32位,ArcGIS Desktop 10.0(或ArcGIS Engine) 1.1.1.   安装软件 ArcGIS Desktop或ArcGIS Engine Runtime 建议装desktop,因为AE Runtime

PHP原生DOM对象操作XML&#39;代码&#39;

对于操作XML类型文件,PHP内置有一套DOM对象可以进行处理.对XML的操作,从创建.添加到修改.删除都可以使用DOM对象中的函数来进行. 创建 创建一个新的XML文件,并且写入一些数据到这个XML文件中. /* * 创建xml文件 */ $info = array( array('obj' => 'power','info' => 'power is shutdown'), array('obj' => 'memcache','info' => 'memcache used t

[转载]ArcGIS Engine 中的多线程使用

ArcGIS Engine 中的多线程使用 原文链接 http://anshien.blog.163.com/blog/static/169966308201082441114173/   一直都想写写AE中多线程的使用,但一直苦于没有时间,终于在中秋假期闲了下来.呵呵,闲话不说了,进入正题! 大家都了解到ArcGIS中处理大数据量时速度是相当的慢,这时如果你的程序是单线程的,那可就让人着急坏了,不知道处理到什么地步,不能操作其他的功能,无奈~~如果在这时你能够想到用多线程技术,那就来试试该如何

ArcGIS Engine开发之旅04---ARCGIS接口详细说明

原文 ArcGIS Engine开发之旅04---ARCGIS接口详细说明 ArcGIS接口详细说明... 1 1.IField接口(esriGeoDatabase)... 2 2.IFieldEdit接口(esriGeoDatabase)... 2 3.IFields接口(esriGeoDatabase)... 2 4. IRow接口(esriGeoDatabase)... 3 5. ITable接口(esriGeoDatabase)... 3 6. IArea接口(esriGeometry)

利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用

原文:利用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <安装目录>\DeveloperKit\Samples\Developer_Guide_Scenarios\ ArcGIS_Engine\Building_an_ArcGIS_Control_Application\Map_Viewer 注:ArcGIS样

ArcGIS Engine中的8种数据访问 (转)

数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文主要介绍一下以下八种数据格式在ArcGIS Engine中如何访问.对ArcGIS桌面应用有一定了解的读者更适合阅读本文.本文的示例代码是用C#编写. 1.Shapefile 2.Coverage 3.Personal Geodatabase 4.Enterprise Geodatabase 5.Tin 6.Raster 7.CAD 8.