CÓMO

Automatizar los procesos de conciliación, publicación y compresión

Last Published: January 14, 2021

Resumen

La conciliación y publicación de versiones en un flujo de trabajo de versionado de varios niveles, por ejemplo, de secundario a principal y a predeterminado seguido de la compresión, es un flujo de trabajo típico que realizan los administradores o administradores de SIG.

Nota: Este artículo corresponde únicamente a las versiones 10.0 de ArcGIS. Es posible que versiones posteriores de ArcGIS incluyan funcionalidades distintas, así como nombres y ubicaciones distintos para menús, comandos y herramientas de geoprocesamiento.
Nota: El software de ArcSDE, incluido el servidor de aplicaciones, las herramientas de comando y el SDK con API de C y Java, quedó obsoleto en ArcGIS 10.2.2 y ya no se distribuye. Las características de software de ArcGIS quedaron obsoletas, en lugar de eliminarlas inmediatamente, para proporcionar a los clientes compatibilidad con versiones anteriores y dar el máximo aviso posible para adoptar tecnología más reciente.

Procedimiento

El script de Python proporciona un método para automatizar el flujo de trabajo de conciliación, publicación y compresión. El flujo de trabajo presupone tres niveles (predeterminado > principal > secundario), de modo que las versiones secundarias se concilian con las principales y las principales se concilian con las predeterminadas.

Nota: El script también comprime la geodatabase al estado 0, elimina todas las versiones excepto DEFAULT y crea de nuevo las versiones secundarias.
  1. Modifique la variable vtree en el script de acuerdo con el árbol de versiones. Por ejemplo, rellene las versiones principal y secundaria del siguiente modo: 'Parent':'Child', etc. No enumere DEFAULT.

    En el ejemplo siguiente, la versión denominada SDE.Child es una versión secundaria de SDE.Parent. La versión denominada SDE.Edit es una versión secundaria de SDE.QA.
vTree = {'SDE.Parent':'SDE.Child','SDE.QA':'SDE.Edit'}
  1. Establezca la variable del espacio de trabajo para que haga referencia a la ruta al archivo de conexión sde. Asegúrese de que el usuario del archivo de conexión sde sea el Administrador de SDE:
workspace = r"Database Connections\MXD2.sde"
  1. Establezca la variable defaultVersion para hacer referencia a dbo.DEFAULT o sde.DEFAULT de acuerdo con el entorno.
defaultVersion = "sde.DEFAULT"
  1. Finalmente, establezca las variables de registro según su preferencia, es decir, el formato de nombre y la ubicación de los registros.
logName = "RecPostLog.txt" logName2 = "RecPostDefaultLog.txt" logName3 = "CompressLog.txt" logWorkspace = r"C:\temp"
#Conciliar y publicar versiones en 10.0 import arcpy, os, sys, string #Rellenar versiones principal y secundaria de la siguiente manera('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. de artículo:000011679

Obtener ayuda de expertos en ArcGIS

Contactar con soporte técnico

Descargar la aplicación de soporte de Esri

Ir a las opciones de descarga

Información relacionada

Descubrir más sobre este tema