一个使用C#和ArcPy实现的版本压缩工具(二)


目录

ArcPy实现的版本压缩功能

普通压缩

import arcpy
import sys

print "Start a Compress Session (Mode: Normally)"
print "Get Connection Information from Parameter..."

sde_workspace = sys.argv[1]

print "SDE Workspace: {0}".format(sde_workspace)

print "Compress Versions..."

arcpy.Compress_management(sde_workspace)

arcpy.FeatureClassToFeatureClass_conversion()

print "End a Compress Session (Mode: Normally)"

自动压缩

import arcpy
import sys

print "Start a Compress Session (Mode: Automatically)"

print "Get Connection Information from Parameter..."

sde_workspace = sys.argv[1]

print "SDE Workspace: {0}".format(sde_workspace)

arcpy.env.workspace = sde_workspace
workspace = arcpy.env.workspace

conflict_definition = "BY_OBJECT" if sys.argv[2] == "0" else "BY_ATTRIBUTE"

print "Conflict Definition: {0}".format(conflict_definition)

conflict_resolution = "FAVOR_TARGET_VERSION" if sys.argv[3] == "0" else "FAVOR_EDIT_VERSION"

print "Conflict Resolution: {0}".format(conflict_resolution)

print "Prevent any Other Users to Connect "

arcpy.AcceptConnections(sde_workspace, False)

print "Disconnect Any Other Connections exclude SDE user"

arcpy.DisconnectUser(sde_workspace, "ALL")

print "Get Child Version List "

versionList = arcpy.ListVersions(sde_workspace)

print "Post Data from Children Versions to DEFAULT Version "

arcpy.ReconcileVersions_management(sde_workspace, "ALL_VERSIONS", "sde.DEFAULT", versionList, "NO_LOCK_ACQUIRED",
                                   "NO_ABORT", conflict_definition, conflict_resolution,
                                   "POST", "KEEP_VERSION", None)

print "Compress Versions "

arcpy.Compress_management(sde_workspace)

print "Accept Connections "

arcpy.AcceptConnections(sde_workspace, True)

print "Get Administrative User Name "

userName = arcpy.Describe(workspace).connectionProperties.user

print "Get Data Object List "

dataList = arcpy.ListTables('*.' + userName + '.*') + arcpy.ListFeatureClasses(
    '*.' + userName + '.*') + arcpy.ListRasters('*.' + userName + '.*')

print "Get Data Objects in DataSet"

for data_set in arcpy.ListDatasets('*.' + userName + '.*'):
    dataList += arcpy.ListFeatureClasses(feature_dataset=data_set)

print "Rebuild Spatial Indexes "

arcpy.RebuildIndexes_management(workspace, "SYSTEM", dataList, "ALL")

print "Analyze DataSet "

arcpy.AnalyzeDatasets_management(workspace, "SYSTEM", dataList, "ANALYZE_BASE", "ANALYZE_DELTA", "ANALYZE_ARCHIVE")

print "End a Compress Session (Mode: Automatically)"

彻底压缩

import arcpy
import sys

print "Start a Compress Session (Mode: Completely)"
print "Get Connection Information from Parameter..."

sde_workspace = sys.argv[1]

print "SDE Workspace: {0}".format(sde_workspace)

arcpy.env.workspace = sde_workspace
workspace = arcpy.env.workspace

conflict_definition = "BY_OBJECT" if sys.argv[2] == "0" else "BY_ATTRIBUTE"

print "Conflict Definition: {0}".format(conflict_definition)

conflict_resolution = "FAVOR_TARGET_VERSION" if sys.argv[3] == "0" else "FAVOR_EDIT_VERSION"

print "Conflict Resolution: {0}".format(conflict_resolution)

print "Prevent any Other Users to Connect "

arcpy.AcceptConnections(sde_workspace, False)

print "Disconnect Any Other Connections exclude SDE user's "

arcpy.DisconnectUser(sde_workspace, "ALL")

print "Get Child Version List"

versionList = arcpy.ListVersions(sde_workspace)

print "Post Data from Children Versions to DEFAULT Version"

arcpy.ReconcileVersions_management(sde_workspace, "ALL_VERSIONS", "sde.DEFAULT", versionList, "LOCK_ACQUIRED",
                                   "NO_ABORT", "BY_OBJECT", "FAVOR_TARGET_VERSION",
                                   "POST", "DELETE_VERSION", None)

print "Delete Children Versions "

for version in versionList:
    if version != r"SDE.DEFAULT":
        arcpy.DeleteVersion_management(sde_workspace, version)

print "Compress Versions "

arcpy.Compress_management(sde_workspace)

print "Accept Connections "

arcpy.AcceptConnections(sde_workspace, True)

print "Get Administrative User Name "

userName = arcpy.Describe(workspace).connectionProperties.user

