He creado una consolidación de los datos de la herramienta. Se consolida usuarios mxd vectoriales y de trama de datos en una estructura de proyecto. También permite al usuario la opción de caché de nuestras empresas de ArcGIS Web del Servidor de Mapas. El arcpy.gp.ExportMapServerCache produce un compacto de caché conjunto de datos, que se convierte en una capa con arcpy.MakeRasterLayer_management y añadido a un mxd con arcpy.la cartografía.AddLayer.
La capa es de un agregado con éxito a la mxd. Pero no es el mismo que cuando lo hace el usuario de forma manual. El arcpy capas "origen de datos" no es el que fue dictado, sino que hace referencia a una temp de los usuarios de la carpeta de datos de aplicación en su lugar.
¿Por qué se hace referencia temporal, y NO de la trama de la caché?
### MOVE CONSOLIDATED MXD TO PROJECT CORE LEVELS
MasterMxdPath = UserProjectPath+"\\Extract_"+Project_Name+".mxd" #new mxd name
mxd2Name = UserProjectPathGDB+"\\v101\\"+mxdNAME #get consolidated mxd
mxd2 = arcpy.mapping.MapDocument(mxd2Name)
mxd2.saveACopy(MasterMxdPath, "10.1")
del mxd2
### ADDING WEB CACHE TO MXD
try:
UserProjectPathCache = UserProjectPath+"\\Cache"
arcpy.env.workspace = UserProjectPathCache
RastersL = arcpy.ListRasters("*", "ALL")
RcCount = len(RastersL)
if RcCount >0: ### If there's a web cache:
arcpy.AddMessage(" J: Web Cache Exists:")
arcpy.AddMessage(" J: There are: " +str(RcCount) +" rasters")
### Get Dataframe From MXD
mxd3 = arcpy.mapping.MapDocument(MasterMxdPath)
df = arcpy.mapping.ListDataFrames(mxd3)[0]
### Turn Rasters Into Layers & Add To Dataframe
CNTR = 0
for raster in RastersL:
arcpy.AddMessage(" J: Cache Name: "+str(raster))
CNTR = CNTR + 1
RasterLayerName = "WebServiceCache_"+str(CNTR)
RasterPath = UserProjectPathCache+"\\"+raster
arcpy.AddMessage(" J: New Layer Name: "+ RasterLayerName)
RLayer = arcpy.MakeRasterLayer_management(RasterPath,RasterLayerName)
layer = RLayer.getOutput(0)
arcpy.mapping.AddLayer(df, layer, 'Bottom')
mxd3.save()
arcpy.AddMessage(" J: Mxd Saved With Cache Layer")
del RLayer, layer, df
del mxd3
### Remove Webservices From Dataframes in MXD
mxd4 = arcpy.mapping.MapDocument(MasterMxdPath)
df2 = arcpy.mapping.ListDataFrames(mxd4)[0]
for lyr2 in arcpy.mapping.ListLayers(mxd4, "", df2):
if lyr2.supports("SERVICEPROPERTIES"):
servProp2 = lyr2.serviceProperties
if lyr2.serviceProperties["ServiceType"] != "SDE":
arcpy.AddMessage(" J: Removing WEB SERVICE LAYER: " + lyr.name)
arcpy.mapping.RemoveLayer(df2, lyr2)
mxd4.save()
arcpy.AddMessage(" J: Final Mxd Saved: ")
del mxd4
else: ### If there's no web cache
arcpy.AddMessage("J: No Web Cache Exists:")
except Exception as e:
arcpy.AddError(e.message)
arcpy.AddMessage(" DID NOT ADD RASTER TO MXD")