ArcGIS Engine代码共享-工作空间(workspace)对象操作
代码:
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)对象操作的更多相关文章
- vs.net调试ArcGIS Engine代码查看变量时,提示“要检查本机对象,请启用本机代码调试。” 的解决方法
用vs2017 调试 查看ArcGIS Engine 的变量时 会提示如下图所示的错误: 解决方法: 工具->选项->调试->常规->使用托管的兼容模式 如下图所示: 2.设置 ...
- ArcGIS Engine开发之旅09--几何对象和空间参考
原文:ArcGIS Engine开发之旅09--几何对象和空间参考 1.Geometry Geometry 是 GIS 中使用最为广泛的对象集之一,用户在创建.删除.编辑和进行地理分析的时候,就是处 ...
- Arcgis engine 指定图层对要素进行创建、删除等操作
Arcgis engine 指定图层创建点要素 在指定的图层上创建一个点要素,点要素的位置是通过X,Y坐标指定的,下面是具体的注释 .其中 和IFeatureClassWrite接口有关的代码不要好像 ...
- ArcGIS Engine开发之旅08--和查询相关的对象和接口
原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询 ...
- ArcGIS Engine Style文件操作
对于一个GISer来说,地图,符号这些都应该有着比别人更深刻的理解和认识,作为平台软件都会提供一套自己的符号库,符号库里面根据类别和种类进行区分,因为点,线,面的自然存在和固有属性是不肯能让你用面状符 ...
- J2EE(java)后台调用ArcGIS Engine(AE)的部署和代码
arcgis的BS开发解决方案一直是个坑,主推的地图服务查询速度慢,需要异步,功能少.相对来说主要用于CS的AE功能更强大全面,只是部署有点复杂 本文软件环境: win7 sp1 64位 MyEcli ...
- 危险代码:如何使用Unsafe操作内存中的Java类和对象
危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...
- ArcGIS Engine开发之地图基本操作(4)
ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...
- ArcGIS Engine开发之旅04---ARCGIS接口详细说明
原文:ArcGIS Engine开发之旅04---ARCGIS接口详细说明 ArcGIS接口详细说明... 1 1. IField接口(esriGeoDatabase)... 2 2. ...
随机推荐
- [转]CABasicAnimation用法
CABasicAnimation用法 CABasicAnimation 自己只有三个property fromValue toValue ByValue 当你创建一个 CABasicAni ...
- EntityFramework基础
好久没有学习新东西了,最近研究了下EntityFramework,将基础代码贴出来, Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity ...
- jQuery实现抖动效果
//抖动效果 //intShakes:抖动次数:intDistance:抖动左右距离:intDuration:持续时间 jQuery.fn.shake = function (intShakes, i ...
- 二维数组去除重复值和array_unique函数
今天遇到了一个问题,就是从数据库中去除的数组为一个二维数组,现在就是想将二位数组进行去重,但是在php中,对于一个一维数组,我们可以直接使用php的系统函数array_unique,但是这个函数不能对 ...
- centos安装zendopcache
由于linux用的还不熟,导致很简单的一次安装过程遇到一堆问题,还好最后安装成功了,备忘就写在这里了. zendopcache的的主要原理: PHP执行后的数据缓冲到内存中避免重复的编译,能够直接使用 ...
- VC++ CTreeCtrl 使用NM_CLICK和TVN_SELCHANGED
//这是当CTREECTRL控件点击时NM_CLICK的处理函数 void CDriverSelCtrl::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult) { C ...
- 继续努力刷题--BE STRONGER AND STRONGER
Come on,baby~ (1)Contains Duplicate 有自己的思路:两个for双重循环直接一个个比较,但肯定不是最优解.所以,使用Set中的HashSet(一种没有重复元素的无序集合 ...
- bind的用处
刚做的项目,遇到过这样的问题,就是在动态追加标签时,给追加的标签添加事件时,在标签内追加不了,后来使用了delegate代理,能响应了,但也是不能给动态追加的代理 $("body" ...
- js基本常识了解
http://www.cnblogs.com/Yue0327/p/5441773.html
- 反向代理及如何获得原始IP
在现代网站架构中,scalability 已经不再是可有可无的质量属性,而是决定着网站的生死攸关,所以稍微上规模的站点都不会只有一个web server,让internet clients 直接与其交 ...