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

Geodatabase and ArcSDE系列讲座 第四部分:Versioning(版本)

Geodatabase and ArcSDE系列讲座 第四部分:Versioning(版本)

Versioning使得多个用户能够同时编辑一个Geodatabase,而不用去复制数据库或者锁定数据库。一个Geodatabase能够有很多Version,事实上不管一个Geodatabase有多少个Version,数据库中只保存一套TablesFeature Classes


       Versioning使得多个用户能够同时编辑一个Geodatabase,而不用去复制数据库或者锁定数据库。一个Geodatabase能够有很多Version,事实上不管一个Geodatabase有多少个Version,数据库中只保存一套TablesFeature ClassesVersion是对Geodatabase的快照,而不是复制。对所有版本的编辑都是保存在Delta表中的。通过创建Version,多个用户可以同时对一个Geodatabase进行编辑,而且多个用户也可以同时编辑一个Version

       在ArcCatalogArcMap中,可以像未版本化的数据一样实现数据的查询、浏览和编辑。当用户连接一个多用户的Geodatabase时,通常需要选定连接哪个Version

       所有的ArcSDE Geodatabase均具备Default 版本,所有版本的最原始的源就是Default版本。能够通过提交更新的方式来维护和更新Default版本,也可以对其直接编辑。

 

        用户在创建版本时,可以为版本设定访问权限。对某个版本的编辑只会应用到该版本,而某个版本中Schema的变化则会影响到所有其它的版本。一旦停止编辑,可以将编辑结果提交到任意父版本。首先要Reconcile,即比较提交版本中的数据与父版本是否有冲突,如果有冲突则提供冲突解决办法。然后就是Post,则将编辑结果提交到父版本。

 

       每一个TableFeature Class包含两个Delta表:A表和D表。每次更新或者删除版本中的一个记录时,则可能对一个或者两个Delta表进行修改。一个Version包含所有的Original 表以及所有的Delta表的变化,当显示和查询一个版本时,ArcGIS是从Original表和Delta表中查找相应的信息。

 

       对于Feature ClassTable的所有编辑,不管是位于哪个Vision中,都是保存在相同的Delta表中。因此Base中的所有行,以及AD表的所有记录表示了Feature classTable的所有版本的信息,任何一个版本都是这三个表的子类。

 

       ArcGIS记录Delta表中的记录属于哪个Version的办法是:A表和D表的每一行都用State ID进行标识。当编辑一个版本时,产生一个新的State,同时产生新的一行添加到A表或者D表。一个系列的States记录了版本从Base表到当前状态,该系列称为Lineage。当你显示或者查询一个Version时,ArcGIS从版本的Lineage中得到State ID,然后从A表和D表中找到相应的信息。

 

       当编辑Geodatabase时,Delta表的大小和State的数量都在增加,表格与State越多,每次处理时的速度就越慢,因此应该定期利用ArcCatalog中的Compress工具进行数据库压缩,利用Analyze工具实现数据库的Statistics的重建。

 

       在进行数据库处理的时候,有三种选项:Registered As Visioned without the option to move edits to base ,registered as visioned with the option to move edits to base,not registered as versioned.

       1 Registered As Visioned without the option to move edits to base

能够实现的操作包括UndoRedo操作、长事务编辑、为设计和工程使用命名版本、使用Geodatabase归档、使用数据库复制。

不能做的事:创建拓扑、从拓扑中添加或删除要素、添加和删除拓扑规则、创建几何网络、从几何网络中添加或删除要素类。

       2 registered as visioned with the option to move edits to base

不能够做的事:编辑参与拓扑和几何网络的要素类、数据库归档、数据库复制

       3not registered as versioned

       是最原始的状态,能够实现复杂数据类型,包括拓扑和几何网络的编辑与更新。因为Default版本是数据库中最关键的,需要经常更新,因此需要对Default版本定期备份。

 

       如果用户注册版本时采用的是Register with the option to save edits to the base table,编辑简单要素时,编辑的结果还是保存在Delta表中,一旦保存,则这些变化就要从Delta表转移到Base Table中,而在Delta表中不再保存编辑的结果。用户如果编辑的不是Default版本,则变化也是记录到Delta表中,Save以后,变化也依旧保留在Delta表中,然而当ReconcilePostDefault版本以后,变化就转移到Base 表中了。如果是将版本中的变化ReconcilePost到非Default版本,则在Delta表中依旧会保留变化信息。Register with the option to save edits to the base table的缺陷就是一旦编辑错误,不能够回退,只能够放弃整个编辑过程。这种方法主要是使得第三方应用能够在版本化的环境下执行类似Non-Version 编辑,而ArcGIS用户是不能够通过这种设置来实现Non-Version编辑的。

 

       edits to the base table,当用户还没有将编辑结果ReconcilePostDefault版本时,第三方用户是无法看到其他版本的编辑情况。

Unregistered as Versioned将使得用户保留上一次Compress后的数据,而未Compress的数据则将丢失。

 

       对于海量的、多用户的数据库,可以使用自动ReconcilePost的功能。有两种方式可以实现:Batch ReconcileVersion Reconcile Services

       在版本化编辑中,可以多个用户同时编辑一个版本中的数据,也可以多个用户同时编辑同一数据库的不同版本。这两种情况会导致以下两种冲突的发生:

       (1)多个用户同时编辑一个版本中的数据:当多个用户同时编辑一个Version时,对每个用户都创建一个Edit Session,每个用户都不能看到其他用户的编辑状态,只有用户Save Edits以后,才能够看到其他用户的编辑状态。如果多个用户同时对一个要素做了不同的操作,则会发生Conflicts,在保存编辑结果时,会出现冲突信息,则根据在Editing OptionsVersioning面板上设置的Preferences来处理冲突,看应该保存哪个用户的编辑结果;

       2)如果是子版本和父版本的编辑发生冲突,则在Reconcile的时候会出现冲突信息,用户可以手动去解决冲突;如果用户正在查看的版本又被提交了新的内容,则用户只有Refresh以后,才能看到更新以后的内容。

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