使用ArcGIS Desktop批量导出MXD到PDF文件?


9

尼科Burgerhart在2008年制定了一个名为“批量出口到MXD PDF”回梦幻般的剧本 http://arcscripts.esri.com/details.asp?dbid=14872 任何想法如何实现它在ArcGIS 10?也许使用Python?数据驱动页面没有我能找到的可比性。

这是“自述文件”文本文件中不包含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 (nicoburgerhart@hotmail.com)
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 

Answers:


7

现在,arcpy.mapping模块中包含将地图文档导出为PDF的功能

Esri KB的代码示例原理:如何使用Python将地图文档导出为PDF

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)

有关更多扩展工具箱的示例,请参见@bteranUFA,将MXD导出为PDF


感谢Mapperz,那里有很多不错的样子。... 使用“将地图文档导出为PDF”时,由于某种原因,不断收到无效的Mxd文件名错误,有什么想法吗?屏幕截图:i.imgur.com/fOaGp.jpg
sirgeo 2011年

.mxd中是否有空格或特殊字符?
Mapperz

是的...。空格,下划线和连字符。以下是一些示例:PLR11001200_1101A-BO.mxd 1101A_ LT 314.mxd 1101A_BB 300B.mxd 1101A_BO.mxd 您认为我需要删除空格和连字符吗?明天早上上班加班时,我会给它开枪。
sirgeo 2011年

1
感谢Mapperz...。删除所有空格,下划线和连字符后,确实可以正常工作。
sirgeo 2011年

1
额外的链接(@Mapperz的链接不再起作用):support.esri.com/technical-article/000012420
gisnside

1

看起来这是一个VBA模块。如果将VBA与ArcGIS 10一起安装,则应该能够以相同的方式运行它。(仍支持VBA,但在下一版本中将不支持。)更好的方法是将其重写为附加组件。


感谢Jakub,是否存在有关如何在ArcGIS 10中安装VBA的逐步说明的链接?关于如何重写为附件的任何建议?
sirgeo 2011年

1
您将需要来自ESRI的许可证文件,并且VBA安装程序是主安装DVD上的项目之一。至于插件(对不起,不是插件),VB .NET有一些学习曲线,但是值得付出努力。以下是演练的链接:help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/…–
Jakub Sisak GeoGraphics

1

将脚本添加到工具箱,然后通过右键单击脚本工具并输入名称(如下图所示)并选择文件夹的数据类型(如下图所示)来设置两个参数: 在此处输入图片说明

#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

0

查看ESRI资源中心上的这组GP工具,其中可能有一些内容可以批量导出为PDF。


喜欢的想法-与我相同的链接。
Mapperz

感谢Chad,使用“将地图文档导出为PDF”时,由于某种原因,我一直收到无效的Mxd文件名错误,有什么想法吗?屏幕截图:i.imgur.com/fOaGp.jpg
sirgeo 2011年

@Mapperz-D'OH!我的错!
乍得·库珀

继续使用“将地图文档导出为PDF”时收到无效的Mxd文件名错误,有什么想法吗?屏幕截图:i.imgur.com/fOaGp.jpg
sirgeo 2011年

0

@Guest和@bteranUFA 的贡献的基础上,我整理了一个python脚本和工具箱。它将所有MXD从输入文件夹导出到输出位置。

这里下载ArcPlus.tbxScripts\ExportFolder2PDF.py保存在有用的地方,然后根据需要阅读使用说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.