AnsweredAssumed Answered

Feature Class does not get updated with a Geoprocessing Service

Question asked by ionarawilson on Sep 26, 2013
Latest reply on Oct 17, 2013 by ionarawilson
When I run a python script, the feature class in a SDE feature class gets updated, but when I run a geoprocessing service created from the same script, the same feature class does not get updated. All the fields are blank. Does anybody know why?

        #Import modules         import os, sys, arcpy, traceback, arcgisscripting           #Set Overwrite Option         arcpy.env.overwriteOutput = True         #arcpy.env.workspace = "d:/ArcGISData/SARS/Temp"           gp = arcgisscripting.create(10.1)         #del row         #del rows             #Sets parameters (attributes)         Status = gp.GetParameterAsText(0)         Office =  gp.GetParameterAsText(1)         Forester = gp.GetParameterAsText(2)         DateStart = gp.GetParameterAsText(3)         PlanLength = gp.GetParameter(4)         PlanEQIP = gp.GetParameter(5)         RecipientLast = gp.GetParameterAsText(6)         RecipientFirst = gp.GetParameterAsText(7)         MailAddress = gp.GetParameterAsText(8)         City = gp.GetParameterAsText(9)         State = gp.GetParameterAsText(10)         ZipCode = gp.GetParameterAsText(11)         Phone = gp.GetParameterAsText(12)         Email = gp.GetParameterAsText(13)         Underserved = gp.GetParameter(14)         # This is to send the data input to the database         with arcpy.da.UpdateCursor(Stewardship, ("Status", "Office", "Forester", "DateStart","PlanLength", "PlanEQIP", "RecipientLast", "RecipientFirst",              "MailAddress", "City" , "State", "ZipCode", "Phone", "Email", "Underserved")) as rows:                 # row comes back as a tuple in the order specified here, so Office is row[0], Forester is row[1]                 for row in rows:                     row[0] = Status                     row[1] = Office                     row[2] = Forester                     row[3] = DateStart                     row[4] = PlanLength                     row[5] = PlanEQIP                     row[6] = RecipientLast                     row[7] = RecipientFirst                     row[8] = MailAddress                     row[9] = City                     row[10] = State                     row[11] = ZipCode                     row[12] = Phone                     row[13] = Email                     row[14] = Underserved                     rows.updateRow(row)          # This is to save only the year to the FFY field from the DateStart field         with arcpy.da.UpdateCursor(Stewardship, ("FFY")) as rows:                 # row comes back as a tuple in the order specified here, so FFY is row[0]                # To strip the date start depending on the lenght of the date                  Datestarstr1 = str(DateStart)                  if len(Datestarstr1) == 9:                     # if for example 6/28/2013 or 10/4/2013                         yearonly = DateStart[5:9]                  # if for example 6/8/2013                 if len(Datestarstr1) == 8:                         yearonly = DateStart[4:8]                 if len(Datestarstr1) > 9:                      # if for example 10/10/2013                         yearonly = DateStart[6:10]                                for row in rows:                     row[0] = yearonly                       rows.updateRow(row)          Counties = "d:/ArcGISData/SARS/Python_10April2013/SARS.gdb/Counties"           arcpy.MakeFeatureLayer_management(Counties, "Countieslayer")          arcpy.MakeFeatureLayer_management(Stewardship, "Stewardshiplayer")                      outstewardshipcentroids = "d:/ArcGISData/SARS/Temp/outstewardshipcentroids.shp"              # Create centroid         arcpy.FeatureToPoint_management("Stewardshiplayer",  outstewardshipcentroids,"INSIDE")           arcpy.MakeFeatureLayer_management(outstewardshipcentroids, "Stewardshipcentroidslayer")          arcpy.SelectLayerByLocation_management("Countieslayer", "CONTAINS", "Stewardshipcentroidslayer", "", "NEW_SELECTION")              # Takes the first row of the cursor (there is only one object in the county centroid).             # The first index is the first row, the next [0] index is the first attribute, which there is only one (FIPS_TXT)         countycode = tuple(arcpy.da.SearchCursor("Countieslayer", "FIPS_TXT"))[0][0]         urows = arcpy.da.UpdateCursor("Stewardshiplayer", "County")         for urow in urows:             urow[0] = countycode             urows.updateRow(urow)          del urows, urow           # To add 1 to the year if month starts in October          import time         from datetime import datetime, date         #sim_date_counter = 1          with arcpy.da.UpdateCursor("Stewardshiplayer", ("FFY")) as rows:           for row in rows:             #get the value of the date              FFY = row[0]             FFYnumber = int(FFY)             #convert to string             DateStartstr = str(DateStart)              # Get only the month             # To get only the first two characters:             DateStart2 = DateStartstr[0:2]              if "/" in DateStart2:                         # if for example 6/28/2013                     DateStart3 = DateStart[0:1]                     FFYnumbercount = FFYnumber                             if "/" not in DateStart2:                  # if for example 10/10/2013                 DateStart4 = int(DateStart2)                 FFYnumbercount = FFYnumber + 1                         row[0] = str(FFYnumbercount)              rows.updateRow(row)          # We get the value of FFY and County         trows = arcpy.SearchCursor("Stewardshiplayer")          for row in trows:         ##               FFYCountytxt = row.getValue("FFYCounty")                    FFYtxt = row.getValue("FFY")                    Countytxt = row.getValue("County")          del trows, row           # we list the layer to create a layer feature without a selection (because it is selected by the user)         #lyr = arcpy.mapping.ListLayers(mxd, 'Stewardship')[0]          #arcpy.MakeFeatureLayer_management(lyr.dataSource, "TMP")         # To get the total ammount of records, not only the selected           Stewardshipfc = "Stewardship2"         arcpy.MakeFeatureLayer_management(Stewardshipfc , "TMP2")           result = int(arcpy.GetCount_management("TMP2").getOutput(0))          # write a query to get the county and year using the FFY and County of the object id of the Stewardship layer (the one that is selected)          query = "FFY" +"=" + "'"+ str(FFYtxt)+"'" + "AND " + "County" +"=" + "'"+ str(Countytxt)+"'"          # select all the records that have the FFYcounty the same as the FFYCounty of the hightest ObjectID         arcpy.SelectLayerByAttribute_management("TMP2",  "NEW_SELECTION", query )         result = int(arcpy.GetCount_management("TMP2").getOutput(0))           # if there are more than 1 records with the same ffy and county         # select only the record witht the highest sequencenumber (sort first, then select)         if  result > 1:                     maxValue4 = arcpy.SearchCursor("TMP2", "", "", "", "SequenceNumber D").next().getValue("SequenceNumber")                                     query = "SequenceNumber = "                     arcpy.SelectLayerByAttribute_management("TMP2",  "SUBSET_SELECTION", "SequenceNumber = " + str(maxValue4))                     result = int(arcpy.GetCount_management("TMP2").getOutput(0))                                                        # if there is no other record with the same FFY and County, we don't need to select it           #arcpy.AddMessage(result)               #  to get the sequence number                          rows = arcpy.SearchCursor("TMP2")          for row in rows:                 Seqnum = row.SequenceNumber           # If the sequence number is equal or higher than 1 it means there are other records with the same FFY and County, so we add 1 to the number           with arcpy.da.UpdateCursor("Stewardshiplayer", ("Sequencenumber")) as rows:                   if Seqnum >= 1:                          vsn = Seqnum + 1                                     else:                                                 vsn = 1                                    for row in rows:                     row[0] = vsn                     rows.updateRow(row)                      # we Create the Plan ID concatenating the FFY, the county and the Sequence number, adding zeros in front of the sequence number if necessary to make the lenght always 3         with arcpy.da.UpdateCursor(Stewardship, ("PlanID")) as rowsffycounty2:             for row in rowsffycounty2:                 row[0] = str(FFYtxt) + "-" + str(Countytxt) + "-" + str(vsn).zfill(3)                  rowsffycounty2.updateRow(row)      Edit / Delete Edit Post   Reply With Quote Reply With Quote   Multi-Quote This Message  Top Bottom