Arcgis Engine(ae)接口详解(6):workspace操作
//此处用的workspace来源与用户选择
IWorkspace workspace = null; //workspace一般等同于数据库 //工作空间类型,也可理解为数据库类型
//esriFileSystemWorkspace:可能为shp
//esriLocalDatabaseWorkspace:可能为file gdb,mdb
//esriRemoteDatabaseWorkspace:可能为sde
esriWorkspaceType workspaceType = workspace.Type; //路径,对于本地文件类型的(例如shp,file gdb,mdb)有意义,就是他们的文件路径
string path = workspace.PathName; //数据库连接配置,通常对于sde有效
IPropertySet propertySet = workspace.ConnectionProperties;
//以下是遍历他的值的代码
object objNames = null;
object objValue = null;
//获取所有值,结构是类似字段的key/value格式,参数1是name的数组,参数2是value的数组
//参数类型是object,但实际分别是string数组和object数组
propertySet.GetAllProperties(out objNames, out objValue);
string[] names = (string[])objNames;
object[] values = (object[])objValue;
//遍历获取各个值
for (int i = ; i < names.Length; i++)
{
//参数名
string name = names[i];
//参数值
string value = values[i].ToString();
} //以下代码由于不具备测试数据,只看代码不运行
if ( == )
{
//执行原生sql
//如果Workspace数据类型是数据库如sde,可以通过此方法执行原生sql
//这里只能执行不返回结果的sql,例如insert,update等,而不能select
workspace.ExecuteSQL("update xxx set eee=111");
} //PS:以上代码可以获取sde数据库的配置,但密码获取到的是乱码,因为想在ae获取sde完整的连接参数(通常用于再次新建对sde的连接)是不可能的 //遍历workspace下所有的数据集
//get_Datasets方法用于获取workspace下的成员,参数1是获取的数据类型
//IEnum开头的接口类似于游标,用于遍历一些查询结果
IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);
enumDataset.Reset();
//因为下面还要遍历数据集下的featureClass,因此用了IFeatureDataset,其实也可以as到IDataset
IFeatureDataset featureDataset = null;
while ((featureDataset = enumDataset.Next() as IFeatureDataset) != null)
{
//数据集的基础属性 IDataset dataset = featureDataset as IDataset;
//数据集名称
string datasetName = dataset.Name;
//数据集类型
esriDatasetType datasetType = dataset.Type; //IGeoDataset是几何相关的接口
IGeoDataset geoDataset = featureDataset as IGeoDataset;
//空间参考
ISpatialReference spatialReference2 = geoDataset.SpatialReference; //获取数据集下所有的featureClass IFeatureClassContainer featureClassContainer = featureDataset as IFeatureClassContainer;
IEnumFeatureClass enumFeatureClass = featureClassContainer.Classes;
enumFeatureClass.Reset();
IFeatureClass featureClass = null;
//遍历数据集里的要素类
while ((featureClass = enumFeatureClass.Next()) != null)
{ }
//IEnum开头的接口用完都要手动释放(与游标一样)
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(enumFeatureClass);
}
//IEnum开头的接口用完都要手动释放(与游标一样)
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(enumDataset); //遍历workspace下的featureClass
//PS:结合上面的代码可以注意到,获取数据集下的featureClass和获取workspace下的featureClass的代码是分开的 enumDataset = workspace.get_Datasets(esriDatasetType.esriDTFeatureClass);
enumDataset.Reset();
IFeatureClass featureClass2 = enumDataset.Next() as IFeatureClass;
while ((featureClass2 = enumDataset.Next() as IFeatureClass) != null)
{ }
//IEnum开头的接口用完都要手动释放(与游标一样)
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(enumDataset); //获取Workspace的所有FeatureClass(包括Dataset里面的)
List<IFeatureClass> lstFeatureClass = WorkspaceEdmHelper.GetAllFeatureClassInWorkspace(workspace as IFeatureWorkspace); //Workspace关于featureClass操作的接口
IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
//以下代码由于不具备测试数据,只看代码不运行
if ( == )
{
//通过名称获取featureClass
//PS:即使featureClass在数据集下也可以这样获取,这点跟遍历不同
featureClass2 = featureWorkspace.OpenFeatureClass("www"); //通过名称获取数据集
featureDataset = featureWorkspace.OpenFeatureDataset("rrr"); //通过文件路径或数据库连接参数,新建数据库或打开数据库 //创建File Gdb,参数1是文件所在文件夹,参数2是数据库名称
//由于一个file gdb数据库等同于一个workspace,因此创建file gdb等同于创建workspace
featureWorkspace = WorkspaceEdmHelper.CreateFileGdb("C:\\aaa", "test.gdb"); //创建personal gdb(mdb),参数1是文件所在文件夹,参数2是数据库名称
featureWorkspace = WorkspaceEdmHelper.CreatePersonalGdb("C:\\aaa", "test.mdb");
}
Arcgis Engine(ae)接口详解(6):workspace操作的更多相关文章
- JDBC常用接口详解
JDBC中常用接口详解 ***DriverManager 第一.注册驱动 第一种方式:DriverManager.registerDriver(new com.mysql.jdbc.Driver()) ...
- Java6.0中Comparable接口与Comparator接口详解
Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...
- socket接口详解
1. socket概述 socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在Unix一切 ...
- “全栈2019”Java第八十四章:接口中嵌套接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第八十三章:内部类与接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java接口 详解(二)
上一篇Java接口 详解(一)讲到了接口的基本概念.接口的使用和接口的实际应用(标准定义).我们接着来讲. 一.接口的应用—工厂设计模式(Factory) 我们先看一个范例: package com. ...
- [转载]MII/MDIO接口详解
原文地址:MII/MDIO接口详解作者:心田麦浪 本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在 ...
- map接口详解
1.Map接口详解(1)映射(map)是一个存储键.键值对的对象,给定一个键,可以查询得到它的值,键和值都可以是对象(2)键必须是唯一的,值可以重复(Map接口映射唯一的键到值)(3)有些映射可以接收 ...
- ReadWriteLock 接口详解
ReadWriteLock 接口详解 这是本人阅读ReadWriteLock接口源码的注释后,写出的一篇知识分享博客 读写锁的成分是什么? 读锁 Lock readLock(); 只要没有写锁,读锁可 ...
- ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开
ASP.NET MVC Filters 4种默认过滤器的使用[附示例] 过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...
随机推荐
- Working out (DP)
Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the ...
- [Istio]Web应用出现upstream connect error or disconnect/reset before headers
在部署web应用之后,使用ingressway为入口,不能正常访问.服务返回 upstream connect error or disconnect/reset before headers 这种情 ...
- 九度oj 1547
题目描述: 给定一个初始为空的栈,和n个操作组成的操作序列,每个操作只可能是出栈或者入栈. 要求在操作序列的执行过程中不会出现非法的操作,即不会在空栈时执行出栈操作,同时保证当操作序列完成后,栈恰好为 ...
- hdu4035 Maze (树上dp求期望)
dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 ...
- C 语言中可以调用命令行指令的 system()函数
C语言有一个system函数(在<stdlib.h>头中,C++则为<cstdlib>头),可以用来调用终端命令.原型如下: int system(const char *cm ...
- EC++学习笔记(四) 设计与声明
条款18:让接口容易被正确使用,不易被误用 必须考虑客户可能做出什么样的错误(防御式编程)std:shared_ptr会自动使用它的"每个指针专属的删除器",消除了"cr ...
- Codeforces891C. Envy
$n \leq 5e5$,$m \leq 5e5$的无向边权图,$q \leq 5e5$个询问,每次问一系列边是否能同时存在于某棵最小生成树上. 一条边在最小生成树上,当比他小的边都加入后,加入他会使 ...
- php——数据库操作之规范性
今天在写一个项目,上传到服务器的时候出现500的错误,找了半天最后是因为数据库更新数据的语句写的不规范, 询问同事之后,同事说,数据库的增删改查语句写的不规范的时候有的时候会报错有的时候不会: 所以总 ...
- CentOS 7.3 源码安装 OpenVAS 9
https://my.oschina.net/u/2613235/blog/1583198
- 洛谷 P1503鬼子进村
题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. 题目描述 描述 县城里 ...