操作方法

操作方法:自动化协调、发布和压缩进程

Last Published: January 14, 2021

摘要

在多层版本控制工作流中协调和发布版本(例如辅助 > 主要 > 默认 > 压缩)是 GIS 管理员执行的典型工作流。

注: 本文仅适用于 ArcGIS 10.0 版本。 更高版本的 ArcGIS 可能包含不同的功能,对于菜单、命令和地理处理工具,可能具有不同的名称和位置。
注: ArcSDE 软件(包括应用程序服务器、命令工具以及带有 C 和 Java API 的 SDK)在 ArcGIS 10.2.2 中已弃用,不再进行分发。 ArcGIS 软件功能已弃用,但是不会立即将其移除,以便为客户提供向后兼容性,并且尽可能多地提前通知以采用更新的技术。

过程

以下 Python 脚本提供了一种方法,用于自动化协调、发布和压缩工作流。 该工作流假设为三层(默认 > 主要 > 辅助),因此,将针对主要版本来协调辅助版本,并针对默认版本来协调主要版本。

注: 该脚本还会将地理数据库压缩为状态 0,删除 DEFAULT 之外的所有版本,并重新创建辅助版本。
  1. 根据版本树修改脚本中的 vtree 变量。 例如,可以按照以下方式来填充主要版本和辅助版本:'Parent':'Child' 等。请勿列出 DEFAULT。

    在以下示例中,名为 SDE.Child 的版本是 SDE.Parent 的辅助版本。 名为 SDE.Edit 的版本是 SDE.QA 的辅助版本。
vTree = {'SDE.Parent':'SDE.Child','SDE.QA':'SDE.Edit'}
  1. 设置工作空间变量以引用 sde 连接文件的路径。 确保 sde 连接文件用户为 SDE 管理员:
workspace = r"Database Connections\MXD2.sde"
  1. 根据环境将 defaultVersion 变量设置为引用 dbo.DEFAULT 或 sde.DEFAULT。
defaultVersion = "sde.DEFAULT"
  1. 最后,根据首选项(即日志的命名约定和位置)设置日志记录变量。
logName = "RecPostLog.txt" logName2 = "RecPostDefaultLog.txt" logName3 = "CompressLog.txt" logWorkspace = r"C:\temp"
#Reconcile and posting versions at 10.0 import arcpy, os, sys, string #Populate parent and child versions in the following manner('Parent':'Child', etc). DO NOT LIST DEFAULT vTree = {'SDE.Parent':'SDE.Child','SDE.QA':'SDE.Edit'} #Reconcile and post child versions with parent def RecPostNonDefault(workspace,logWorkspace,logName): outLog = open(os.path.join(logWorkspace, logName), 'w') for key, val in vTree.iteritems(): arcpy.ReconcileVersion_management(workspace, val, key,"BY_OBJECT", "FAVOR_TARGET_VERSION", "NO_LOCK_AQUIRED", "NO_ABORT", "POST") print "Reconciling and posting {0} to {1}".format(val, key) outLog.write("Reconciling and posting {0} to {1}".format(val, key)) outLog.write("\n") outLog.close() del outLog, key, val #Reconcile and post with parent def RecPostDefault(workspace,logWorkspace,logName2,defaultVersion): outLog = open(os.path.join(logWorkspace, logName2), 'w') #Reconcile and post parents with DEFAULT for key, val in vTree.iteritems(): arcpy.ReconcileVersion_management(workspace, key, defaultVersion,"BY_OBJECT", "FAVOR_TARGET_VERSION", "NO_LOCK_AQUIRED", "NO_ABORT", "POST") print "Reconciling and posting {0} to DEFAULT".format(key) outLog.write("Reconciling and posting {0} to DEFAULT".format(key)) outLog.write("\n") outLog.close() del outLog, key, val def DeleteChildVersions(workspace): arcpy.ClearWorkspaceCache_management() for key, val in vTree.iteritems(): arcpy.DeleteVersion_management(workspace, val) print "Deleted {0}".format(val) def DeleteParentVersions(workspace): arcpy.ClearWorkspaceCache_management() for key, val in vTree.iteritems(): arcpy.DeleteVersion_management(workspace, key) print "Deleted {0}".format(key) #Compress database def Compress(workspace,logWorkspace,logName3): arcpy.ClearWorkspaceCache_management() outLog = open(os.path.join(logWorkspace, logName3), 'w') arcpy.Compress_management(workspace) print ("Compressed database {0}".format(workspace)) outLog.write("Compressed database {0}".format(workspace)) outLog.close() def RecreateVersions(workspace, defaultVersion): for key, val in vTree.iteritems(): arcpy.CreateVersion_management(workspace,defaultVersion, key[4:], "PUBLIC") print "Created version {0}".format(key) arcpy.CreateVersion_management(workspace, key, val[4:], "PUBLIC") print "Created version {0}".format(val) if __name__=="__main__": workspace = r"Database Connections\MXD2.sde" defaultVersion = "sde.DEFAULT" logName = "RecPostLog.txt" logName2 = "RecPostDefaultLog.txt" logName3 = "CompressLog.txt" logWorkspace = r"C:\temp" RecPostNonDefault(workspace,logWorkspace,logName) RecPostDefault(workspace,logWorkspace,logName2,defaultVersion) DeleteChildVersions(workspace) DeleteParentVersions(workspace) Compress(workspace,logWorkspace,logName3) RecreateVersions(workspace, defaultVersion)

文章 ID:000011679

从 ArcGIS 专家处获得帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项

相关信息

发现关于本主题的更多内容