having trouble renaming and updating layers

916
2
09-14-2011 05:24 AM
FrankVignati
Occasional Contributor II
in the following script all processes run fin until it gets to the remove, renmame, and update layers commands, however if the commands are put into a seperate script and run everything goes fine
it would be best if it could run as one script, any help would be appreciated:

the script where it fails:

## Import standard modules
import sys, os

## Set the necessary product code
import arcinfo

## Import arcpy module and environment module
import arcpy
import arcpy.mapping
from arcpy import env

## Set the output workspace
arcpy.env.workspace = r"G:\AGIS\2011\Special_Projects\Dist_1\Dieldrin_Well_Sampling\DieldrinParcelData.gdb\ParcelData"

## Overwrite pre-existing files
arcpy.env.overwriteOutput = True

## Sets the MXD file
IMXD = arcpy.mapping.MapDocument("CURRENT")

## Sets the Dataframe
DF = arcpy.mapping.ListDataFrames(IMXD, "Layers")[0]

Date = arcpy.GetParameterAsText(0)
NewSampleData = arcpy.GetParameterAsText(1)
PastSample = arcpy.GetParameterAsText(2)


NameStart = NewSampleData.rfind("\\") + 1
AddNewLayer = str(NewSampleData[NameStart:])


arcpy.MakeFeatureLayer_management(NewSampleData, AddNewLayer)
arcpy.SetParameterAsText(3,AddNewLayer)
arcpy.RefreshTOC()


Selection = "\"SAMPLE\" <> '' AND \"SAMPLE\" <> ' ' AND \"SAMPLE\" <> 'C' "

arcpy.SelectLayerByAttribute_management(AddNewLayer, "NEW_SELECTION", Selection)


SelectedSamples = arcpy.MakeFeatureLayer_management(AddNewLayer, "SelectedSamples")

arcpy.SetParameterAsText(4, SelectedSamples)

arcpy.RefreshTOC()


arcpy.SelectLayerByLocation_management("Volusia_Parcels", "INTERSECT", "SelectedSamples")

SelectedParcels = arcpy.MakeFeatureLayer_management("Volusia_Parcels", "SelectedParcels")

arcpy.SetParameterAsText(5, SelectedParcels)

arcpy.RefreshTOC()

OutParcels = r"Parcels_%s"%(Date)

arcpy.SpatialJoin_analysis("SelectedParcels", "SelectedSamples", OutParcels, "JOIN_ONE_TO_ONE", "KEEP_ALL")

NewParcels = arcpy.MakeFeatureLayer_management(OutParcels, "NewParcelLayer")
arcpy.SetParameterAsText(6, NewParcels)

JoinLayer = arcpy.mapping.ListLayers(IMXD, PastSample,DF)[0]

arcpy.AddJoin_management(NewParcels, "ALTKEY", JoinLayer, "ALTKEY", "KEEP_ALL")

ChangeSelection = r"%s.SAMPLE <> %s.SAMPLE"%(OutParcels, PastSample)

arcpy.SelectLayerByAttribute_management(NewParcels, "NEW_SELECTION", ChangeSelection)

arcpy.RemoveJoin_management(NewParcels, PastSample)

OutSample = r"Parcels_Changed_%s"%(Date)

arcpy.CopyFeatures_management(NewParcels, OutSample)

NewChanges = arcpy.MakeFeatureLayer_management(OutSample, "NewParcelChanges")
arcpy.SetParameterAsText(7, NewChanges)



########## These changes do not take effect ######################

arcpy.AddMessage("Removing Layers")

for ILayer in arcpy.mapping.ListLayers(IMXD):
   if ILayer.name == "SelectedSamples":
       arcpy.mapping.RemoveLayer(DF, ILayer)
   if ILayer.name == "SelectedParcels":
       arcpy.mapping.RemoveLayer(DF, ILayer)
       
arcpy.AddMessage("Setting Varibles")

PLayer = r"Parcels_%s"%(Date)
CLayer = r"Parcels_Changed_%s"%(Date)


arcpy.AddMessage("Renaming Layers")

