《ArcGIS Engine 地理信息系统开发从入门到精通(第二版)》——6.5 Geodatabase对象模型

简介:

本节书摘来自异步社区《ArcGIS Engine 地理信息系统开发从入门到精通(第二版)》一书中的第6章,第6.5节,作者: 邱洪钢 , 张青莲 , 熊友谊 更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.5 Geodatabase对象模型

ArcGIS Engine 地理信息系统开发从入门到精通(第二版)
6.5.1 Geodatabase中的主要类
Geodatabase中的主要类可以分为工作区部分和数据集部分,这两部分包含了Geodatabase中最基础、最主要的类。工作区部分主要负责对Geodatabase中的各种数据源进行宏观管理,而数据集部分主要是用于对数据库中各种具体的数据进行描述和管理。

(1)WorkspaceFactory类。

该类用于生成Workspace,该类允许用户通过事先指定的连接属性连接一个Workspace,这些连接属性一般使用PropertySet对象定义,并且可以存放在一个连接文件中。WorkspaceFactory是一个可创建的对象,具有一个连接池,该连接池存放了与当前应用连接、处于激活状态的Workspace。该类还提供了浏览、管理基于文件系统的Workspace的方法,同时还提供了管理远程数据库中的数据的功能。

该类实现了IWorkspaceFactory 和IWorkspaceFactory2两个接口,提供了用于创建、打开Workspace和获取一个Workspacefactory的属性的方法。该类还派生ArcInfoWorkspaceFactory、CadWorkspaceFactory、IMsWorkspaceFactory、ShapefileworkspaceFactory、SdeWorkspaceFactory和AccessWorkspaceFactory等。

IworkspaceFactory接口提供了创建和打开Workspace的方法,同时提供了获取Workspace的相关属性信息的方法。该接口提供了10个方法和两个属性。如Copy方法,用于将一个Workspace 复制到指定的目录;GetWorkspaceName方法,用于获得一个具有指定文件名列表对应的Workspace的名称;Move方法,用于将一个Workspace移到指定的文件夹下;Open方法,用于打开一个具有指定连接属性的Workspace,这个方法用于打开ArcSDE数据库;OpenFromFile方法,用于根据指定的文件名或者目录打开一个Workspace,这个方法通常用于打开文件系统工作区或本地数据库工作区,也可以根据连接属性文件打开SDE数据库工作区。

IWorkspaceFactory2接口的作用和IWorkspaceFactory接口基本一致,只是这个接口另外提供了直接根据一个描述连接属性的字符串来打开一个Workspace的方法OpenFromString。

(2)Workspace类。

Workspace是一个用于存放空间数据和非空间数据的容器,可以存放FeatureDatasets、Raster datasets和Tables等各种数据。一个Workspace 就是一个数据集集合,该类提供了列举、添加、删除、复制和更改它所包含的数据集的方法,还提供了创建数据集的方法。根据枚举esriWorkspaceType,Workspace可以分为esriFileSystemWorkspace(文件系统工作区)、esriLocalDatabaseworkspace(本地数据库工作区)、esriRemoteDatabaseWorkspace(分布式远程数据库工作区)等。Shapefiles和ArcInfo workspaces就是文件系统工作区类型的Workspace。该类实现了IWorkspace、IWorkspace2、IWorkspaceDomains2等众多接口。

一个Workspace可以被看做是文件系统中的目录,也可以被看做一个关系数据库。在访问一个Workspace中的数据库之前,用户首先必须打开这个Workspace。用户不能直接创建一个Workspace,一般是由WorkspaceFactory生成。

IWorkspace接口提供了获取Workspace各种信息的方法,该接口提供了3个方法和6个属性。如Exists用于判断当前Workspace是否存在,IsDirectoy用于判断当前Workspace是否是文件系统下的一个目录,WorkspaceFactory用于获取当前Workspace对应的WorkspaceFactory。

(3)FeatureDataset组件类。

