《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方法用于检查一系列属性字段的有效性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值