Hice este poco feliz de arcpy script para corregir algunos datos de la fuente de los problemas:
print "Hi, I will fix find and replace file path sections on your behalf. \nGive me a moment to just count the number of MXDs I'll be looking at for you today..."
import os
import arcpy
mxdfiles = [os.path.join(d, x)
for d, dirs, files in os.walk(r"PATH")
for x in files if x.endswith(".mxd")]
print "\nOk, I'll be working through "+str(len(mxdfiles))+" MXDs. \nStarting this process now..."
for item in mxdfiles:
print "\nWorking on: "+item
mxd = arcpy.mapping.MapDocument(item)
mxd.findAndReplaceWorkspacePaths(r"PATH OLD1", r"PATH NEW")
mxd.findAndReplaceWorkspacePaths(r"PATH OLD2", r"PATH NEW")
mxd.findAndReplaceWorkspacePaths(r"PATH OLD3", r"PATH NEW")
mxd.findAndReplaceWorkspacePaths(r"PATH OLD4", r"PATH NEW")
mxd.findAndReplaceWorkspacePaths(r"PATH OLD5", r"PATH NEW2")
mxd.save()
del mxd
print "Completed "+str(mxdfiles.index(item)+1)+" maps so far."
print "\nProcess complete!"
Desafortunadamente, sin embargo, cuando se trata de a través de un MXD con una capa de imágenes de Bing, aparece un Bing Autorización de caja que usted tiene que hacer clic en 'OK' (pulsando la tecla Intro también funciona). Esto es debido a que mi compañía no tiene una licencia para el uso de Bing, Microsoft Virtual Earth, así que esta pequeña caja viene cada vez que un MXD se abre manualmente, o, lo que parece, cuando uno se invoca por mi script. Esto significa que tengo:
- Encontrar una manera mediante programación, haga clic en el botón o ignorarlo.
- Dejar una taza de café en mi tecla Enter durante la noche.
- Quitar el Bing (Microsoft Virtual Earth*) capas mediante programación.
Busqué en Google sin resultados con respecto a la opción 1. Antes de ir a por la opción 2, he intentado la opción 3. Como prueba, he utilizado la siguiente secuencia de comandos (como este uno no funciona) para tratar la eliminación de Microsoft Virtual Earth* capas (su grupo es de Microsoft Virtual Earth, dentro de que hay tres capas con el mismo nombre, más Híbrido, Aéreo o Carreteras sufijo):
import arcpy
mxd = arcpy.mapping.MapDocument(r"PATH")
for df in arcpy.mapping.ListDataFrames(mxd):
for lyr in arcpy.mapping.ListLayers(mxd, "*Microsoft*", df):
arcpy.mapping.RemoveLayer(df, lyr)
print "Removed from "+ df.name+" dataframe: " +lyr.name
mxd.save()
del mxd, lyr, df
Se ejecutó sin errores y se quitan las capas. El Bing Autorización cuadro de diálogo emergente no aparece, mientras que el guión corrió. Lo único es que el pop-up aparece cuando abro el mapa que acaba de modificar con ese script, aunque las capas que se han ido! ¿Alguien sabe por qué la eliminación de estas capas con este script no detener a los pop-up? He probado la eliminación de estas capas de forma manual, guardar, cerrar, a continuación, la reapertura de la MXD. La ventana emergente no aparece, a continuación,. Así que no es algo que se hace en el manual de proceso que no es hecho en mi script.
Curiosamente, cuando abro el infractor MXD, ejecute el por encima de la capa de eliminación de secuencia de comandos utilizando la ventana de Python, a continuación, cierre y vuelva a abrir el MXD Bing Autorización emergente no aparece. También, si elimino todas las demás capas y tablas de la MXD tan sólo se ha de Microsoft Virtual de las capas de la Tierra en la que, a continuación, retire los restantes capas con la secuencia de comandos, a continuación, abra el MXD manualmente, Bing Autorización pop-up aparece :-\
Antes de tratar de incorporar mi script para eliminar estas capas en el que estoy trabajando, para caminar a través de todos MXDs y corregir sus caminos, necesito saber:
- Cuál es la causa de Bing Autorización cuadro de diálogo emergente con mi guión inicial, pero no la capa de eliminación de uno?
- ¿Por qué después de ejecutar el Bing/Microsoft Virtual Earth de la capa de script de eliminación de la autorización de pop-up aparece aún?