FeatureDataset组件类是一个用来存储具有与该FeatureDataset同空间参考的多个Feature Class的数据集。FeatureDataset还可以存储Geometric Network和Relationship Class。该类实现了IFeatureDataset接口,该接口提供继承IDataset接口。IFeatureDataset提供了在一个Dataset中创建一个新的Feature Class的功能,共有7个方法和9个属性,如CreateFeatureClass方法用于创建一个新的Feature Class。

6.5.2 Geodatabase中的其他常用类
Geodatabase的OMD中还提供了一些常用类,如与空间数据入库相关的类、与查询相关的类。

空间入库相关类还同时实现了各种数据格式的转换,如FeatureDataConverter、FieldChecker、EnumFieldError等。其中FeatureDataConverter类是最核心的类,所有的数据导入功能都是通过这个类实现的。FeatureDataConverter类主要用于实现类似ArcCatalog的功能;FieldChecker类用于对属性字段进行有效性判定;EnumFieldError类是一个枚举,用来记录所有数据转换失败的无效字段的名称。

FeatureDataConverter类实现了IfeatureDataConverter和IFeatureDataConverter2两个接口。IFeatureDataConverter接口用于对不同格式的数据进行相互转换,提供了3个方法,如ConvertFeature Class用于将FeatureClass导入到数据库中,ConvertFeatureDataset用于将要素数据集导入到数据库中,ConvertTable用于将一个表格数据导入到数据库中。IFeatureDataConverter2接口在功能上基本与IFeatureDataConverter接口一致。

FieldChecker 类实现了IFieldChecker接口,用于对属性字段进行有效性判定,如Validate方法用于检查一系列属性字段的有效性。

相关文章
|
5月前
|
Python
ArcGIS中ArcMap模型构建器ModelBuilder的模型建立与运行操作方法
ArcGIS中ArcMap模型构建器ModelBuilder的模型建立与运行操作方法
|
10月前
|
定位技术
ArcGIS:(模型构建器)如何获取各个区域下不同地物的面积?
ArcGIS:(模型构建器)如何获取各个区域下不同地物的面积?
147 0
|
10月前
|
存储
ArcGIS:模型构建器内变量的数据类型中栅格图层和栅格数据集的区别
ArcGIS:模型构建器内变量的数据类型中栅格图层和栅格数据集的区别
66 0
|
10月前
|
数据库
ArcGIS: 如何利用模型构建器(modelbuilder)进行植被指数情况的统计?
ArcGIS: 如何利用模型构建器(modelbuilder)进行植被指数情况的统计?
122 0
ArcGIS: 如何利用模型构建器(modelbuilder)进行植被指数情况的统计?
|
10月前
|
定位技术 数据格式
GIS开发:arcgis server发布CGCS2000切片
GIS开发:arcgis server发布CGCS2000切片
159 0
|
10月前
|
SQL 开发框架 数据可视化
ArcGIS Engine学习系列1 AE基础介绍
市面上AE教程大致到ArcGIS10.2,ESRI宣布从ArcGIS10.5开始便停止AE的更新,使用AO做开发,初学者可以在学习C#语言后,从AE入门,逐渐过度到AO。不同版本下AE数据类型数量Enums:枚举类型,用于实现一些定义的内容Structs:结构体Interfaces:接口Classes:类AE开发中,为了更好地管理COM对象,ESRI将这些COM对象放到不同的组件库中。
216 0
|
10月前
|
编解码 Python
ArcGIS:如何解决模型构建器报错<内存不足>?
ArcGIS:如何解决模型构建器报错<内存不足>?
389 0
|
10月前
ArcGIS:如何利用模型构建器(ModelBuilder)解决基于人口和已有商业点的商业连锁店选址问题?
ArcGIS:如何利用模型构建器(ModelBuilder)解决基于人口和已有商业点的商业连锁店选址问题?
79 0
|
10月前
|
编解码
ArcGIS:(模型构建器实现)如何依据交通通达度和商业繁华度对城市的土地区位进行模拟评价?
ArcGIS:(模型构建器实现)如何依据交通通达度和商业繁华度对城市的土地区位进行模拟评价?
118 0
|
10月前
|
算法 Python
ArcGIS:如何利用模型构建(modelbuilder)进行公路选线?
ArcGIS:如何利用模型构建(modelbuilder)进行公路选线?
73 0