AE开发-Geodatabase库-Core geodatabase (转)
Geodatabase库有以下12个子系统(或者12个OMD)组成:
1.Core Geodatabase
2.Geometric network
3.Topology
4.Data Elements
5.Tin
6.Data Transfer
7.Versioning
8.Name Objects
9.Relation Query Table
10.Raster
11.Metadata
12.Piug-in datasource
本节对第一部分进行简要说明和解释。
1.Core Geodatabase
该库是GeoDatabase的核心数据库,涵盖的接口和对象类型也最多,最复杂。对于该库的掌握难度也最大。
1.1 Workspace(Class)
包括空间和非空间的数据集(datasets)。
Workspace对象提供了方法可以实现对现存数据集的实例化,创建新的数据集。
主要分成三种类型:
esriFileSystemWorkspace(Shapefiel和ArcInfo Workspace)
esriLocalDatabaseWorkspa
esriRemoteDatabaseWorksp
其他类型还有:
RasterWorkspace(Grids和Images)
TinWorkspace
CADWorkspace
VPFWorkspace
1.2Editing Data
使应用程序可利用Transaction(事务)管理数据的直接更新。
ITransaction接口用于管理Transaction
IWorkspaceEdit接口用于利用session管理长Transaction(主要方法有:StartEditing,StartEditOperation,AbortEditOperation,StopOperation等)
下面的例子显示了在一个工作空间中简单的编辑进程:
Public Sub WorkspaceEdit()
Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New esriDataSourcesGDB.AccessWorkspaceFactory
Dim pFeatureWorkspace As IFeatureWorkspace
Set pFeatureWorkspace = pWorkspaceFactory.OpenFromFile("D:\Usa.mdb", 0)
Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("States")
Dim pWorkspaceEdit As IWorkspaceEdit
Set pWorkspaceEdit = pFeatureWorkspace
Dim pFeature As IFeature
Dim iResponse As Integer
Dim bHasEdits As Boolean
pWorkspaceEdit.StartEditing True
pWorkspaceEdit.StartEditOperation
Set pFeature = pFeatureClass.GetFeature(1)
pFeature.Delete
pWorkspaceEdit.StopEditOperation
iResponse = MsgBox("Undo operation?", vbYesNo)
If iResponse = vbYes Then
pWorkspaceEdit.UndoEditOperation
End If
pWorkspaceEdit.HasEdits bHasEdits
If bHasEdits Then
pWorkspaceEdit.StopEditing MsgBox("Save edits?", vbYesNo)
End If
End Sub
正确的对象编辑原则:
1.所有编辑对象都应当在编辑进程内
2.将改变在编辑操作中编成组
3.放弃所有在编辑进程边界上的row对象的参考
4.利用非循环的指针取回需要更新的编辑对象
5.取回编辑对象的所有属性
6.编辑row对象后要标注,且通知其他所有相关对象
7.保持数据库完整性
1.3Workspace Extension (Class)
在某些方面扩展Workspace的功能,例如管理自定义数据集的一个新类型,维护自定义数据字典。
1.4 Datasets(Abstract Class)
Datasets是一个abstract class,是工作空间(Workspace)中的数据集合,可以包括其他数据集,所有的数据集都支持IDataset,IDatasetEdit,IMetadata接口。
Datasets包括tables, feature class, relation classes, feature datasets, topologies, geometric networks等。
Feature Datasets是feature class的集合,也包括relationship classes, geometric networks, topologies.
存贮简单features的Feature classes,在feature dataset外部或内部组织。那些在feature dataset外部的被称作独立的feature classes;存贮topological features的Feature classes,必须包含在feature dataset内以保证公共的空间参考。
一个FeatureDataset是一个dataset,仅存在于一个geodatabase workspace中,在FeatureDataset中的所有datasets也是相同geodatabase中的部分。在geodatabase中的每一个dataset必须有唯一名称。
1.5 Table, object class, and feature class
1.5.1Table对象包含至少一列,对应字段(field)
一个Table就是一个Dataset,可以利用IDataset接口获取表名称,工作空间等属性。
ISqlsyntax接口ParseTableName方法可以分离不同数据库(SQL,ORCAL等)中文件名称到对应的部分。
1.5.2 object class是一个表格,他的行对应着实体,用属性和行为模拟成对象。
object对象通过IRow和IObject接口控制row对象。
一个FeatureClass是一个ObjectClass,其中的对象就是Feature,也就是说一个Feature class是一个空间实体的集合。
1.5.3Rows, objects and features
Row类产生自Table类,而Object类继承自Row类,Feature类又继承自Object类。
Row类的对象是一个表格的固定的一行,通过表格的指针获取。Row有一系列的Fields。
Object类的对象是一个表格,他的一行对应于一个实体。他的另一个名称是Entities Object。通过ObjectClass的IRow和IObject接口控制行中的对象。
Feature是一个空间对象,是Feature class一个成员。
1.5.4Query, cursors, and selection
1.5.4.1 Cursors是一个数据访问对象,有三种类型:
search
insert
update
下面是个简单的Cursors操作的例子:
Dim pCursor As ICursor
Dim pRow As IRow
Set pCursor = pTable.Search(Nothing, False)
Set pRow = pCursor.NextRow
Do Until pRow Is Nothing
Debug.Print pRow.Value(0)
Set pRow = pCursor.NextRow
Loop
1.5.4.2Query filters and spatial filters
Queryfilter是一个按照属性值过滤表格数据的类
Spatialfilters继承自Queryfilters,包括空间和属性两方面的限制。
ISpatialFilter 接口用于定义地理过滤标准。
1.5.4.3 Selection
SelectionSet对象可以让应用程序参考row选择集
ISelectionSet接口用于管理查询选择集
1.5.4.4 QueryDef
QueryDef对象表达在一个或多个表格(Table)和Feature class中定义数据集查询。
主要用于确定在arbitrary tables中计算数据集查询。
IQueryDef接口用于建立和定义查询,也可以提供一个计算方法用于计算查询并返回指针。
1.5.4.6Class Extensions
ClassExtension给了开发者定制和高级扩展Geodatabase功能的能力。
IClassExtension接口是执行ClassExtension的主要接口。
1.5.4.7Domains and validation rules
Rules与对象类关联,在对象类内的Validating对象处理过程中使用。
从Rule抽象类中产生三类型子类:
AttributeRule
RelationshipRule
ConnectivityRule(进一步拆分又有JunctionConnectivityRule
1.5.4.7.1Attribute rules and domains
Attribute rule应用attribute domain产生一个对象类。
Domain是一个抽象类,用于定义RangeDomain和CodedValueDomain组件类使用的接口,去约束每一个丢失的值,这些丢失的值是与Object和Feature类中特定字段关联的。
Domain在自类型中指定。
1.5.4.7.2Relationship rules
RelationshipRule约束在RelationshipClass中参与的两个子类型间的cardinalities。
1.5.4.7.3Connectivity rules
Connectivity Rule约束网络连通性的类型。
5 TIN 组成的基本元素: 10 Raster子系统 10.1 Raster data access 对象 Public Function OpenRasterWorkspace(sPath As String) As IRasterWorkspace Workspace对象提供了访问RasterDataset对象和RasterCatalog对象的三个接口:
3.IRasterWorkspaceEX接口 Dim pWorkspace as IRasterWorkspaceEx 在geodatabase中建立一个raster dataset是建立一个没有dimension的空raster dataset,它具有基本的占位符,例如波段数,象元类 型,RASTER字段属性,GEOMETRY字段属性。一旦空的raster dataset 建立后,raster象元能够从其他raster data中追加,通过 mosaicking方法。例如: Dim pWorkspace As IRasterWorkspaceEx 10.2 Raster datasets RasterDataset支持IRasterBandColoection接口,除了添加,删除波段对于RasterDataset没有影响。 两个方法可以用于从RasterDataset建立Raster对象。 除了通过workspace可以访问之外,RasterDataset还可以利用RasterDataset属性从波段中获得。 10.3 Raster Bands Dim pBandCol as IRasterBandCollection 有一些接口只支持基于文件的RasterBand,不支持Database RasterBand. Dim pColormap As IRasterColormap RasterBand支持IRawPixel接口,可以读取和写波段的像元值。 10.4 Raster 因为Raster的Transient nature, IRasterProps是一个重要的接口,用于控制Raster的属性,例如幅度,宽度,高度,空间参考,像元类型,Nodata value等。 Dim pRasterProps as IRasterProps Raster对象能够利用IPixelFilterOperation建立PixelBlock和通过像元filter修改像元值。也可以利用IrasterEdit接口直接修改Raster的 像元值。 Raster能够利用RasterLayer对象显示,这个对象是esriCarto库对象。Raster可以在RasterDataset中建立,也以从RasterLayer中获 取。 10.5 Pixel blocks 10.6 Raster catalogs |
转自http://blog.sina.com.cn/s/blog_53fc3ca10100db4h.html~type=v5_one&label=rela_nextarticle