ArcGIS Geodatabase版本控制机制的学习总结
本文是最近内部的一个学习的自我整理,只有关键信息,如果需要详细了解,请参阅ArcGIS帮助文档:
http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/003n000000tq000000/(关于版本机制)
1、适用条件:仅支持企业地理数据库(ArcSDE地理数据库),而个人地理数据库、文件型地理数据库不支持;
2、定义:版本是整个地理数据库在某个时刻的快照,其中包含地理数据库中的所有数据集。利用版本化,多个用户可对 ArcSDE 地理数据库中的同一数据进行编辑,而无需应用锁或复制数据。
3、版本的分类:
DEFAULT 版本:每个 ArcSDE 地理数据库都具有一个被称为 DEFAULT 的默认版本,默认情况下将连接到 DEFAULT 版本
子版本:从任意现有版本创建子版本或分支版本的方式来创建版本,如可以通过创建 DEFAULT 版本的子版本来创建第一个版本。子版本会从父版本从继承所有相关数据。一个创建好的版本树如下:

4、版本的控制原理
数据集(要素类、要素数据集或表)注册为版本后,数据库中将会创建两个增量表:用于插入和更新的 A(添加)表以及用于删除的 D(删除)表。每次更新或删除数据集中的记录时,都会向这两个表或其中一个表添加行。如:我在数据库中新建了一个Line要素类,然后将其注册为版本后,数据库中出现了如下两个表:a8,D8,8代表该要素类在[SDE_table_registry]表中的数据集的ID。
总的来说,基表、A 表和 D 表中的所有行表示要素类或表的所有版本。这表示任何一个版本都只能引用这三个表中的行的子集
A 表和 D 表中的各行使用被称为状态 ID 的整型标识符进行标记,以在向表中添加行时提供参考。每次编辑版本时均会创建新的状态,并向这两个增量表或其中一个增量表添加新行。状态可被看作是树结构的一部分,在树结构中,各分支记录了版本的发展情况。记录版本从基表到当前状态之间一连串变更的一系列状态称为谱系。显示或查询版本时,ArcGIS 会查询版本的谱系以获取状态 ID,然后从 A 表和 D 表中检索正确的记录。
几个专业术语:
父版本:是生成其他版本时所基于的地理数据库版本。如果刚才提到的其他版本仍然存在,则无法删除父版本。
子版本:是通过父版本创建的地理数据库版本。最初创建时,子版本包含与父版本相同的数据,状态与父版本相同。在子版本中进行编辑后,通常会将这些编辑内容回发到父版本。
增量表:数据集的添加表和删除表统称为增量表,因为它们用于存储对数据集所做的更改。
删除表:可记录在版本化数据集中所做的所有删除。它还包含已更新记录的记录,因为更新记录的过程就是先删除原有记录,然后再添加修改过的记录,因此更新记录等同于删除记录。删除表也称为 D 表。
基表:基表是要素类的核心表。它包含所有非空间属性,如果使用 SQL 几何类型,则它还包含空间属性。术语“基表”用于将该核心表与其他端表(例如增量表、ArcSDE XML 表或 sdebinary 几何存储类型使用的 f 和 s 表)区分开来。基表也称为业务表。
5、如何注册为版本
在某个数据集上点击右键,选择创建为版本,如图:

点击创建为版本后,会弹出如下对话框:

如果此处勾选,则在以后的编辑中,如果点击保存,则所有数据将自动保存到基表中,并删除所有在增量表的数据;如果不勾选,则保存后所有数据数据不会提交到基表中,
如果要查询当前已经审核入库的所有数据只能通过查询视图的方式(视图为:数据集名称_VW)。
6、如何切换版本
在将数据加载到地图后,在TOC控件中,点击”List by Source”视图,可以看每个数据集的来源,如下图,要素类pnt来源不同的版本:

那么如何切换不同的版本进行编辑呢?我们可以在TOC控件中的数据上,点击右键,并切换版本:
,点击切换版本,将弹出我上图的版本管理视图:

7、版本的冲突与协调
在编辑工具栏中,选择“Options”可以设置处理冲突的方式,可以看出ArcGIS支持在行级别以及属性级别进行冲突处理,而提交的顺序支持按照入库顺序或者编辑顺序进行处理。
具体项目中要选择哪种方式,应该具体情况具体分析。如图:


