Processing math: 100%

7 votos

Bing Autorización de las interrupciones de arcpy script

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:

  1. Encontrar una manera mediante programación, haga clic en el botón o ignorarlo.
  2. Dejar una taza de café en mi tecla Enter durante la noche.
  3. 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:

  1. 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?
  2. ¿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?

1voto

vt. Puntos 727

Esri support se puso en contacto conmigo y me dijo que simplemente guardar una copia en lugar de guardar el .MXD sí mismo. Aún más: "...cuando Bing capas se añaden a un MXD una propiedad global se crea y se hace referencia. Incluso cuando las capas se quitan el MXD mantiene la referencia. Al guardar el MXD como una copia (cuando Bing capas no están presentes), la referencia no es copiado. Cual es la razón por la que no estamos observando pop-ups dentro de la copia". Se dio ninguna explicación de cómo quitar la propiedad global.

Tomando este enfoque, obviamente, crea muchos MXD copias. Quizá desee establecer la secuencia de comandos para sobrescribir los originales.

1voto

Farid Cher Puntos 5306

Prueba este código:

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.Delete_management(lyr)
        arcpy.mapping.RemoveLayer(df, lyr)
        print "Removed from "+ df.name+" dataframe: " +lyr.name
        mxd.save()
del mxd, lyr, df 

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X