Instrução

Automatizar processos de reconciliação, postagem e compactação

Last Published: January 14, 2021

Resumo

Reconciliar e postar versões em um fluxo de trabalho de controle de versão de várias camadas, como secundário para primário para padrão, seguido de compactação, é um fluxo de trabalho típico executado por administradores ou gerentes de GIS.

Nota: Este artigo se refere apenas ao ArcGIS da versão 10.0. Versões posteriores do ArcGIS podem conter diferentes funcionalidades, bem como diferentes nomes e locais para menus, comandos e ferramentas de geoprocessamento.
Nota: O software ArcSDE, incluindo o servidor de aplicativos, ferramentas de comando e SDK com APIs C e Java, foi descontinuado no ArcGIS 10.2.2 e não é mais distribuído. Os recursos do software ArcGIS foram descontinuados, ao invés de removidos imediatamente, para fornecer aos clientes compatibilidade com versões anteriores e dar o aviso com a maior antecedência possível para a adoção de tecnologia mais recente.

Procedimento

O script Python abaixo fornece um método para automatizar o fluxo de trabalho de reconciliação, postagem e compactação. O fluxo de trabalho assume três camadas (padrão> primário> secundário), de forma que as versões secundárias sejam reconciliadas com as versões primárias e as versões primárias sejam reconciliadas com o padrão.

Nota: O script também compacta o geodatabase para o estado 0, exclui todas as versões, exceto DEFAULT e recria as versões secundárias.
  1. Modifique a variável vtree no script de acordo com a árvore de versão.Por exemplo, preencha as versões primária e secundária da seguinte maneira: 'Pai': 'Filho', etc. Não liste DEFAULT.

    No exemplo abaixo, a versão chamada SDE.Child é uma versão secundária de SDE.Parent. A versão chamada SDE.Edit é uma versão secundária do SDE.QA.
vTree = {'SDE.Parent':'SDE.Child','SDE.QA':'SDE.Edit'}
  1. Defina a variável do espaço de trabalho para fazer referência ao caminho para o arquivo de conexão sde. Certifique-se de que o usuário do arquivo de conexão sde seja o Administrador SDE:
workspace = r"Database Connections\MXD2.sde"
  1. Defina a variável defaultVersion para fazer referência a dbo.DEFAULT ou sde.DEFAULT de acordo com o ambiente.
defaultVersion = "sde.DEFAULT"
  1. Por fim, defina as variáveis ​​de registro de acordo com sua preferência, ou seja, a convenção de nomenclatura e a localização dos registros.
logName = "RecPostLog.txt" logName2 = "RecPostDefaultLog.txt" logName3 = "CompressLog.txt" logWorkspace = r"C:\temp"
#Reconciliar e postar versões em 10.0 import arcpy, os, sys, string #Preencha as versões pai e filho da seguinte maneira ('Pai':'Filho', etc.). DO NOT LIST DEFAULT vTree = {'SDE.Parent':'SDE.Child','SDE.QA':'SDE.Edit'} #Reconcilie e publique versões filho com pai 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 #Reconcilie e publique com o pai def RecPostDefault(workspace,logWorkspace,logName2,defaultVersion): outLog = open(os.path.join(logWorkspace, logName2), 'w') #Reconcilie e publique pais com 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 "Reconciliando e postando {0} em DEFAULT".format(key) outLog.write("Reconciliando e postando {0} em 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 ("Banco de dados compactado {0}".format(workspace)) outLog.write("Banco de dados compactado {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 "Versão criada {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 do Artigo:000011679

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com suporte técnico

Baixe o Esri Support App

Ir para opções de download

Informações Relacionadas

Descubra mais sobre este tema