New to Python need on advice on this script

Jim Valenza jim.valenza at gmail.com
Tue Nov 10 14:33:16 EST 2009


Hello all - I'm new to the world of Python as I am a GIS guy who would like
to broaden his horizons. I have a question about a script that we've been
working on: The purpose of the code is to *Syncronize SDE DropBox with
Regulatory Project working files.

I am looking for where the script dumps the domain list to a table and loops
through the table? Is It necessary? Seems like you should be able to simply
loop through the domain list. I was just trying to see if there was a more
straitforward way. Thanks

The script is as follows:*
**
# Create the Geoprocessor
import sys, string, os, arcgisscripting, shutil, time
gp = arcgisscripting.create()
# Jim V testing
# Allow output to overwrite
gp.OverwriteOutput = 1
gp.AddToolbox("C://Program Files//ArcGIS//ArcToolbox//Toolboxes//Data
Management Tools.tbx")
#---create a logging file named "YYYYMMDD HH_MM_QualityControlLog.txt"
theTime = time.strftime('%Y%m%d %H_%M')
#logfilename = "H:\\Development\\Python\\" + theTime + "_PODsQAQCLog.txt"
logfilename =
"L:\\SharedData\\Denver\\Regulatory\\GIS\\Powder_River_Basin\\Pipeline\\QAQC_Scripts\\"
+ theTime + "_PODsQAQCLog.txt"
log = open(logfilename,'w')
log.write(time.ctime() + "\n")
print time.ctime()
THE_WORKSPACE =
os.path.normpath("L:/SharedData/Denver/Regulatory/GIS/Powder_River_Basin") +
"\\"  #REAL MODE LINE
#THE_WORKSPACE = os.path.normpath("H:/Development/testdata") + "\\"  #TEST
MODE LINE
log.write("THE_WORKSPACE IS " + THE_WORKSPACE + "\n")
print "THE_WORKSPACE IS " + THE_WORKSPACE
P_CODE = "P_CODE"
#Create table of valid P_CODEs and convert to List
gp.DomainToTable_management(r"L:\SharedData\Denver\Regulatory\GIS\Powder_River_Basin\GIS_Data\RMP_Current_Geodatabase\rmp_2_5.mdb",
\
                            "regulatory_p_code",
r"L:\SharedData\Denver\Regulatory\GIS\Powder_River_Basin\Pipeline\QAQC_Scripts\test.mdb\code_table",
\
                            "pcode", "pdesc", "")
#searchRows = gp.searchCursor(r"H:\Development\temp\test.mdb\code_table")
searchRows =
gp.searchCursor(r"L:\SharedData\Denver\Regulatory\GIS\Powder_River_Basin\Pipeline\QAQC_Scripts\test.mdb\code_table")
searchRow = searchRows.next()
domainList = []
while searchRow:
    domainList.append(searchRow.pcode)
    searchRow = searchRows.next()
#print domainList
try:
    #Get Workspaces from text file
    #for line in open("H:/Development/testdata/PRB_POD_Paths.txt", 'r'):
#REAL MODE LINE
    for line in
open("L:/SharedData/Denver/Regulatory/GIS/Powder_River_Basin/Pipeline/QAQC_Scripts/PRB_POD_Paths.txt",
'r'):   #REAL MODE LINE
    #for line in open("H:/Development/testdata/workspaces.txt", 'r'):
#TEST MODE LINE
        if not line: break
        line = line.strip()
        if not line.startswith("#"): # skip lines that start with #
            ws, P = line.split("RMP_2_5_",1) #parse line to get path and
P_CODE
            log.write("  " + "\n")
            log.write("  " + "\n")
            log.write(P + "\n")
            print "  "
            print P
            src = THE_WORKSPACE + line  #defines each workspace path

            #If the Geodatabase exists, perform the operations
            if os.path.exists(src):
                #Archive Geodatabase before running script
                log.write("The Geodatabase exists " + src + "\n")
                print "The Geodatabase exists " + src
                archiveFolder = THE_WORKSPACE + ws + "Archive" + "\\" +
"RMP_2_5_" + P
                log.write("archiveFolder is " + archiveFolder + "\n")
                print "archiveFolder is " + archiveFolder
                shutil.copy(src, archiveFolder)    #Archive the Geodatabase
                #Set workspace and variables
                gp.workspace = src
                log.write(gp.workspace + "\n")
                print gp.workspace
                P_Value = (P.strip(".mdb"))
                #Valitate P_Code value against Domain list
                if P_Value in domainList:
                    log.write("P_Code is valid:  " + P_Value + "\n")
                    print "P_Code is valid:  " + P_Value
                    # List all feature classes in feature datasets
                    fdss = gp.ListDatasets("","")
                    fds = fdss.Next()
                    while fds:
                        fcs = gp.ListFeatureClasses("*","",fds)
                        fc = fcs.Next()
                        while fc:
                            gp.CalculateField_management(fc, P_CODE, "'" +
P_Value + "'", "PYTHON")    #Calc P_Code
                            gp.RepairGeometry(fc,
r"L:\SharedData\Denver\Regulatory\GIS\Powder_River_Basin\Pipeline\QAQC_Scripts\outy.shp")
                            fc = fcs.Next()
                            print fc
                        fds = fdss.Next()
                    #Copy the Geodatabase to the SDE InBox
                    sdeInbox = "S:/Production/DropBox/InBox"   #REAL MODE
LINE
                    #sdeInbox = "H:/Development/testInbox"   #TEST MODE LINE
                    log.write("sdeInbox is " + sdeInbox + "\n")
                    print "sdeInbox is " + sdeInbox
                    shutil.copy(src, sdeInbox)     #Copy Geodatabase to SDE
Inbox
                else:
                    log.write("P_Code is NOT valid:  " + P_Value + "\n")
                    print "P_Code is NOT valid:  " + P_Value
            else:
                log.write("The Geodatabase does not exist " + src + "\n")
                print "The Geodatabase does not exist " + src
except:
    # If an error occurred, print the messages returned by the tool
    log.write(gp.GetMessages() + "\n")
    print gp.GetMessages()
log.write(time.ctime() + "\n")
log.write("FINISHED" + "\n")
os.startfile("L:\\SharedData\\Denver\\Regulatory\\GIS\\Powder_River_Basin\\Pipeline\\QAQC_Scripts\\")
log.close()
print "FINISHED"
print time.ctime()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20091110/59fe8090/attachment.html>


More information about the Python-list mailing list