代码:

 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, );
}
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, );
}
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,);
}
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, );
}
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 ==
&& geoVersion.MinorVersion == )
{
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;
}
}

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

  1. vs.net调试ArcGIS Engine代码查看变量时,提示“要检查本机对象,请启用本机代码调试。” 的解决方法

    用vs2017 调试 查看ArcGIS Engine 的变量时 会提示如下图所示的错误: 解决方法: 工具->选项->调试->常规->使用托管的兼容模式 如下图所示: 2.设置 ...

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

    原文:ArcGIS Engine开发之旅09--几何对象和空间参考 1.Geometry  Geometry 是 GIS 中使用最为广泛的对象集之一,用户在创建.删除.编辑和进行地理分析的时候,就是处 ...

  3. Arcgis engine 指定图层对要素进行创建、删除等操作

    Arcgis engine 指定图层创建点要素 在指定的图层上创建一个点要素,点要素的位置是通过X,Y坐标指定的,下面是具体的注释 .其中 和IFeatureClassWrite接口有关的代码不要好像 ...

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

    原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询 ...

  5. ArcGIS Engine Style文件操作

    对于一个GISer来说,地图,符号这些都应该有着比别人更深刻的理解和认识,作为平台软件都会提供一套自己的符号库,符号库里面根据类别和种类进行区分,因为点,线,面的自然存在和固有属性是不肯能让你用面状符 ...

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

    arcgis的BS开发解决方案一直是个坑,主推的地图服务查询速度慢,需要异步,功能少.相对来说主要用于CS的AE功能更强大全面,只是部署有点复杂 本文软件环境: win7 sp1 64位 MyEcli ...

  7. 危险代码:如何使用Unsafe操作内存中的Java类和对象

    危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...

  8. ArcGIS Engine开发之地图基本操作(4)

    ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...

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

    原文:ArcGIS Engine开发之旅04---ARCGIS接口详细说明 ArcGIS接口详细说明... 1 1.      IField接口(esriGeoDatabase)... 2 2.    ...

随机推荐

  1. SQLServer 常用日期处理

    select GETDATE() as '当前日期',DateName(year,GetDate()) as '年',DateName(month,GetDate()) as '月',DateName ...

  2. C# 读取Excel内容

    一.方法 1.OleD方法实现该功能. 2.本次随笔内容只包含读取Excel内容,并另存为. 二.代码 (1)找到文档代码 OpenFileDialog openFile = new OpenFile ...

  3. IBindCtx接口定义

    IBindCtx接口定义

  4. 8.4 H5知识点总结

    HTML简介 HyperText Markup Language 简称为HTML HyperText: 超文本 (文本 + 图片 + 视频 + 音频 + 链接) Markup Language: 标记 ...

  5. C# 中的IOCP线程池

    原文地址:http://www.theukwebdesigncompany.com/articles/iocp-thread-pooling.php PartOne : Introduction 当使 ...

  6. VC++ 结束线程 AfxBeginThread AfxEndThread

    如果你的线程是从CWinThread继承出来的,结束自己就用AfxEndThread, 如果是外部调用的话,可以用PostThreadMessage(m_nThreadID, WM_QUIT,0,0) ...

  7. hibernate学习(设计多对多 关系 映射)

    // package org.crazy.app.domain; import java.util.HashSet; import java.util.Set; import javax.persis ...

  8. Linux网络编程-SIGPIPE信号导致的程序退出问题

    当客户端close关闭连接时,若server端接着发送数据,根据TCP协议的规定,server端会收到RST响应,当server端再次往客户端发送数据时,系统会发出一个SIGPIPE信号给server ...

  9. Java 基础知识总结 (三、运算符)

    三.Operators 运算符 Assignment Operators(赋值运算符) =   +=   -=   %=   *=   /=    <<=     >>=    ...

  10. Scrum会议10.20

    Scrum会议   组名称:好好学习 项目名称:记账本 参会成员:林莉(Master)胡丽娜 汪东涵 宫丽君 时间:2016.10.20 已完成内容: 1.理解项目和代码. 2.讨论新功能. 计划完成 ...