HOW TO

Automatisieren von Abgleich-, Zurückschreib- und Komprimierungsvorgängen

Last Published: January 14, 2021

Zusammenfassung

Beim Abgleichen und Zurückschreiben von Versionen in einem mehrstufigen Versionierungs-Workflow, beispielsweise Abgleichen und Zurückschreiben einer Sekundärversion mit einer Primärversion gefolgt von einer Komprimierung, handelt es sich um einen typischen von GIS-Administratoren oder -Managern ausgeführten Workflow.

Hinweis: Dieser Artikel gilt nur für die ArcGIS-Versionen 10.0. Höhere Versionen von ArcGIS enthalten möglicherweise andere Funktionalität sowie andere Namen für Menüs, Befehle und Geoverarbeitungswerkzeuge, die sich auch an anderen Orten befinden können.
Hinweis: Die ArcSDE-Software, einschließlich Anwendungsserver, Befehlswerkzeugen und SDK mit C- und Java-APIs, wird in ArcSDE 10.2.2 nicht mehr unterstützt und nicht mehr ausgeliefert. ArcGIS-Software-Features wurden zwar nicht mehr unterstützt, aber nicht sofort entfernt, um für die Kunden eine Abwärtskompatibilität bereitzustellen und einen möglichst langen Vorlauf für die Implementierung neuerer Technologien zu ermöglichen.

Vorgehensweise

Mit dem folgenden Python-Skript können Sie den Workflow aus Abgleichen, Zurückschreiben und Komprimieren automatisieren. Bei dem Workflow werden drei Stufen angenommen (Standardversion > Primärversion > Sekundärversion), wobei Sekundärversionen mit Primärversionen und Primärversionen mit Standardversionen abgeglichen werden.

Hinweis: Mit dem Skript wird außerdem die Geodatabase auf den Status 0 komprimiert, alle Versionen mit Ausnahme von DEFAULT werden gelöscht, und die Sekundärversionen werden neu erstellt.
  1. Ändern Sie die Variable "vtree" im Skript gemäß der Versionsstruktur. Füllen Sie zum Beispiel Primär- und Sekundärversionen wie folgt auf: "Parent":"Child" usw. Geben Sie nicht DEFAULT an.

    Im folgenden Beispiel ist die Version "SDE.Child" eine Sekundärversion von "SDE.Parent". Die Version "SDE.Edit" ist eine Sekundärversion von "SDE.QA".
vTree = {'SDE.Parent':'SDE.Child','SDE.QA':'SDE.Edit'}
  1. Legen Sie die Variable "workspace" so fest, dass sie den Pfad zur SDE-Verbindungsdatei referenziert. Der Benutzer der SDE-Verbindungsdatei muss der SDE-Administrator sein:
workspace = r"Database Connections\MXD2.sde"
  1. Legen Sie die Variable "defaultVersion" so fest, dass sie der Umgebung entsprechend "dbo.DEFAULT" oder "sde.DEFAULT" referenziert.
defaultVersion = "sde.DEFAULT"
  1. Legen Sie abschließend die Protokollierungsvariablen, das heißt die Namenskonvention und den Speicherort der Protokolle, nach Ihren Wünschen fest.
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)

Artikel-ID:000011679

Hilfe von ArcGIS-Expert*innen erhalten

Technischen Support kontaktieren

Die Esri Support-App herunterladen

Zu den Download-Optionen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden