Exportando em lote arquivos MXD para PDF usando o ArcGIS Desktop?

9

Nico Burgerhart criou um script fantástico chamado "Exportação em lote de MXD para PDF" em 2008. http://arcscripts.esri.com/details.asp?dbid=14872 Alguma idéia de como implementá-lo no ArcGIS 10? Algo usando Python, talvez? O Data Driven Pages não tem nada comparável que eu possa encontrar.

Aqui estão as etapas no arquivo de texto "leia-me", que não combina com a nova barra de menus do 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
fonte

Respostas:

7

Exportar documento de mapa para PDF agora está incluído no módulo arcpy.mapping

Exemplo de amostra de código do Esri KB Como: Exportar documentos de mapa para PDF usando 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 um exemplo mais extenso da Toolbox, consulte Exportar MXD para PDF, cortesia de @bteranUFA

Mapperz
fonte
Obrigado Mapperz, muitos bons por aí se parecem .... continuo recebendo erro de nome de arquivo Mxd inválido por algum motivo ao usar 'Exportar documento de mapa para PDF', alguma idéia? captura de tela: i.imgur.com/fOaGp.jpg
sirgeo 11/03
Você tem espaços ou caracteres especiais no seu .mxd?
Mapperz
sim .... espaços, sublinhados e um hífen. Aqui estão alguns exemplos: PLR11001200_1101A-BO.mxd 1101A_ LT 314.mxd 1101A_BB 300B.mxd 1101A_BO.mxd Você acha que preciso remover os espaços e hífens? vou tentar amanhã de manhã, quando for trabalhar para fazer horas extras.
sirgeo
11
Obrigado Mapperz .... De fato, funciona bem após remover todos os espaços, sublinhados e hífens.
31411 sir siro
11
Uma ligação adicional (@ ligação de Mapperz não está mais funcionando): support.esri.com/technical-article/000012420
gisnside
1

Parece que este é um módulo VBA. Se você instalar o VBA com ArcGIS 10, poderá executá-lo da mesma forma. (O VBA ainda é suportado, mas não estará disponível na próxima versão.) Uma abordagem melhor seria reescrever isso como um complemento.

Jakub Sisak GeoGraphics
fonte
Obrigado Jakub, existe um link com instruções passo a passo sobre como instalar o VBA com ArcGIS 10? alguma sugestão sobre como reescrever como um complemento?
sirgeo
11
Você precisará de um arquivo de licença do instalador da ESRI e o VBA é um dos itens do DVD de instalação principal. Quanto ao Add-In (desculpe, não Add On), existe um pouco de curva de aprendizado com o VB .NET, mas vale a pena. Aqui está um link para o passo a passo: help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/…
Jakub Sisak GeoGraphics
1

Adicione o script a uma caixa de ferramentas e, em seguida, configure dois parâmetros clicando com o botão direito do mouse na ferramenta de script e digitando a exibição chamada como abaixo da imagem e escolhendo o tipo de dados da pasta como na imagem abaixo: insira a descrição da imagem aqui

#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
Hóspede
fonte
0

Veja neste conjunto de ferramentas de GP no ESRI Resource Center, pode haver algo para exportar para PDF em lote.

Chad Cooper
fonte
como mentes - mesmo link que eu.
Mapperz
Obrigado Chad, continuo recebendo erro de nome de arquivo Mxd inválido por algum motivo ao usar 'Exportar documento de mapa para PDF', alguma idéia? captura de tela: i.imgur.com/fOaGp.jpg
sirgeo 11/11
@Mapperz - D'OH! Meu erro!
Chad Cooper
continue recebendo o erro de nome de arquivo Mxd inválido ao usar 'Exportar documento de mapa para PDF', alguma idéia? captura de tela: i.imgur.com/fOaGp.jpg
sirgeo 12/03
0

Com base nas contribuições do @Guest e do @bteranUFA, montei um script python e uma caixa de ferramentas. Ele exporta todo o MXD de uma pasta de entrada para um local de saída.

A partir daqui, baixe ArcPlus.tbxe Scripts\ExportFolder2PDF.pysalve em algum lugar útil e, em seguida, leia as notas de uso, se necessário.

Matt Wilson
fonte