我认为,通过使用一张包含所有图层的地图,然后编写一个简单的Python脚本,可以轻松,直观地满足您的要求,该脚本使用layer .visible来打开/关闭图层,然后使用ExportToPDF导出每个页面。
然后可以使用PDFDocument将页面附加到单个PDF文件中。
该技术在Esri博客(称为“ 将数据驱动页面与Python和arcpy.mapping结合起来”)中进行了描述,该博客还包括以下代码。
例如,您可以创建具有多个页面的主题图集,并在每个页面上指定不同的主题。以下示例放大到选定的宗地,切换不同的图层可见性并导出多个主题的布局,以创建具有土壤图,洪水图和分区图的宗地报告:
import arcpy, os
#Specify output path and final output PDF
outPath = r”C:MyProjectoutput\”
finalPdf = arcpy.mapping.PDFDocumentCreate(outPath + “ParcelReport.pdf”)
#Specify the map document and the data frame
mxd = arcpy.mapping.MapDocument(r”C:MyProjectMyParcelMap.mxd”)
df = arcpy.mapping.ListDataFrames(mxd, “Layers”)[0]
#Select a parcel using the LocAddress attribute and zoom to selected
parcelLayer = arcpy.mapping.ListLayers(mxd, “Parcels”, df)[0]
arcpy.SelectLayerByAttribute_management(parcelLayer, “NEW_SELECTION”, “”LocAddress” = ’519 Main St’”)
df.zoomToSelectedFeatures()
#Turn on visibility for each theme and export the page
lyrList = ["Soils", "Floodplains", "Zones"]
for lyrName in lyrList:
lyr = arcpy.mapping.ListLayers(mxd, lyrName, df)[0]
lyr.visible = True
#Export each theme to a temporary PDF and append to the final PDF
tmpPdf = outPath + lyrName + “_temp.pdf”
if os.path.exists(tmpPdf):
os.remove(tmpPdf)
arcpy.mapping.ExportToPDF(mxd, tmpPdf)
finalPdf.appendPages(tmpPdf)
#Turn off layer visibility and clean up for next pass through the loop
lyr.visible = False
del lyr, tmpPdf
del mxd, df, finalPdf