print "Get Data Object List "

dataList = arcpy.ListTables('*.' + userName + '.*') + arcpy.ListFeatureClasses(
    '*.' + userName + '.*') + arcpy.ListRasters('*.' + userName + '.*')

print "Get Data Objects in DataSet"

for data_set in arcpy.ListDatasets('*.' + userName + '.*'):
    dataList += arcpy.ListFeatureClasses(feature_dataset=data_set)

print "Rebuild Spatial Indexes "

arcpy.RebuildIndexes_management(workspace, "SYSTEM", dataList, "ALL")

print "Analyze DataSet "

arcpy.AnalyzeDatasets_management(workspace, "SYSTEM", dataList, "ANALYZE_BASE", "ANALYZE_DELTA", "ANALYZE_ARCHIVE")

print "End a Compress Session (Mode: Completely)"

ArcPy实现的其他功能

协调版本

import arcpy
import sys

print "Start a Reconciling Session"

print "Get Connection Information from Parameter..."

sde_workspace = sys.argv[1]

print "SDE Workspace: {0}".format(sde_workspace)

arcpy.env.workspace = sde_workspace
workspace = arcpy.env.workspace

conflict_definition = "BY_OBJECT" if sys.argv[2] == "0" else "BY_ATTRIBUTE"

print "Conflict Definition: {0}".format(conflict_definition)

conflict_resolution = "FAVOR_TARGET_VERSION" if sys.argv[3] == "0" else "FAVOR_EDIT_VERSION"

print "Conflict Resolution: {0}".format(conflict_resolution)

print "Get Child Version List "

versionList = arcpy.ListVersions(sde_workspace)

print "Post Data from Children Versions to DEFAULT Version "

arcpy.ReconcileVersions_management(sde_workspace, "ALL_VERSIONS", "sde.DEFAULT", versionList, "NO_LOCK_ACQUIRED",
                                   "NO_ABORT", conflict_definition, conflict_resolution,
                                   "POST", "KEEP_VERSION", None)

print "End a Reconciling Session"

删除所有子版本

import arcpy
import sys

print "Start a Deleting Session"

print "Get Connection Information from Parameter..."

sde_workspace = sys.argv[1]

print "SDE Workspace: {0}".format(sde_workspace)

arcpy.env.workspace = sde_workspace
workspace = arcpy.env.workspace

print "Get Child Version List "

versionList = arcpy.ListVersions(sde_workspace)

for version in versionList:
    if version != r"SDE.DEFAULT":
        print "Delete Version: {0}".format(version)
        arcpy.DeleteVersion_management(sde_workspace, version)

print "End a Deleting Session"

重建空间索引

import arcpy
import sys

print "Start a Rebuilding Indexes Session"
print "Get Connection Information from Parameter..."

sde_workspace = sys.argv[1]

print "SDE Workspace: {0}".format(sde_workspace)

arcpy.env.workspace = sde_workspace
workspace = arcpy.env.workspace

print "Get Administrative User Name "

userName = arcpy.Describe(workspace).connectionProperties.user

print "Get Data Object List "

dataList = arcpy.ListTables('*.' + userName + '.*') + arcpy.ListFeatureClasses(
    '*.' + userName + '.*') + arcpy.ListRasters('*.' + userName + '.*')

print "Get Data Objects in DataSet"

for data_set in arcpy.ListDatasets('*.' + userName + '.*'):
    dataList += arcpy.ListFeatureClasses(feature_dataset=data_set)

print "Rebuild Spatial Indexes "

arcpy.RebuildIndexes_management(workspace, "SYSTEM", dataList, "ALL")

print "End a Rebuilding Indexes Session"

分析数据集

import arcpy
import sys

print "Start a Analyzing Datasets Session"
print "Get Connection Information from Parameter..."

sde_workspace = sys.argv[1]

print "SDE Workspace: {0}".format(sde_workspace)

arcpy.env.workspace = sde_workspace
workspace = arcpy.env.workspace

print "Get Administrative User Name "

userName = arcpy.Describe(workspace).connectionProperties.user

print "Get Data Object List "

dataList = arcpy.ListTables('*.' + userName + '.*') + arcpy.ListFeatureClasses(
    '*.' + userName + '.*') + arcpy.ListRasters('*.' + userName + '.*')

print "Get Data Objects in DataSet"

for data_set in arcpy.ListDatasets('*.' + userName + '.*'):
    dataList += arcpy.ListFeatureClasses(feature_dataset=data_set)

print "Analyze DataSet "

arcpy.AnalyzeDatasets_management(workspace, "SYSTEM", dataList, "ANALYZE_BASE", "ANALYZE_DELTA", "ANALYZE_ARCHIVE")

print "End a Analyzing Datasets Session"

转载自:https://blog.csdn.net/a_dev/article/details/88599649

You may also like...