需求:

在ArcGIS项目中,大型的数据库都是使用ArcSDE进行连接管理。使用的数据版本(Version)都是默认版本(sde.default)。这样多个人员在编辑的过程中就直接编辑的是默认版本数据。只要能够连接数据库就可以对默认版本进行随意的更改。一旦编辑保存到数据库之后就无法更改,除非有数据库备份,使数据编辑变得不灵活。

解决方案:

ArcGIS是有数据版本就出来了。数据库版本可以以默认版本(sde.default)为模板,创建多个子版本(Version)。然后用户编辑子版本的时候对父版本没有任何的影响。当数据编辑完后,确认数据编辑没有问题就可以将数据提交到默认版本(sde.default)。

环境:WIN10+ArcEngine10.1+ArcMap 10.1

资源:

ArcGIS Engine开发的ArcGIS 版本管理的功能

ArcGIS帮助文档-使用版本化数据

资源上面说的很清楚了,我就不重复了,说说开发中遇到的坑吧

1、创建版本(Version)所需权限

创建版本的时候需要GeodatabaseGDB的权限,如果没有在调用CreateVersoin方法的时候会出现如下错误:The application is not licensed to perform this operation

这个时候需要在LicenseControl控件勾选如下许可:

或者在代码许可注册的地方写成如下许可:

 bool b = m_AOLicenseInitializer.InitializeApplication(
new esriLicenseProductCode[] { esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB },
new esriLicenseExtensionCode[]
{
esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst,
esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst
});

PS:

许可注册的时候只能注册一次,第二次无效。所以要确保第一次注册的许可能够创建版本。

2、子版本(Version)数据提交

在提交数据的时候,需要使用ArcEngine的IEngineEditor接口打开编辑,在调用StartEditing方法时需要传如工作空间(IWorkspace)和地图对象(IMap)。这里的工作空间需要和当前地图版本的工作空间统一(不同版本也存在各自的工作空间),否则调用StartEditing方法时会报错。所以在提交版本数据的时候需要将地图中的数据版本切换到当前提交的版本。

提交版本时需要调用Reconcile4方法进行冲突验证,否侧调用CanPost为false。验证冲突后如过有冲突需要马上解决,否则系统会自动解决冲突。

3、子版本数据编辑

如果使用ArcEngine开发的代码进行数据编辑,在编辑的时候需要调用IWorkspaceEdit的StartOperation方法,编辑结束后调用StopOperation方法。如果不调用该方法,编辑的数据会自动保存到父版本。

4、注册数据

编辑数据的时候需要注册数据,否则无法编辑数据,注册方法如下:

点击后会出现如下对话框,该对话框中的复选框比较重要:

"是否将该注册的图层编辑的基表内容进行同步"

因为新增版本相当于在数据库中插入了一条记录,用于该版本数据编辑时做记录。基表指的是父版本,如果勾选了,如果编辑了父版本的内容,当提交该版本的时候,父版本的其它子版本的父版本数据也会随之改变。这样造成冲突的情况就很很少。

如果不勾选,子版本提交的内容不会对其他子版本有任何影响,所以建议不勾选。

这里会产生疑问:如果两个字版本都编辑了父版本的相同内容。他们依次提交不会产生冲突么。

如果在注册数据的时候勾选了复选框,就不会产生冲突。因为一个子版本提交后。另一个的子版本的父版本数据也随之同步。这样就不会产生冲突。如果不勾选,就会产生冲突,这个时候就可以使用ArcGIS的冲突解决机制了。

