ผมคิดว่าความต้องการของคุณจะเป็นมากที่สุดได้อย่างง่ายดายและสังหรณ์ใจพบโดยมีแผนที่เดียวกับชั้นทั้งหมดที่รวมอยู่แล้วในการเขียนสคริปต์ Python ง่ายที่ใช้ชั้น .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