zoukankan      html  css  js  c++  java
  • ArcGIS版本机制(企业级GIS设计管理优化策略《第三章》)

    之前写过一篇[Geodatabase版本管理:https://www.cnblogs.com/2008nmj/p/14251977.html]

    3.1 ArcGIS版本介绍  112
    3.1.1 ArcGIS版本概述 112
    3.1.2 ArcGIS版本原理  114
    3.1.3 地理数据库与事务处理 117
    3.2 ArcGIS版本的工作流程 119
    3.2.1 注册版本 119
    3.2.2 创建子版本 121
    3.2.3 数据编辑 123
    3.2.4 版本名词概念理解 124
    3.2.5 版本协调 125
    3.2.6 版本冲突 127
    3.2.7 版本提交 134
    3.2.8 删除子版本 136
    3.2.9 反注册版本 136
    3.2.10 ArcGIS 10.1版本管理 137
    3.3 ArcGIS版本变化表解析 139
    3.3.1 注册版本 139
    3.3.2 数据编辑 140
    3.3.3 创建子版本 142
    3.4 ArcGIS版本系统表解析 144
    3.4.1 直接编辑DEFAULT版本 146
    3.4.2 多版本编辑 148
    3.5 ArcGIS版本业务类型 154
    3.5.1 直接编辑DEFAULT版本 154
    3.5.2 两层版本树 155
    3.5.3 代理DEFAULT版本 156
    3.5.4 周期型版本树 157

    3.5.5 多层版本树 158
    3.6 多用户并发编辑流程 161
    3.7 ArcGIS版本压缩 166
    3.7.1 ArcGIS版本压缩原因 166
    3.7.2 ArcGIS版本压缩原理 167
    3.7.3 ArcGIS版本压缩频率 169
    3.8 ArcGIS版本压缩流程 170
    3.8.1 ArcGIS版本压缩前准备 170
    3.8.2 ArcGIS版本压缩执行 173
    3.8.3 批星创建ArcGIS子版本 174
    3.8.4 ArcGIS版本压缩后处理 178
    3.8.5 理想的ArcGIS版本压缩效果 180
    3.8.6 常见的ArcGIS版本压缩问题 181
    3.8.7 ArcSDE版本压缩 与Oracle的UNDO.. 185
    3.8.8 制定自动化版本压缩流程脚本 188
    3.9 ArcGIS版本工具介绍 192
    3.9.1 GDBT 192
    3.9.2 Compare Versions 195
    3.10 ArcGIS非版本编辑 198
    3.10.1 多用户非版本编辑的并发与锁定 200
    3.11 注册版本选项说明 201
    3.11.1 直接编辑DEFAULT版本 201
    3.11.2 直接编辑子版本 203
    3.12 ArcGIS版本高级应用——同步复制 206
    3.12.1 同步复制应用场景 206
    3.12.2 同步复制类型一检入检出(Chek..210
    3.12.3 同步复制类型一单向复制(One W...213
    3.12.4 同步复制类型一双向复制(Two W..216

    3.12.5 同步复制一离线同步 217
    3.13 ArcGIS版本高极应用——数据归档 220
    3.13.1 数据归档应用场景 220
    3.13.2 数据归档操作流程 221
    3.13.3 数据归档数据表解折 231
    3.13.4 ArcGIS 10.2数据归档新特性 235
    3.14 小结 237

    3.1 ArcGIS版本介绍

    3.1.1 ArcGIS版本概述

    当前很多企业级GIS应用都需要该企业所辖部门与用户进行交互合作。这种设计在处理事务的机构中比较常见,比如公共事业机构、市政管理机构、交通运输机构等。这些机构都确立了设计、创建和维护的工作流程。主要步骤包括需求分析设计、可行性方案修改、论证选择确定方案、创建要素并更新地图数据等。

    在这种工作流程中使用ArcGIS工具时,需要多用户同时编辑地理数据库,同时需要有地理数据库的事务来处理视图。使用这些视图可以确保用户与其同事相互合作的编辑以及编辑更新之后的结果可以实施显现。不仅如此,工作流的机构还可以模拟统一机构中多部门之间的商业事务处理工作。

    ArcGIS推出的Geodatabase数据模型就有一种管理机制的版本,可以满足上面提出的需求,这个模型可以让用户创建整个工程过程中各个状态的地理数据库版本,并且可以协调这些不同版本之间的差别,最后确定更新一个最终版本。

    下面以市政供水设施为例来了解一下ArcGIS版本机制。市政供水设施将所有原始数据作为一个综合版本Geodatabase,该供水系统包括输水管线、水泵、阀门等,这都被记录为Geodatabase的要素,可以用于日常事务的更新。相关工作流程描述如图3-1所示。

     

     图3-1 Geodatabase版本在供水系统的工作流程

    1. Geodatabase的长事务编辑

    地图绘制部门的小张和小王负责Geodatabase的日常更新维护。为了反馈供水管线的加长情况,小王检查了该地区的供水属性信息并且更新了水表要素属性。同时小张添加了该地域一系列的供水管线加长之前实测数据点。这些编辑内容是直接对Geodatabase默认版本进行操作的,因为它们表示了输水系统的改进情况,这些情况并不属于前面提到的设计流程中的一部分。

    2. 按部门创建版本

    信息系统部负责管理客户清单与资产管理。为了相应供水管线的延伸,小刘创建了一个新版本,使用定位仪器来匹配供水网络里新要素的清单记录,并且提取和总结用水数据。这个总结数据是为输水管线延伸工程而准备的,因此这时创建的版本是一个临时版本,在项目后期可以删除。

    工程部门使用其他部门收集的数据创建了两个工程设计版本。小李为新供水管线创建了一个18英寸管径的设计版本,小陈创建了一个24英寸的管径方案,并以此来检验新建水管线是否能够满足该地区以及今后的用水需求。结果小陈发现24英寸水管可以满足当地区域今后10年的用水需求,而且可以节省大量的建设经费。于是小陈的设计方案被采纳,作为管线延伸的一个版本。当创建工作结束时,关心延伸工程版本将提交到默认版本。

    3.1.2 ArcGIS版本原理

    ArcGIS版本是ArcSDE软件在多用户关系型数据库基础上的一种机制,依托于ArcSDE提供的长事务处理工具。这是一个先进的地理数据库管理系统,有了版本,在一个多用户环境中编辑地理数据库,用户可以从众多工作流程中论证采纳最满意的工作方案。版本机制只能在企业级地理数据库中实现,在文件型地理数据库中无法实现版本功能。

    版本不需要数据的锁定或者数据的复制就可以实现多用户编辑同一个地理数据库。其实版本就是命名的Geodatabase的状态。用户可以使用版本来模拟工程设计、工程建造,每一个版本都可以看成Geodatabase的一个快照,用户也可以切换到想要访问的快照。

    用户可以通过版本访问ArcSDE地理数据库。连接到多用户地理数据库时,需要指定将连接的版本,默认情况下将连接到DEFAULT版本。每个ArcSDE地理数据库都具有一个被称为DEFAULT的默认版本,因此,始终会为地理数据库启用版本化。它是ArcGIS操作方式的基础部分,无须单独安装或配置。与其他版本不同,DEFAULT版本始终存在,且不能被删除。在大多数工作流策略中,它是数据库的发布版本,表示要建模的系统的当前状态。用户可以将其他版本中的变更提交到DEFAULT版本,从而逐步维护和更新DEFAULT版本。此外,用户还可以像编辑其他版本一样,对DEFAULT版本直接进行编辑。DEFAULT版本为根版本,因此它是其他所有版本的祖先版本。

    用户可通过从任意现有版本创建子版本或分支版本的方式来创建版本——可以通过创建DEFAULT版本的子版本来创建第一个版本。创建新版本时,该版本与DEFAULT版本相同。随着时间的推移,版本将会随着对DEFAULT版本和新版本所做的更改而出现差异。创建版本会给用户造成一个正在复制整个地理数据库的假象。这是因为各版本都具有地理数据库中的所有表和要素类。在版本中编辑的要素类或表将不再与父版本中的要素类或表相同,因此用户会认为自己正在各版本中存储要素类或表,如图3-2所示。然而,无论有多少个版本,各表和要素类将仅在数据库中存储一次。ArcGIS会保留各要素类或表的原始格式,但会在被称为增量表的表中记录所有更改内容

    图3-2 ArcGIS版本管理

    3.1.3 地理数据库与事务处理

    关系型数据库的核心思想就是事务处理。事务是指应用程序定义的、对数据库执行的工作单元。

    3.3 ArcGIS版本变化表解析

    3.3.1 注册版本

    如果用户使用PL/SQL等Oracle客户端工具来查看ArcSDE地理数据库,经常会看到A<n>、D<n>的表。在ArcSDE中,如果数据注册版本,就会产生两个增量表:增加表A表、删除表D表。(编辑信息呢?)

    根据TABLE_NAME可以查询registration_id(注册ID)。。然后根据registration_id可以查询相关的编辑表、增加表和删除表。

    可以看到registration_id分别为9和10。。根据这两个ID便可以追踪它们的增删改查记录

    查看表结构,Oracle中使用desc A74;在SQL Server中使用sp_help A74;

    A表:https://www.cnblogs.com/2008nmj/p/15118696.html

    3.3.2 数据编辑

    1. 新增数据

    当用户进行数据新增的编辑行为时,新增的数据并不会直接在Base表中体现,而是在相关的A表中添加相关的记录,然后存储当前的编辑状态ID值。

    2. 删除数据

    如图所示,当用户进行数据删除的编辑行为时,同样相关的数据并不会直接在Base表中移除,系统会在D表中存储删除信息,先记录删除的编辑状态值,该要素的ObjectID值也被记录,但是当前的SDE_STATE_ID为0,这说明该记录是存储在Base表中的,如果用户删除ObjectID为6的要素,那么相关的SDE_STATE_ID值则为27 505。

    3. 更新数据

    https://www.cnblogs.com/2008nmj/p/15118696.html(geodatabase版本化更新)

    3.3.3 创建子版本

    当用户创建一个子版本时,系统会在ArcSDE地理数据库中SDE用户的Versions表中新建一条子版本的相关信息。

    仅仅只是创建一个用户信息吗?难道不创建一个新的视图,或者创建一个新表副本。。?

    https://www.cnblogs.com/2008nmj/p/15094164.html(ArcSDE版本化管理的好处(应对多用户编辑))

    3.4 ArcGIS版本系统表解析

    前面提到ArcGIS数据编辑会引起增量表信息的变化,这里面关键的一个状态ID并没有解释得非常清楚,这一节就详细解析一下ArcGIS版本系统表,如图3-24所示。

    这里主要介绍STATES、STATE_LINEAGES、MVTABLES_MODIFIED三个重要的表。

    1. STATES

    STATES表包含状态元数据,它指示一段时间内创建的状态,还有每个状态的创建时间、关闭时间、父状态以及所有者。每创建一个状态,都会指定状态ID并且会在该表中添加一条记录。用户的每一个编辑行为都会以一个状态ID来表示。

    2. STATE_LINEAGES

    STATE_LINEAGES表用于存储各状态的谱系,为每个版本创建一个新的谱系名称。每添加一个状态时,都会添加谱系名称和状态ID。当添加的状态是新版本时,还会添加父状态的祖先状态谱系(包括该谱系名称)。要返回某个版本的正确视图,通过查询其状态谱系即可识别每次对该版本进行更改时所记录的所有状态。通过此状态列表,可确定正确表示版本的表行。

    3. MVTABLES_MODIFIED

    每次在某个状态下修改要素类或表时,都会在MVTABLES_MODIFIED表中创建一个新条目。对两个版本进行协调时,此过程的第一个步骤是识别这两个版本引用的状态——当前编辑版本的状态和目标版本的状态。根据这些状态,通过追踪这两个版本的状态谱系可识别公共祖先状态。

    3.4.1 直接编辑Default版本

    下面以多个事务并发编辑Default版本为例来分析一下版本状态表的关系,如图3-25所示。

    (1)分别有三个用户连接到同一个Default版本中,那么可以理解为产生了三个编辑会话,因为版本的状态是由一个相应的序列来获得下一个状态值,所以每一个编辑会话对应一个状态ID。

    (2)当编辑会话1编辑完毕之后,系统会产生一个状态ID(4)来记录编辑会话1的结束状态,而且作为Default版本当前的状态ID。

    (3)当编辑会话2编辑完毕后,系统会新产生一个状态ID(5)来记录编辑会话2的结束状态。因为编辑的是同一个版本,系统会自动协调,然后产生一个协调后的状态ID(6)作为Default版本当前的状态ID。

    (4)如果编辑会话2继续编辑的话,就会在当前Default版本的状态ID(6)的基础上新产生一个状态ID(7)。

    (5)当编辑会话3编辑完毕之后,协调Default版本产生一个新的状态ID(8),作为Default版本当前的状态ID。

    (6)当编辑会话2有一次完成编辑操作后,保存编辑状态,在自动协调后产生一个新的状态ID(9)来作为Default版本当前的状态ID。

    3.4.2 多版本编辑

    前面提到的是直接编辑Default版本,但是在现实业务中,用户使用更多的是多版本的并发编辑。连接ArcSDE地理数据库,默认连接的是SDE.Default版本,创建继承Default版本的两个子版本V1、V2,如图3-26所示。

    select NAME,STATUS,STATE_ID from sde.SDE_versions;

    两个子版本都会继承Default版本的状态ID(144),相关的当前状态(Status)信息为1,表明该版本没有进行过协调和提交操作。

     接下来两个用户分别连接对应的子版本,在V1版本中进行了新增操作(145),修改操作(147),在V2版本中进行了删除操作(146),修改操作(148),所有的这些操作行为都会在状态表中以State_ID值进行存储,如图3-27所示。

    select STATE_ID,OWNER,CREATION_TIME,CLOSING_TIME from sde.sde_states;
    select LINEAGE_NAME,LINEAGE_ID from sde.SDE_state_lineages;

     系统中创建了两个子版本,所以在STATE_LINEAGES表中都会继承Default版本的状态ID。当版本V1进行编辑时,从Default版本继承下的编辑状态144值就是V1在族系表中区别各个子版本的LINEAGE_NAME,那么在V1版本下所有的编辑行为都会存储在LINEAGE_NAME为144的对应的行,例如新增145、修改147.同理,在V2版本进行编辑时,会将当前的编辑状态值146作为V2在族系表中区别各个子版本的LINEAGE_NAME。从此可以看出ArcSDE是如何来区分各个版本数据和相应版本对应的不同的编辑状态的。系统可以根据相关的状态值,在A表、D表、Base表中找到相应的图形和属性数据。

    当V1版本编辑完毕之后,需要将V1数据更新到Default版本中。将V1版本与Default版本进行协调,如图3-28所示。

    其实,解析ArcGIS版本系统表并不是让用户掌握ArcGIS版本表以及状态的逻辑关系,更多的是让用户了解ArcGIS版本机制,不建议用户使用该方法来解决实际出现的版本编辑的相关问题。

    3.5 ArcGIS版本业务类型

    3.5.1 直接编辑Default版本

    一般情况下,如果用户的编辑量比较多,需要实时获得最新版本的数据,而且这些数据的严密性没有那么高的话,用户可以选择直接编辑Default版本,如图3-29所示。

    ArcSDE地理数据库支持最简单的编辑方式就是多用户直接编辑Default版本。在任一用户编辑Default版本时,

  • 相关阅读:
    python之《set》
    python之 《zip,lambda, map》
    python之 socketserver模块的使用
    iOS FMDB小试了一下
    人生要自强不息-路遇瞎子感悟
    iOS Node Conflict svn冲突
    iOS 隐藏Status Bar
    iOS NSURLSession 封装下载类
    iOS NSFileManager
    iOS prototype Cells
  • 原文地址:https://www.cnblogs.com/2008nmj/p/15109173.html
Copyright © 2011-2022 走看看