ArcEngine版本管理(Version)项目总结的更多相关文章

  1. 10 Maven 版本管理

    Maven 版本管理 一个健康的项目通常有一个长期.合理的版本演变过程.例如 Maven 本身的版本也比较多,如最早的 Maven1:Maven2 有 2.0.9.2.0.10.2.1.0.2.2.0 ...

  2. 《Maven实战》第13章 版本管理

    版本管理:项目整体版本的演变过程的管理,如从1.0-SNAPSHOT到1.0,再到1.1-SNAPSHOT 版本控制:借助版本控制工具追踪代码的每一个变更 13.1什么是版本管理 版本管理:项目整体版 ...

  3. Maven项目中的pom.xml详解【转】

    什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url, ...

  4. [BI项目记]-对项目文件进行规划

    BI项目中会有很多不同种类的项目,此篇会对这些项目进行一个总结,并且在TFS中进行分类. 根据笔者对BI项目的经验和理解,主要将BI项目中的项目类型进行如下分类: DB脚本 DB脚本是BI项目中重要的 ...

  5. Maven项目pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. 规范化的软件项目演进管理--从 Github 使用说起

    规范化的软件项目演进管理 从 Github 使用说起 1   前言 首先,本文的层次定位是:很基本很基础的 Github 工具的入门级应用,写给入门级的用户看的. 基本上工作过几年的人,下面描述的这些 ...

  7. 项目开发之使用 maven

    本文将详述 maven 在软件项目中的使用.首先讲述 maven 的基本工作原理及环境的搭建.然后讲述开发及配置管理人员如何使用 maven,最后将介绍 maven 与 eclipse 集成使用. m ...

  8. 使用maven编译Java项目 http://www.tuicool.com/articles/YfIfIrq

    使用maven编译Java项目 时间 2014-07-17 17:42:37  Way Lau's Blog 原文  http://www.waylau.com/build-java-project- ...

  9. Maven实战(二)构建简单Maven项目

    上一节讲了maven的安装和配置,这一节我们来学习一下创建一个简单的Maven项目 1. 用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: mvn archetype:gene ...

随机推荐

  1. H3C 虚拟模板方式配置PPP MP

  2. 微软的可疑更新DhMachineSvc.exe

    最近微软大范围的推出了一个只针对中国的更新,包含了DhMachineSvc.exe,也就是所谓的'微软设备健康助手服务'. 这个更新很神秘,首先这个更新只针对中国区,其次这个更新支持WinXP,第三这 ...

  3. gyp verb check python checking for Python executable "python2" in the PATH

    缺少python2.7支持 可快速使用以下语句完成安装 npm install --global --production windows-build-tools 到时候会自动下载python的 如果 ...

  4. Vue 父组件往子组件传递方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. CSS3 box-sizing 盒子布局

    在CSS中盒模型被分为两种,第一种是W3C的标准模型,第二种是IE怪异盒模型.不同之处在于后者的宽高定义的是可见元素框的尺寸,而不是元素框的内容区尺寸.目前对于浏览器大多数元素都是基于W3C标准的盒模 ...

  6. springboot+nginx+https+linux实现负载均衡加域名访问简单测试

    把springboot项目打包成三个jar包,并指定端口为 14341,14342,14343 下载腾讯云免费ssl证书,解压后会出现如下图文件夹 把nginx文件夹下的 .crt 和 .key文件复 ...

  7. activiti工作流引擎学习(三)

    5.接收任务活动(receiveTask,即等待活动)不是一个任务节点 接收任务是一个简单任务,他会等待回应消息的到达,当前,官方只实现了这个任务的java语义,当流程达到接受任务,流程状态会保存到数 ...

  8. dotnet core 隐藏控制台

    如果写一个控制台程序,需要隐藏这个控制台程序,可以使用本文的方法 如果是在 Windows 下运行, 可以使用一些系统提供的方法隐藏控制台.如果是 Linux 下,都是控制台,就不用隐藏了 复制下面的 ...

  9. vs2019 解决方案加载报错

    1. 如图 解决方案: 1.先关闭vs: 2.把C:/Users/<users name>/AppData/Local/Microsoft/VisualStudio/14.0/Compon ...

  10. SNOI2019

    题解: t1: 想了一会才会.. 以为是啥最小表示法之类的..然后这个我又不会 其实只要考虑一下a[i],a[i+1]之间的大小关系就行了 t2: 好像和题解不太一样.. 我的做法比较麻烦.. 枚举A ...