Usted está cerca. En lugar de AddLayer, puede utilizar MoveLayer. El ESRI código de ejemplo, junto con algunos ajustes a sus propias estructuras de datos pueden ser ajustados para mover las capas que desee hasta la raíz de la trama de datos. Ver código:
mxd = arcpy.mapping.MapDocument(r"C:\peendata\MoveLayers.mxd")
df = arcpy.mapping.ListDataFrames(mxd)[0]
moveThese = []
for layer in arcpy.mapping.ListLayers(mxd, "", df):
print str(layer.name) + ">>>"
if layer.isServiceLayer:
print str(layer) + " is a service layer"
if layer.isFeatureLayer:
print str(layer) + " is a feature layer"
if layer.isRasterLayer:
print str(layer) + " is a raster layer"
if layer.isGroupLayer:
print str(layer) + " is a group layer"
if str(layer) == "Group Layer 1":
refLayer = layer
if(layer.isServiceLayer and not layer.isGroupLayer):
print "qualifies for movement"
moveThese.append(layer)
for layer in moveThese:
print "moving " + str(layer)
arcpy.mapping.MoveLayer(df, refLayer, layer, "BEFORE")
mxd.saveACopy(r"C:\peendata\MoveLayersDone.mxd")
del mxd
Algunas advertencias: no todos los servicios web son definidos como servicios web. Por ejemplo, OpenStreetMap, que también se añade como un enlace externo, es una capa de paquete, por lo que el código anterior no se mueva. Yo no pude encontrar una manera de detectar si es una capa de paquete desde la web, así que asegúrese de que las capas que desea mover son lo que usted espera de código sabio.
En lo que respecta a su particular estructura de capas, se recomienda que la Global_Imagery es una capa bloqueada conjunto, por lo que no puede su subcapas incluso en ArcMap con la mano. De hecho, el código todavía qué (tipo de), pero la movida capas están rotos, y los originales están todavía en su lugar. Asegúrese de que las capas que están tratando de mover son realmente los móviles a mano.
Finalmente, el código, obviamente, deben ser ajustados a qué es exactamente lo que está buscando: usted no quiere que ellos en el nivel de raíz, de su grupo superior de la capa puede ser llamado de otra manera, etc. Incluido son algunas de las funciones que puede utilizar para probar las propiedades de la capa.
Ah, y sí. A veces las capas de servicio son también el grupo de capas - modo de prueba cuidadosamente.
Para referencia, mi capa de la estructura de pre y post:
![TOC pre and post-move]()