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,不是每个请求都会响 ...
随机推荐
- HDU 5441 Travel
Travel Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Descrip ...
- PTA 07-图6 旅游规划 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/717 5-9 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路 ...
- 多重部分和 poj1742
Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar. ...
- 【bzoj2229】[Zjoi2011]最小割 分治+网络流最小割
题目描述 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中,则称这个划分 ...
- 算法复习——trie树(poj2001)
题目: 题目描述 给出 n 个单词(1<=n<=1000),求出每个单词的非公共前缀,如果没有,则输出自己. 输入格式 输入 N 个单词,每行一个,每个单词都是由 1-20 个小写字母构成 ...
- 刷题总结——谈笑风生(主席树+dfs序的应用)
题目: Description 设T 为一棵有根树,我们做如下的定义:• 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称“a比b不知道高明到哪里去了”.• 设a 和 b 为 T 中的两个不同 ...
- Sql Server 中的 @@ERROR
@@ERROR:当前一个语句遇到错误,则返回错误号,否则返回0.需要注意的是@ERROR在每一条语句执行后会被立刻重置,因此应该在要验证的语句执行后检查数值或者是将它保存到局部变量中以备将来使用. D ...
- 1109 NOIP 模拟考试
NOIP2016 模拟赛 ——那些年,我们学过的文化课 背单词(word.c/cpp/pas)[题目描述]fqk 退役后开始补习文化课啦, 于是他打开了英语必修一开始背单词. 看着满篇的单词非常头疼, ...
- 棋盘制作 BZOJ 1057
棋盘制作 [问题描述] 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴 ...
- gridview无数据源实现更新数据库(即断开更新数据库)
原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...