gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:3185回复:6

geodatabase对象的理解(转)

楼主#
更多 发布于:2003-07-27 20:17
是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。其他的意思就很明显了。

喜欢0 评分0
xbdj
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数63
  • QQ
  • 铜币247枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2003-07-28 18:48
确实精品
举报 回复(0) 喜欢(0)     评分
laskr
路人甲
路人甲
  • 注册日期2003-08-01
  • 发帖数696
  • QQ
  • 铜币494枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-04-05 20:57
举报 回复(0) 喜欢(0)     评分
hexiaoming
路人甲
路人甲
  • 注册日期2003-11-10
  • 发帖数57
  • QQ
  • 铜币160枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-09-17 11:44
<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
wzf63
路人甲
路人甲
  • 注册日期2004-04-11
  • 发帖数48
  • QQ
  • 铜币2枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-10-18 15:10
<P>有没有这方面的中文资料??</P>
举报 回复(0) 喜欢(0)     评分
donballking
路人甲
路人甲
  • 注册日期2007-04-18
  • 发帖数9
  • QQ
  • 铜币137枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2007-07-13 18:27
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em03.gif" /><img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em06.gif" /><img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em08.gif" />
举报 回复(0) 喜欢(0)     评分
whmwxhanshan123
路人甲
路人甲
  • 注册日期2006-06-17
  • 发帖数3108
  • QQ
  • 铜币6445枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2007-07-16 20:35
<img src="images/post/smile/dvbbs/em05.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部