『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

Geodatabase对象的理解

Geodatabase对象的理解
CafeCat 的话给我一个启发,我也想到把 ArcGIS Desktop 应用和ArcSDE结合起来一起考虑,看看 ArcSDE 是怎么处理空间数据(和栅格数据的)。 

       这是在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)了诸如:ArcInfoWorkspaceFactoryCadWorkspaceFactoryOLEDBWorkspaceFactoryShpfileWorkspaceFactorySdeWorkspaceFactory coclass,由此空间,从这些类厂我们可以创建出各自的Workspace,这同时也解释了:为什么ArcInfoShpfileOLEDBsdeIMS等等应用都可以生成同样的 Workspace了,因为:他们都有自己的 Workspace 类厂,学过设计模式的人都应该知道:这就是“类厂模式”。

 

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

 

       4. 数据集 Dataset 也是个高层的 Abstract class,从它这里也类型派生(Type Inherit)出了GeoDatasetTable这两个 Abstract class,而从 GeoDataset 这个 Abstract class 又派生出了FeatureDatasetRasterDataset 两个 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

------------------------------

       从对象图上看:GeoDatasetTable 是两个 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 是怎么用面向对象的方法来对现实世界进行部分建模的。

       上面的类名有如下解释:

       1A row buffer is used for data loading with cursors

       2A row is a record in a table. All rows in a table have the same set of fields

       3An object is a row in a geodatabase table

       4A feature is a geographic object with a geometric shape

       5Network features participate in a geometric network. Each feature is associated with one or many elements in a logical network

       6A dimension feature persists and draws dimensions in a geodatabase

       7An annotation feature persists and draws annotation in a geodatabase

       8。其他的意思就很明显了。

      京ICP备2025132830号-1 京公网安备 号