-
对于版本编辑,我想从一下几点来介绍(纯个人观点)
1.
什么是版本,版本的机制如何
2.
版本编辑过程演示
3.
开发中的思路
< br>4.
仿照
ARCMAP
进行
p>
AE
开发
1.
什么是版本,版本的机制如何
<
/p>
对于版本的基础知识,
我了解的也不是很全面,
< br>最初看到了大讲堂里
萝卜兔子
讲
的“
Geodatabase
and ArcSDE
系列讲座
第四
部分:
Versioning
(版本)”
感
觉介绍的很具体详细,索性偷懒借用过来!
/ESRI/?
tid=3920&extra=page%3D
1
Versioning
使得
多个用户能够同时编
辑一个
Geodatabase
,
而不
用去复制数据库或者锁定
数据库
。一个
Geodatabase
能够有很多
Version
,事实上不管一个
Geodatabase
有多少
个
Version
,数据库中只保存一套
Tables
和
Feature Classes
。
Version
是对
G
eodatabase
的
快照,
而不是
复制
。
对所有版本的编辑都是保存在
D
elta
表中的。
通过创建
Versi
on
,
多个用户可以同时对一个
Geo
database
进行编辑,
而且多个用户也可以同时编辑
p>
一个
Version
。
个人数据库和文件工作空间是没有版本功能的。
在
ArcCatalog
和
ArcMap
中,
可以
像未版本化的数据一样实现数据的查询、
浏览
和编辑。当用户连
接一个多用户的
Geodatabase
时,通常需要选定连接
哪个
Version
。
所有的
ArcSDE
Geodata
base
均具备
Default
版本
,所有版本的最原始的源就是
Default
版本。能够通过提
交更新的方式来维护和更新
Default
版本,也可以对
p>
其直接编辑。
用户
在创建版本时,可以为版本设定访问权限。对某个版本的编辑只
会应用到该版本,而某个
版本中
Schema
的变化则会影响到所有其它的版本。一
p>
旦停止编辑,可以将编辑结果提交到任意父版本。首先要
Recon
cile
,即比较提
交版本中的数据与父版本是否有冲突,
p>
如果有冲突则提供冲突解决办法。
然后就
是
Post
,则将编辑结果提交到父版本。
每一个
Table
和
Feature
Class
包含两个
Delta
表:
A
表和
p>
D
表。每次更新或者
删除版本中的一个记录
时,则可能对一个或者两个
Delta
表进行修改。一个
Version
包含所有的
Original
表以及所有的
Delta
表的变化,当
显示和查询一
个版本时,
ArcGIS
是从
Original
表和
Delta
表中查找相应的信息。
对于
Feature Class
和<
/p>
Table
的所有编辑,不管是位于哪个
Vision
中,
都是保存在相同的
D
elta
表中。因此
Base
中的所有
行,以及
A
和
D
表的所有记
录表示了
Feature
class
和
Table
的所有版本
的信息,
任何一个版本都是这三个
表的子类。
< br>
ArcGIS
记录
Delta
表中的记录属于哪个
Version
的办法是
:
A
表和
D
表
的
每一行都用
State ID
进行标
识。当编辑一个版本时,产生一个新的
State
,同
时产生新的一行添加到
A
表或者
D
表。一个系列的
States
记录了版本从
Base
表到当前状态,
该系列称为
Lineage
。
当你显
示或者查询一个
Version
时,
A
rcGIS
从版本的
Lineage
中
得到
State ID
,然后从
A
p>
表和
D
表中找到相应的信息。
当编辑
Geodatabase
时,
Delta
表的大小和
State
的数量都在增加,
表格与
State
越多,每次处理时的速度就越慢,因此应
该定期利用
ArcCatalog
中的
Compress
工具进行数据库压缩,利用
Analyze<
/p>
工具实现数据库的
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
能够实
现的操作包括
Undo
和
Redo
p>
操作、
长事务编辑、
为设计和工程使用命名
版
本、使用
Geodatabase
归
档、使用数据库复制。
不能做的事:创建拓扑、从拓扑中添加
或删除要素、添加和删除拓扑规则、创建
几何网络、从几何网络中添加或删除要素类。<
/p>
(
2
)
registered
as
visioned
with
the
option
to
move
edits
to
base
不能够做的事:编辑参与拓扑和几何网络的要素类、数据库归档、数据库复制
(
3
)
not
registered as versioned
是最原始的状态,
能够实现复杂数据类型,
包括拓扑和几何网络的编辑与
更新。因为
Default
版本是数据库中最关键的,需要经
常更新,因此需要对
Default
版本定期备份。
如果用户注册版本时采用的是
Register with
the option to save
edits to the base ta
ble
,编辑简单要素时,编辑的结果还是保存在
Delta<
/p>
表
中,一旦保存,则这些变化就要从
De
lta
表转移到
Base Table
中,而在
Delta
表中不再保存编辑的结果。
用户如果编辑的不是
Default
版本,
则变化也是记录
到
Delta
表中,
Save
以后,变化也依旧保留在
< br>Delta
表中,然而当
Reconcile
和
Post
到
Defau
lt
版本以后,变化就转移到
Base
表中了。如果是将版本中的
变化
Reconcile
和
Post
到非
Def
ault
版本,则在
Delta
表中依
旧会保留变化信
息。
Register with the
option to save edits to the base table
的
缺陷就
是一旦编辑错误,
不能够回退,
只能够放弃整个编辑过程。
这种方法主要是使得
第三方应用能够
在版本化的环境下执行类似
Non-Version
编辑,<
/p>
而
ArcGIS
用户
是不能够通过这种设置来实现
Non-
Version
编辑的。
第三
方应用
(非
ArcGIS
软件或者非<
/p>
AO
开发的软件)
通常是只能对
Base
Table
进行查询,不能够看到<
/p>
Delta
表中的变化。如果将数据注册为版本化,而
不选择
move
the
edits
to
the
base
table
,当用户还没有
将编辑结果
Reconcile
和
Po
st
到
Default
版本时,第三方
用户是无法看到其他版本的编辑情况。
Unregistered as Versioned
将使得
用户保留上一次
Compress
后的数据,而未
Compress
的数据则将丢失。
对于海量的、多用户的数据库,可以使用
自动
Reconcile
和
Pos
t
的
功能。有两种方式可以实现:
Ba
tch
Reconcile
和
Version
Reconcile
Services
在版
本化编辑中,可以多个用户同时编辑一个版本中的数据,也可以
多个用户同时编辑同一数
据库的不同版本。
这两种情况会导致以下两种冲突的发
生:
p>
(
1
)多个用户同时编辑一个版本中的数据:
当多个用户同时编辑一个
Version
时,对每个用户都创建一个
Edit
Session
,每个用户都不能看到其他用
户的编辑状态,只有用户
Save Edits
以后,才能够看到其他用户的编辑状态。
如果多个用户同时对一个要素做了不同的操作,则会发生
Conflicts<
/p>
,在保存编
辑结果时,会出现冲突信息,则根据在
Editing Options
的
Versioni
ng
面板上
设置的
Preferenc
es
来处理冲突,看应该保存哪个用户的编辑结果;
(
2<
/p>
)如果是子版本和父版本的编辑发生冲突
,则在
< br>Reconcile
的时候会
出现冲突信息,
用户可以手动去解决冲突;
如果用户正在查看的版本又被提交了
新的内容,则用户只有
Refresh
以后,才能
看到更新以后的内容。
2.
版本编辑过程介绍
经过
理论的了解,下面通过
ARCMAP
操作来介绍版本编辑过程。
注:
个人数据库和文件工作空间是没
有版本功能的。
首先加载
SDE
数据,之后……
1.
建立新版本:
右键添加
Versioning
< br>工具,
单击
Creat
New
Version
建立新
Version
Version
:将
TOC
转换为
p>
Source
,右键
SDE
,单击
ChangeVersion
选项,
在弹出的窗体中选择新建立的版本名或其他版本。
3
.
开始编辑:注:在编辑前确保版本已注册(详细请看第一章内容)
(
©
tianshen2330
)
4.
点击
Versioning
工具栏的
Reconcile
进行版本协调,如产生冲突则弹出对话框
询问是否修改。在点击后,会有
个对话框弹出,那里可以选择当前数据是根据父版本一直,
还是根据当前编辑版本一致,
这里一定要注意!
5.
点击
Versioning
工具栏的
Post
按钮将协调后的数据
Post
到
D
efault
版本
以上
五个步骤在图
1
中已经标出,想试的可以按照步骤来。
如果你做不出版本冲突,下面我教你个绝招。