Script & Tool之Compress & Analyze
Arcpy(arcgis10+python2.6) 改编
# This script is designed to compress an SDE Geodatabase and then
# loop through and analyze the statistics of each feature dataset, view,feature class and table.
# It is designed to log the entire process to a text file and
# if there are any errors during the process the script will email a specified address.
# Created by tony.gu - tony.gu@gisinfo.com
# Last Modified on 11/08/11
import arcpy, time, smtplib
from arcpy import env
compress_workspace=arcpy.GetParameterAsText(0)
analyze_workspace=arcpy.GetParameterAsText(1)
env.workspace=compress_workspace
Date = time.strftime("%m-%d-%Y", time.localtime())# Set the date.
Time = time.strftime("%I:%M:%S %p", time.localtime())# Set the time.
print "Process started at " + str(Date) + " " + str(Time) + "." + "\n"
# Set up the log file.
LogFile = file('C:\\ArcScripts\\GIS-' + Date + '.txt', 'w') #Creates a log file with todays date.
output = open('C:\\ArcScripts\\GIS-' + Date + '.txt', 'w') #Path to log file.
output.write(str("GISINFO"+"\n"+"Process started at " + str(Date) + " " + str(Time) + "." + "\n")) # Write the start time to the log file.
try:
# Compress the database
print "Begining Compress..." + "\n"
arcpy.Compress_management(compress_workspace)
print arcpy.GetMessages() + "\n"
output.write(arcpy.GetMessages()+ "\n")
except:
#Sets up the email parameters
From = "Geoprocessor"
To = ["tony.gu@gisinfo.com"]
Date = time.ctime(time.time())
Subject = "Error Compressing the GIS Database"
Text = arcpy.GetMessages()
#Format mail message
mMessage = ('From: %s\nTo: %s\nDate: %s\nSubject: %s\n%s\n' %
(From, To, Date, Subject, Text))
print 'Connecting to Server'
s = smtplib.SMTP('smtp.ym.163.com') # This needs to be set to your email server.
#Send Email
rCode = s.sendmail(From, To, mMessage)
s.quit()
if rCode:
print 'Error Sending Message'
else:
print 'Message sent sucessfully'
env.workspace=analyze_workspace
try:
# Loop through and analyze all Feature datasets
FCList = arcpy.ListFeatureClasses ("*", "all")
for FC in FCList:
arcpy.Analyze_management(FC, "BUSINESS;FEATURE;ADDS;DELETES")
print arcpy.GetMessages() + "\n"
output.write(arcpy.GetMessages()+ "\n")
DSList = arcpy.ListDatasets ("*", "all")
for DS in DSList:
arcpy.Analyze_management(DS, "BUSINESS;FEATURE;ADDS;DELETES")
print arcpy.GetMessages() + "\n"
output.write(arcpy.GetMessages())
# Loop through and analyze all the Tables.
# The if-else statements set the script to skip over Multi-Versioned Views.
TBList = arcpy.ListTables ("*", "all")
for TB in TBList:
if '_MVVIEW' in TB:
print "Skipping Multi-Versioned View"
elif '_MVView' in TB:
print "Skipping Multi-Versioned View"
else:
arcpy.Analyze_management(TB, "BUSINESS;FEATURE;ADDS;DELETES")
print arcpy.GetMessages() + "\n"
output.write(arcpy.GetMessages())
except:
print arcpy.GetMessages()
output.write(arcpy.GetMessages())
#Sets up the email parameters
From = "Geoprocessor"
To = ["tony.gu@gisinfo.com"]
Date = time.ctime(time.time())
Subject = "Error Analyzing the GIS Database"
Text = arcpy.GetMessages()
#Format mail message
mMessage = ('From: %s\nTo: %s\nDate: %s\nSubject: %s\n%s\n' %
(From, To, Date, Subject, Text))
print 'Connecting to Server'
s = smtplib.SMTP('smtp.ym.163.com')
#Send Email
rCode = s.sendmail(From, To, mMessage)
s.quit()
if rCode:
print 'Error Sending Message'
else:
print 'Message sent sucessfully'
# Sets the Date & Time since the script started.
Date = time.strftime("%m-%d-%Y", time.localtime())# Set the date.
Time = time.strftime("%I:%M:%S %p", time.localtime()) # Set the time.
output.write(str("Process completed at " + str(Date) + " " + str(Time) + "." + "\n")) # Write the start time to the log file.
output.close() # Closes the log file.
print "Process completed at " + str(Date) + " " + str(Time) + "."
转载自:https://blog.csdn.net/gisinfo/article/details/6688257