5 votos

¿Cómo exportar un mxd usando python sin abrirlo?

Me gustaría ser capaz de actualizar a una carga de pdf y jgeg mapas una vez que los datos han sido actualizados. En la actualidad la gente tiene que abrir cada mxd y exportar el mapa en cada formato. He escrito una pequeña python ampliación de capital que va a exportar el actual mxd. Esto funciona bien:

##export current mxd to pdf and jpeg
mxd = arcpy.mapping.MapDocument("CURRENT")
mxd.save()
filename = mxd.filePath.split("\\")[-1].split(".")[0]
path = '\\\\main.corp.local\\E-GB$\\Home\\4\\J042\\Documents\\PWISE' + "\\" +filename
arcpy.mapping.ExportToPDF(mxd, path + '.pdf')
arcpy.mapping.ExportToJPEG(mxd, path + '.jpg',"PAGE_LAYOUT", 400,500,300)

Esto no ahorrar mucho tiempo, porque aunque alguien todavía tiene que abrir todos los mxds y ejecutarlo. Yo por lo tanto he escrito esto para que se ejecute en cada mxd:

##export current mxd to pdf and jpeg
import arcpy, os
#mxd = arcpy.mapping.MapDocument("CURRENT")
for root, dirs, files in os.walk(r"\\main.glb.corp.local\EP-GB$\Home\ABZ\4\J0422414\Desktop\EXPORTMXD"):

        for f in files:
            if f.endswith(".mxd"):
                mxdfile = root + '\\' + f
                mxd = arcpy.mapping.MapDocument(mxdfile)
                mxd.save()
                filename = mxd.filePath.split("\\")[-1].split(".")[0]
                path = '\\\\main.corp.local\\E-GB$\\Home\\4\\J042\\Documents\\PWISE' + "\\" +filename
                arcpy.mapping.ExportToPDF(mxd, path + '.pdf')
                arcpy.mapping.ExportToJPEG(mxd, path + '.jpg',"PAGE_LAYOUT", 400,500,300)
            else:
                print f

El extraño problema aquí es que cuando hay una tabla en la vista diseño de la vuelta (como en la tabla de atributos de menú > Añadir Tabla de Diseño) no se verá - no es sólo un espacio en blanco. Este problema se produce tanto en el pdf y jpeg

¿Alguien sabe si hay una solución para esta exportación de error, o si puedo ajustar mi secuencia de comandos para abrir y cerrar cada uno de los mxd, la ejecución de la parte correspondiente de la secuencia de comandos desde dentro de ella? porque parece que funciona si el mxd está abierto

3voto

John Kramlich Puntos 286

Acabo de replicar el problema, yo también soy capaz de ver la tabla en el diseño de una página si ejecuto el script en el exterior de un activo mxd. Yo estaba usando la última 10.4, por lo que parece ser un error. Usted necesitaría contactar ESRI directamente al registro de este. También había intentado varias combinaciones de los otros parámetros para ExportToPDF().

Ahora aquí es una forma alternativa de...

Es una parte de ArcMap yo no uso nunca y es que las herramientas de generación de informes. Si vas a la opción de menú Ver > informes puede crear algún buen formato de reportes. Hay muchas opciones para modificar el aspecto del informe final. Finalmente, usted puede haga clic en el Añadir informe de Diseño de botón.

La ejecución de un script fuera de la mxd yo era capaz de ver mi diseño, con el mapa y la tabla del informe.

Hay una guía en el archivo de ayuda que habla a través del proceso de creación de un informe.

3voto

Xetius Puntos 10445

Después de algunas búsquedas, parece que este ha sido un 'conocido' problema o una limitación desde el 2012, por desgracia. Ver aquí: https://geonet.esri.com/thread/60621. La respuesta sugerido algunos plugins para agregar la funcionalidad.

Una alternativa para usted, es construir tu propia mesa, cada vez que el script se abre. Esto requiere tener una plantilla de elementos gráficos para la vertical y la línea horizontal, y una plantilla de elemento de texto en el documento. Esencialmente, usted copia de estas plantillas para crear la tabla y los valores.

Hay un ejemplo con el código de esta página de ayuda: http://desktop.arcgis.com/en/arcmap/10.3/analyze/arcpy-mapping/graphicelement-class.htm

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