Ha alguien más notó que el acceso a elementos de arcpy.la cartografía.ListLayoutElements() a través de una herramienta de secuencia de comandos toma más tiempo que dentro de ArcMap? Si el uso de un nombre específico, comodín o nada, la llamada tarda del orden de 90 segundos o más para volver:
arcpy.AddMessage(" Start: " + str(datetime.now()))
mapDoc = arcpy.mapping.MapDocument(mapDocumentPath)
elements = arcpy.mapping.ListLayoutElements(mapDoc, "GRAPHIC_ELEMENT")
arcpy.AddMessage(" Finished: " + str(datetime.now()))
Start: 2011-05-24 12:29:28.479000
Finished: 2011-05-24 12:31:10.510000
Cuando la llamada se realiza dentro de ArcMap el retorno es instantánea.
mapDoc = arcpy.mapping.MapDocument("CURRENT")
elements = arcpy.mapping.ListLayoutElements(mapDoc, "GRAPHIC_ELEMENT")
En ambos casos, estoy haciendo referencia al mismo documento de mapa.
El uso de ArcGIS 10 SP2.
Actualización:
- Puede que no sea obvio, pero los resultados son instantáneos cuando el script se ejecuta en contra de la "ACTUAL". Especificar cualquier documento de mapa que no sea "ACTUAL" y el guión será más lento.
- Yo ejecuta un bucle como Jason sugerido y se encontró poca diferencia entre la primera llamada a ListLayoutElements() y el último. La primera selección se llevó a 28 segundos, mientras que los otros nueve promedio de 24 segundos.
- El documento de mapa consta de nueve tramas de datos y nueve leyenda correspondiente de los elementos que se han convertido en los gráficos. Cuando estas "leyendas" están presentes en el documento, a continuación, ListLayoutElements() es lento; cuando se elimina entonces ListLayoutElements() devuelve inmediatamente.