ArcGIS 提供了创建地图册(打印或 Adobe PDF 格式)所需的所有工具。地图册是统一打印或导出的一组页面。其中许多页面都包含地图,而其他页面可包含文本、表格信息、内容列表或标题页及其他内容。
更加完整的地图册包括标题页和索引(或鹰眼)图页。您可以使用 ArcMap“数据驱动页面”和 arcpy.mapping Python 脚本的结合来实现该地图册的创建。使用单个地图文档(单个布局)的“数据驱动页面”来创建地图册的地图页面,而使用另一个地图文档创建索引地图页面。您也可以使用另一个地图文档来制作标题页面,或者使用另一个软件来创建标题页面的 PDF 文档。使用 arcpy.mapping 将所有这些元素组合到一个地图册中。
以上示例显示了密歇根州阿勒纳克县的地形图册。此地图包括一个标题页和一个鹰眼图页。可使用“数据驱动页面”和 arcpy.mapping Python 脚本创建此文档。
有关详细信息,请参阅创建数据驱动页面。
此示例基于以下前提假设:
- 现有地图文档已启用“数据驱动页面”。
此代码示例适用于使用 ArcGIS 构建地图册中呈现的简单参考系列地图册示例。
您可通过执行以下帮助主题中概述的步骤重新创建此地图册: - 已具有地图册标题页 PDF 文件。
- 已具有包含总览图页的 PDF 文件。
由于地图册需要显示页码,因此应确保“数据驱动页面”的起始页码值足够大以便涵盖最终地图册中起始页面前面的所有页。在本例中,地图页的前面有两页。因此,地图页应从第 3 页开始。请确保设置数据驱动页面 对话框中起始页码的值为 3。
同样,如果要显示页码还要确保使用正确的文本元素。不要使用带页数的数据驱动页面,因为该页数只是“数据驱动页面”的总数。不包括将加入最终地图册中的其他页面(例如,标题页或报告页)。您应该改为使用数据驱动页面页码并将此动态文本同显示页面总数的静态文本结合,例如,Page <dyn type="page" property="number"/> of 26。
如果已准备好地图文档和 PDF 文件,便可运行以下代码创建最终地图册 PDF。Python 窗口或独立 Python 应用程序中都可以运行此代码。
虽然本主题中的特定代码仅适用于上述示例地图册,但您可以将此处介绍的过程和技巧应用到自己的地图册中。
该脚本将地图册导出到添加了标题页和总览图页的 PDF。
import arcpy, os
# Create an output directory variable
#
outDir = r"C:\temp\MBExample\final_output"
# Create a new, empty pdf document in the specified output directory
#
finalpdf_filename = outDir + r"\FinalMB.pdf"
if os.path.exists(finalpdf_filename):
os.remove(finalpdf_filename)
finalPdf = arcpy.mapping.PDFDocumentCreate(finalpdf_filename)
# Add the title page to the pdf
#
finalPdf.appendPages(r"C:\temp\MBExample\ancillary_pages\TitlePage.pdf")
# Add the index map to the pdf
#
finalPdf.appendPages(r"C:\temp\MBExample\maps\IndexMap.pdf")
# Export the Data Driven Pages to a temporary pdf and then add it to the
# final pdf. Alternately, if your Data Driven Pages have already been
# exported, simply append that document to the final pdf.
#
mxdPath = r"C:\temp\MBExample\maps\ArenacDDP.mxd"
tempMap = arcpy.mapping.MapDocument(mxdPath)
tempDDP = tempMap.dataDrivenPages
temp_filename = r"C:\temp\MBExample\temp_pdfs\tempDDP.pdf"
if os.path.exists(temp_filename):
os.remove(temp_filename)
tempDDP.exportToPDF(temp_filename, "ALL")
finalPdf.appendPages(temp_filename)
# Update the properties of the final pdf
#
finalPdf.updateDocProperties(pdf_open_view="USE_THUMBS",
pdf_layout="SINGLE_PAGE")
# Save your result
#
finalPdf.saveAndClose()
# Delete variables
#
del finalPdf, tempMap, tempDDP
最开始几行代码表示,导入所需模块;创建保存最终地图册 PDF 的输出位置变量;在指定的输出位置文件夹中创建新的空 PDF 文档。该 PDF 即是该脚本的最终输出。
有关详细信息,请参阅 arcpy.mapping 的 PDFDocument 类。
接下来几行代码表示将标题页和总览图页添加到最终 PDF。本示例的前提假设是存在可用作标题页和总览图页的现有 PDF 文档。
下一步是添加地图页面。这个步骤需要已经启用“数据驱动页面”的地图文档。在本例中,此文档为 ArenacDDP.mxd。
有关详细信息,请参阅 arcpy.mapping 的MapDocument 类和 DataDrivenPages 类。
最后的代码表示对属性进行更新,然后保存和关闭最终 PDF。