版权声明:本文为博主原创文章,不需博主允许即可随意转载。 https://blog.csdn.net/a_dev/article/details/88599649
ArcGIS版本压缩功能设计与开发
目录
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"