ArcGIS Geodatabase版本控制机制的学习总结的更多相关文章
- SVN版本控制工具使用学习
SVN版本控制工具使用学习 Subversion是优秀的版本控制工具. 1.下载和搭建SVN服务器 http://subversion.apache.org/packages.html 类型有5种,推 ...
- 基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)
基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 个人技术博客:http://www.cnblogs.com/M ...
- ArcGIS模型构建器案例学习笔记-字段处理模型集
ArcGIS模型构建器案例学习笔记-字段处理模型集 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 由四个子模型组成 子模型1:判断字段是否存在 方法:python工 ...
- ArcGIS模型构建器案例学习-批量删除空要素类地理模型
ArcGIS模型构建器案例学习笔记-批量删除空要素类地理模型 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:批量删除记录个数为0的矢量文件 优点:逻辑清晰,不 ...
- 对mysql锁机制的学习
1.对于mysql学习,经常翻看一些博客,论坛,好像或多或少有mysq锁机制的学习与总结,所以今天有必要 对mysql锁机制的一些个人的总结,以便以后深入的学习. 2.学习这件事,从来都是“深入浅出” ...
- 版本控制工具SVN学习
教学视频链接:https://edu.aliyun.com/course/83?spm=5176.10731334.0.0.778e6580zC0Ri0 版本控制工具SVN学习 1,SVN的简介 在实 ...
- ArcGis for Android 工作与学习
ArcGis安装 需求 windows7(32/64) Eclipse3.6以上版本 Android Sdk 2.2以上 Jdk 7 安装步骤 Eclipse安装 下载ArcGis插件 在Eclips ...
- runtime运行机制方法学习
runtime这玩意第一次听说时都不知道是什么,经过了解后才知道它就是oc动态语言的机制,没有它那oc就不能称为动态语言.在之前可能大家对runtime了解都不深,随着编程技能的日益加深和需要,大家开 ...
- Java反射机制的学习
Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调 ...
随机推荐
- SQL Server 内存数据库原理解析
前言 关系型数据库发展至今,细节上以做足文章,在寻求自身突破发展的过程中,内存与分布式数据库是当下最流行的主题,这与性能及扩展性在大数据时代的需求交相辉映.SQL Server作为传统的数据库也在最新 ...
- 【Python之路Day12】网络篇之Python操作MySQL
pymysql是Python中操作MySQL的模块,使用方法和MySQLDB几乎一样. 1. 执行SQL语句 #!/usr/bin/env python3 # -*- coding: utf-8 -* ...
- 更改vsts源代码绑定服务器地址方法
第一步找到更改源代码管理 第二步首先选中第一个,滚动条拉至最后一项,点击最后一项(全选). 第三步点击绑定,vsts会自动签出所有项目,而后签入就可以更改成功了.
- ASP.NET Web API 2 中的特性路由
ASP.NET MVC 5.1 开始已经支持基于特性的路由(http://attributerouting.net),ASP.NET WEB API 2 同时也支持了这一特性. 启用特性路 由只需要在 ...
- .NET跨平台:再见dnx,你好dotnet cli
昨天在github上dnx的一个issue中看到这样一段话: we're retiring dnx/dnu/dnvm toolchain and will move to dotnet CLI in ...
- C++ Base64 编码 解码
C++实现 base64 字符串编码解码(GCC编译). /** * @brief C++ base64 编解码 * @author wid * @date 2013-20-25 * * @note ...
- Java经典类库-Guava中的函数式编程讲解
如果我要新建一个java的项目,那么有两个类库是必备的,一个是junit,另一个是Guava.选择junit,因为我喜欢TDD,喜欢自动化测试.而是用Guava,是因为我喜欢简洁的API.Guava提 ...
- css圆环百分比
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- paip.刮刮卡砸金蛋抽奖概率算法跟核心流程.
paip.刮刮卡砸金蛋抽奖概率算法跟核心流程. #---抽奖算法需要满足的需求如下: 1 #---抽奖核心流程 1 #---问题???更好的算法 2 #---实际使用的扩展抽奖算法(带奖品送完判断和每 ...
- 每天一个linux命令(7):mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 企业中常用的 [root@ local]# ...