Я думаю, что ваши требования были бы наиболее легко и интуитивно понятны при наличии единой карты со всеми включенными слоями, а затем написать простой скрипт на 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