http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> ArcGIS >> ArcGIS入门与应用 >> 正文

Geodatabase对象的理解

作者:佚名    文章来源:GISChina    点击数:    更新时间:2006-11-26
摘要:
这是在www.gischina.com上与人讨论的东西,对方写下了这些,感觉他理解很透彻,对理解其它对象关系有帮助,所以贴出来,同时感谢作者,尽管我忘了是谁了,呵呵。

CafeCat 的话给我一个启发,我也想到把 ArcGIS Desktop 应用和ArcSDE结合起来一起考虑,看看 ArcSDE 是怎么处理空间数据(和栅格数据的)。
打开 ArcGISObjectModel.pdf 后,我看到了 Geodatabase 和 ArcMap 两部分主要对象的UML图。主要有以下关系:

Geodatabase Object Diagram:
**************************************************

1. WorkSpace 是一个coclass,意思是你可以使用 new 等操作来动态创建 WorkSpace 的实例,他是从 WorkSpaceFactory 这个 Abstract class 中 Instantiate 而来的,意思就是说:从属于 WorkSpaceFactory 这个类的对象有实例化 WorkSpace 对象的方法;

2. WorkSpaceFactory 是个 Abstract class ,从他的名字就可以看出这是个类厂的高层纯虚类,由它类型派生(Type Inherit)了诸如:ArcInfoWorkspaceFactory、CadWorkspaceFactory、OLEDBWorkspaceFactory、ShpfileWorkspaceFactory、SdeWorkspaceFactory等 coclass,由此空间,从这些类厂我们可以创建出各自的Workspace,这同时也解释了:为什么ArcInfo,Shpfile、OLEDB、sde、IMS等等应用都可以生成同样的 Workspace了,因为:他们都有自己的 Workspace 类厂,学过设计模式的人都应该知道:这就是“类厂模式”。

3.当然一个 Workspace 是包含了很多的coclass 类的,比如:WorkspaceProperty、ConfigurationKeyword、WorkspaceHelper等,其中最重要的就是 Dataset 这个Abstract class 啦;

4. 数据集 Dataset 也是个高层的 Abstract class,从它这里也类型派生(Type Inherit)出了GeoDataset、Table这两个 Abstract class,而从 GeoDataset 这个 Abstract class 又派生出了FeatureDataset、RasterDataset 两个 coclass,这很好理解:一个对应着矢量模型,一个对应着栅格模型;

5. 从图中可以看出:一个 FeatureDataset coclass 的对象可以聚合 FeatureClass coclass 的对象,而FeatureClass coclass 又是由 Table 派生(Type Inherite)而来的。最重要的就是:FeatureClass 是可以实例化 Feature coclass 对象的,而 “A feature is a geographic object with a geometric shape.”,也就是我们平常说的几何对象。
那就有点奇怪了:还有 object table(就是那些没有空间信息,只存放属性信息的表)呢!你把它丢哪里去啦???别急,面向对象的好处——可以把 Object table 这一个类插入到 Table 和 FeatureClass 这一脉的中间。于是下面的话就行的通了:
“An object class stores nongeographic entities.”(object class 就是我上面所说的object table 啦,为了照顾大家平时的说法,哈哈)
"A feature class is a type of object class that stores geographic features。"
也就是有如下的继承关系:
                          Dataset
                            |
    --------------------------------------------
    |                                           |
  GeoDataset                                 Table
    |                                           |
--------------------
|                   |                       ObjectClass
RasterDataset   FeatureDataset                  |
                                            FeatureClass

**************************************************



我想现在可以解释什么是 sde 中的 layer,什么是 GeoDataset?
------------------------------
从对象图上看:GeoDataset、Table 是两个 Abstract class,他们的集成层次是在同一层,那么他们是“平起平坐”的两个兄弟,共有同一个父亲——数据集(Dataset)。我一开始觉得很奇怪,但是,看看下面的两句话:

“A table is a collection of rows with attributes stored in columns.”
“A FeatureCalss is a table that includes a column for a geometric shape.”

还有,我看到 ESRI 的文档中经常这样写着:FeatrueClass(layer),很明显,是不是意味着他们在 sde 的眼中就是一回事!

如果大家对 layer 在 sde 中是如何表示的还没有一个感性的认识,建议:在 ArcSDE 的联机帮助中搜索:layer 关键字,会有一堆页面列在下面,其中有一个标题就是 Layer ,你看了这个标题的文章就明白了,标题好像就是 ArcSDE featureclass(layer) named "transformersnt" ,你也可以直接搜这个标题。这个文章说的大概就是 zzgjacky 所讲的。看来大家的意见还是比较一致的。

如果,你还是没明白,建议你看看有关 FBGIS(基于特征的GIS ,Feature based GIS) 方面的资料,它是 GIS 结合面向对象的一个方向。
××××到底什么是 Featrue 呢?我在 Object Diagram 中也找到了部分答案:
                         RowBuffer
                            |
                           Row
                            |
                          Object
                            |
                          Feature
                            |
            --------------------------------------
           |                |                    |
     NetworkFeature   DimensionFeature       AnnotationFeature
           |                |
    ---------------     DimensionShape
   |              |
JunctionFeature  EdgeFeature


上面的继承关系就说明 ESRI 是怎么用面向对象的方法来对现实世界进行部分建模的。
上面的类名有如下解释:
1。A row buffer is used for data loading with cursors;
2。A row is a record in a table. All rows in a table have the same set of fields;
3。An object is a row in a geodatabase table;
4。A feature is a geographic object with a geometric shape;
5。Network features participate in a geometric network. Each feature is associated with one or many elements in a logical network;
6。A dimension feature persists and draws dimensions in a geodatabase;
7。An annotation feature persists and draws annotation in a geodatabase;
8。其他的意思就很明显了。

Tags:Geodatabase,ArcGIS  
责任编辑:gissky
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 中国地图