¿Exportación por lotes de archivos MXD a PDF con ArcGIS Desktop?

9

Nico Burgerhart creó un script fantástico llamado "Exportar por lotes MXD a PDF" en 2008. http://arcscripts.esri.com/details.asp?dbid=14872 ¿ Alguna idea de cómo implementarlo en ArcGIS 10? ¿Algo usando Python quizás? Data Driven Pages no tiene nada comparable que pueda encontrar.

Estos son los pasos en el archivo de texto Léame que no coincide con la nueva barra de menú de ArcGIS 10:

Tool: Batch export MXD to PDF
Purpose: Saves all MXDs in the selected directory to PDFs in the selected output folder
Author: Nico Burgerhart ([email protected])
Date: 31 Jan. 2007
INSTALLATION NOTES
------------------
1. Open ArcMap
2. Select Tools > Macro's > Visual Basic Editor
3. Select File > Import file
4. Import BatchExportMXDToPDF.bas
5. Select File > Close and Return to ArcMap
6. Select Tools > Macro's > Macro's
7. Select the BatchExportMXDToPDF mactro
8. Click Run 
sirgeo
fuente

Respuestas:

7

Exportar documento de mapa a PDF ahora se incluye en el módulo arcpy.mapping

Parte del ejemplo de código de Esri KB Cómo: Exportar documentos de mapa a PDF con Python :

for mxd in mxd_list:

    current_mxd = arcpy.mapping.MapDocument(os.path.join(ws, mxd))
    pdf_name = mxd[:-4] + ".pdf"
    arcpy.mapping.ExportToPDF(current_mxd, pdf_name)

Para ver un ejemplo más extendido de Toolbox, vea Exportar MXD a PDF por cortesía de @bteranUFA

Mapperz
fuente
Gracias Mapperz, parece que hay muchos buenos ... sigan recibiendo errores de nombre de archivo Mxd no válidos por alguna razón al usar 'Exportar documento de mapa a PDF', ¿alguna idea? captura de pantalla: i.imgur.com/fOaGp.jpg
sirgeo
¿Tiene espacios o caracteres especiales en su .mxd?
Mapperz
sí ... espacios, guiones bajos y un guión. Aquí hay algunos ejemplos: PLR11001200_1101A-BO.mxd 1101A_ LT 314.mxd 1101A_BB 300B.mxd 1101A_BO.mxd ¿Crees que necesito eliminar los espacios y guiones? Le daré una oportunidad mañana por la mañana cuando vaya a trabajar para hacer algo de tiempo extra.
sirgeo
1
Gracias Mapperz ... De hecho, funciona bien después de eliminar todos los espacios, guiones bajos y guiones.
sirgeo
1
Un enlace adicional (el enlace de @ Mapperz ya no funciona): support.esri.com/technical-article/000012420
gisnside
1

Parece que este es un módulo VBA. Si instala VBA con ArcGIS 10, debería poder ejecutarlo de la misma manera. (VBA todavía es compatible, pero no estará en la próxima versión). Un mejor enfoque sería volver a escribir esto como un complemento.

Jakub Sisak GeoGraphics
fuente
Gracias Jakub, ¿hay un enlace con instrucciones paso a paso sobre cómo instalar VBA con ArcGIS 10? ¿Alguna sugerencia sobre cómo volver a escribir como un complemento?
sirgeo
1
Necesitará un archivo de licencia del instalador de ESRI y VBA es uno de los elementos del DVD de instalación principal. En cuanto al complemento (lo siento, no agregue) hay un poco de curva de aprendizaje con VB .NET, pero vale la pena el esfuerzo. Aquí hay un enlace para el tutorial: help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/…
Jakub Sisak GeoGraphics
1

Agregue la secuencia de comandos a una caja de herramientas, luego configure dos parámetros haciendo clic con el botón derecho en la herramienta de secuencia de comandos y escribiendo en la pantalla nombrada como la imagen de abajo y seleccionando el tipo de datos de la carpeta como en la imagen de abajo: ingrese la descripción de la imagen aquí

#Export a folder of maps to PDFs at their Map Document set sizes
#Written using ArcGIS 10 and Python 2.6.5
#by: Guest

import arcpy, os

#Read input parameter from user.
path = arcpy.GetParameterAsText(0)

#Write MXD names in folder to txt log file.
writeLog=open(path+"\FileListLog.txt","w")
for fileName in os.listdir(path):
    fullPath = os.path.join(path, fileName)
    if os.path.isfile(fullPath):
        basename, extension = os.path.splitext(fullPath)
        if extension == ".mxd":
            writeLog.write(fullPath+"\n")
            mxd = arcpy.mapping.MapDocument(fullPath)
            print fileName + "\n"
del mxd
print "Done"
writeLog.close()


exportPath =arcpy.GetParameterAsText(1)
MXDread=open(path+"\FileListLog.txt","r")
for line in MXDread:
    #Strip newline from line.
    line=line.rstrip('\n')
    if os.path.isfile(line):
        basename, extension = os.path.splitext(line)
        newName=basename.split('\\')[-1]
        if extension.lower() == ".mxd":
            print "Basename:" +newName
            mxd = arcpy.mapping.MapDocument(line)
            newPDF=exportPath+"\\"+newName+".pdf"
            print newPDF
            arcpy.mapping.ExportToPDF(mxd,newPDF)
            print line + "Export Done"
MXDread.close()
item=path+"\FileListLog.txt"
os.remove(item)
del mxd
Invitado
fuente
0

Mire en este conjunto de herramientas GP en el Centro de recursos de ESRI, puede haber algo allí para exportar a PDF por lotes.

Chad Cooper
fuente
como mentes, el mismo vínculo que yo.
Mapperz
Gracias Chad, sigo recibiendo un error de nombre de archivo Mxd no válido por alguna razón cuando uso 'Exportar documento de mapa a PDF', ¿alguna idea? captura de pantalla: i.imgur.com/fOaGp.jpg
sirgeo
@Mapperz - D'OH! ¡Mi error!
Chad Cooper
sigue obteniendo un error de nombre de archivo Mxd no válido al usar 'Exportar documento de mapa a PDF', ¿alguna idea? captura de pantalla: i.imgur.com/fOaGp.jpg
sirgeo
0

Sobre la base de las contribuciones de @Guest y @bteranUFA, reuní un script de Python y una caja de herramientas. Exporta todos los MXD desde una carpeta de entrada a una ubicación de salida.

Desde aquí descargue ArcPlus.tbxy Scripts\ExportFolder2PDF.pyguarde en algún lugar útil, luego lea las notas de uso si es necesario.

wilkie mate
fuente