for ILayer in arcpy.mapping.ListLayers(IMXD):
  if ILayer.name == "NewParcelLayer":
    ILayer.name = PLayer
  elif ILayer.name == "NewParcelChanges":
    ILayer.name = CLayer
    
arcpy.RefreshTOC()
IMXD.save()

arcpy.AddMessage("Setting Layer Symbology")

try: 
  SymbolLayer1 = arcpy.mapping.Layer(r"G:\AGIS\2011\Special_Projects\Dist_1\Dieldrin_Well_Sampling\DieldrinWellSamples.lyr")
  NewLayer1 = arcpy.mapping.ListLayers(IMXD, PLayer,DF)[0]
  arcpy.mapping.UpdateLayer(DF, NewLayer1, SymbolLayer1)

  SymbolLayer2 = arcpy.mapping.Layer(r"G:\AGIS\2011\Special_Projects\Dist_1\Dieldrin_Well_Sampling\Parcels_Changed.lyr")
  NewLayer2 = arcpy.mapping.ListLayers(IMXD, CLayer,DF)[0]
  arcpy.mapping.UpdateLayer(DF, NewLayer2, SymbolLayer2)
except:
  arcpy.GetMessages()
   
############### All STOP #########################   
   
## Refresh map
arcpy.RefreshTOC()
arcpy.RefreshActiveView
IMXD.save()


this script works if run after the previous one:

## Import standard modules
import sys, os

## Set the necessary product code
import arcinfo

## Import arcpy module and environment module
import arcpy
import arcpy.mapping
from arcpy import env

## Set the output workspace
arcpy.env.workspace = r"G:\AGIS\2011\Special_Projects\Dist_1\Dieldrin_Well_Sampling\DieldrinParcelData.gdb\ParcelData"

## Overwrite pre-existing files
arcpy.env.overwriteOutput = True

## Sets the MXD file
IMXD = arcpy.mapping.MapDocument("CURRENT")

## Sets the Dataframe
DF = arcpy.mapping.ListDataFrames(IMXD, "Layers")[0]

Date = arcpy.GetParameterAsText(0)

arcpy.AddMessage("Removing Layers")

for ILayer in arcpy.mapping.ListLayers(IMXD):
   if ILayer.name == "SelectedSamples":
       arcpy.mapping.RemoveLayer(DF, ILayer)
   if ILayer.name == "SelectedParcels":
       arcpy.mapping.RemoveLayer(DF, ILayer)
       
arcpy.AddMessage("Setting Varibles")
PLayer = r"Parcels_%s"%(Date)
CLayer = r"Parcels_Changed_%s"%(Date)


arcpy.AddMessage("Renaming Layers")
for ILayer in arcpy.mapping.ListLayers(IMXD):
  if ILayer.name == "NewParcelLayer":
    ILayer.name = PLayer
  elif ILayer.name == "NewParcelChanges":
    ILayer.name = CLayer
    
arcpy.RefreshTOC()

arcpy.AddMessage("Setting Layer Symbology")

SymbolLayer1 = arcpy.mapping.Layer(r"G:\AGIS\2011\Special_Projects\Dist_1\Dieldrin_Well_Sampling\DieldrinWellSamples.lyr")
NewLayer1 = arcpy.mapping.ListLayers(IMXD, PLayer,DF)[0]
arcpy.mapping.UpdateLayer(DF, NewLayer1, SymbolLayer1)

SymbolLayer2 = arcpy.mapping.Layer(r"G:\AGIS\2011\Special_Projects\Dist_1\Dieldrin_Well_Sampling\Parcels_Changed.lyr")
NewLayer2 = arcpy.mapping.ListLayers(IMXD, CLayer,DF)[0]
arcpy.mapping.UpdateLayer(DF, NewLayer2, SymbolLayer2)

   
## Refresh map
arcpy.RefreshTOC()
arcpy.RefreshActiveView
IMXD.save()
Tags (2)
0 Kudos
2 Replies
FrankVignati
Occasional Contributor II
any help? am i missing a step?
0 Kudos
NAOMIPAUL
New Contributor III

Did you every resolve this? We are having a similar issue. Runs fine as separate scripts, but not as one.

0 Kudos