import arcpy inMXD = r'c:\test.mxd' outMXD = r'c:\test1.mxd' rLayer = 'test3' #Name of reference layer mLayer = 'test4' #Name of layer to be replaced and moved lyrFile = arcpy.mapping.Layer(r'c:\Test4.lyr') #Layer file used to replace layer mxd = arcpy.mapping.MapDocument(inMXD) for df in arcpy.mapping.ListDataFrames(mxd): #loop data frames for lyr in arcpy.mapping.ListLayers(mxd,"",df): #loop layers if lyr.isGroupLayer == 1: #Is layer a group layer for glyr in arcpy.mapping.ListLayers(lyr): #loop layer in group layer if glyr != lyr: #Not Group Layer Name if glyr.name.lower() == mLayer: #Layer to be replaced and moved arcpy.mapping.RemoveLayer(df, glyr) #Remove the layer arcpy.mapping.AddLayer(df, lyrFile) #Add layer based on Layer File if glyr.name.lower() == rLayer: #Layer to be used to reference position of move layer refLayer = glyr #Set ref layer #Have to loop through layers again as layer is added outside the group layer for lyr in arcpy.mapping.ListLayers(mxd,"",df): #Start new loop of layers if lyr.name.lower() == mLayer: #Is move layer moveLyr = glyr #Set move layer #Move layer to required position arcpy.mapping.MoveLayer(df, refLayer, moveLyr, "BEFORE") mxd.saveACopy(outMXD) del mxd
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.