ArcGIS enthält alle Werkzeuge, die Sie benötigen, um Kartensammlungen im gedruckten Format oder im Adobe PDF-Format zu erstellen. Eine Kartensammlung ist eine Sammlung von Seiten, die zusammen gedruckt oder exportiert werden. Viele der Seiten enthalten Karten, aber andere Seiten können auch Text, Tabelleninformationen, Inhaltstabellen oder Titelseiten und anderen Inhalt enthalten.
Bei gegenüberliegenden Seiten können Ersteller von Karten den Bundsteg der Sammlung angeben. Der Bundsteg ist der Bereich, der zum Binden von Buchseiten erforderlich ist. Häufig ist dies eine Kartensammlung, die eine Referenzserie enthält, mit der eine Folge von Kartenausdehnungen abgedeckt wird, wie dies auch bei einer Referenzkartensammlung der Fall ist. Im Gegensatz zu einer Referenzserie werden in dieser Kartensammlung die Layouts von zwei Kartendokumenten verwendet: eines für die linke Seite und eines für die rechte Seite. Die Serienausdehnungen werden mit der Funktion "Kartenserie" definiert. Erstellen Sie in jedem Kartendokument den gleichen Kartenserien-Satz. Das arcpy.mapping-Python-Skript verwendet beide Kartendokumente und fügt die linken und rechten Seiten im endgültigen PDF-Dokument in der richtigen Reihenfolge zusammen.
Das Beispiel oben zeigt eine topographische Kartensammlung mit gegenüberliegenden Seiten für Arenac County, Michigan. Beachten Sie, dass die ungeraden Kartenseiten (z. B. Seite 3) eine Layout-Ausrichtung aufweisen, bei der alle Seitenelemente nach links verschoben sind. Gerade Kartenseiten (z. B. Seite 4) verfügen über eine nach rechts verschobene Ausrichtung. Der Grund ist, dass Platz für das Binden des Buches freigelassen werden muss. Außerdem wurden die Seitennummern und die Locator-Karte für jedes Karten-Layout so angeordnet, dass sie außerhalb der Seite liegen. Jede Seitenausrichtung (sowohl links als auch rechts) basiert auf einem separaten ArcMap-Dokument. Sie können dieses Dokument mit der Funktion "Kartenserie" und einem arcpy.mapping-Python-Skript erstellen.
Weitere Informationen finden Sie unter Erstellen einer Kartenserie.
Dieses Beispiel umfasst die folgenden Annahmen:
- Sie haben zwei vorhandene Kartendokumente mit aktivierten Kartenserien, wobei ein Dokument für die linken Seiten und das andere Dokument für die rechten Seiten eingerichtet wird.
Dieses Codebeispiel funktioniert mit der einfachen in Erstellen von Kartensammlungen mit ArcGIS als Beispiel gezeigten Referenzserien-Kartensammlung.
Sie können diese Kartensammlung erneut erstellen, indem Sie die Schritte folgender Hilfethemen ausführen:- Starten der Kartensammlung
- Erstellen von Gitter-Index-Features
- Ändern des Gitter-Index-Feature-Layers
- Aktivieren der Kartenserie
- Erstellen einer Locator-Karte für eine Kartensammlung
- Hinzufügen von dynamischem Text für eine Kartensammlung
- Exportieren einer Kartensammlung
Da in der Kartensammlung Seitenzahlen angezeigt werden, sollten Sie sicherstellen, dass für die Seitenzahl der Anfangsseite der Kartenserie alle vorangehenden Seiten der endgültigen Kartensammlung berücksichtigt werden. In diesem Beispiel gehen den Kartenseiten zwei Seiten voraus. Daher beginnen die Kartenseiten bei Seite 3. Stellen Sie sicher, dass Sie im Dialogfeld Einrichten der Kartenserie für Seitenzahl der Anfangsseite den Wert 3 eintragen.
- Sie verfügen über eine PDF-Datei für die Titelseite einer Kartensammlung.
- Sie verfügen über eine PDF-Datei mit der Übersichtskartenseite.
Sobald Sie das Kartendokument und die PDF-Dateien vorbereitet haben, können Sie den unten stehenden Code ausführen, um eine endgültige PDF-Datei der Kartensammlung zu erstellen. Sie können den Code im Python-Fenster oder in einer eigenständigen Python-Anwendung ausführen.
Obwohl der Code in diesen Themen speziell für die obige beispielhafte Kartensammlung gilt, können Sie die beschriebenen Verfahren und Tipps auch auf eigene Kartensammlungen anwenden.
Erstellen einer Kartensammlungs-PDF mit gegenüberliegenden Seiten.
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")
# Create Facing Pages for the map book
# Create pages for left-hand side of the book
#
mxdPathLeft = r"C:\temp\MBExample\maps\Arenac County MB Left.mxd"
tempMapLeft = arcpy.mapping.MapDocument(mxdPathLeft)
tempDDPLeft = tempMapLeft.dataDrivenPages
# Loop creates individual pdf's for odd numbered pages
#
for pgNumLeft in range(1, tempDDPLeft.pageCount + 1, 2):
temp_filename = r"C:\temp\MBExample\temp_pdfs\MB_" + \
str(pgNumLeft) + ".pdf"
if os.path.exists(temp_filename):
os.remove(temp_filename)
tempDDPLeft.exportToPDF(temp_filename, "RANGE", pgNumLeft)
# Create pages for right-hand side of the book
#
mxdPathRight = r"C:\temp\MBExample\maps\Arenac County MB Right.mxd"
tempMapRight = arcpy.mapping.MapDocument(mxdPathRight)
tempDDPRight = tempMapRight.dataDrivenPages
# Loop creates individual pdf's for even numbered pages
#
for pgNumRight in range(2, tempDDPRight.pageCount + 1, 2):
temp_filename = r"C:\temp\MBExample\temp_pdfs\MB_" + \
str(pgNumRight) + ".pdf"
if os.path.exists(temp_filename):
os.remove(temp_filename)
tempDDPRight.exportToPDF(temp_filename, "RANGE", pgNumRight)
# Append right and left-hand pages together in proper order
#
for pgNum in range(1, tempDDPLeft.pageCount + 1):
print "Page", pgNum, "of", tempDDPLeft.pageCount
tempPDF = r"C:\temp\MBExample\temp_pdfs\MB_" + str(pgNum) + ".pdf"
finalPdf.appendPages(tempPDF)
# 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, mxdPathLeft, mxdPathRight, tempDDPLeft, tempDDPRight,
tempMapLeft, tempMapRight, tempPDF
Mit den ersten Codezeilen werden die benötigten Module importiert, und es wird eine Variable für das Ausgabeverzeichnis der endgültigen PDF-Datei der Kartensammlung sowie ein neues, leeres PDF-Dokument im angegebenen Ausgabeverzeichnis erstellt. Diese PDF-Datei stellt die endgültige Ausgabe des Skripts dar.
Weitere Informationen finden Sie im arcpy.mapping-Thema zur PDFDocument-Klasse.
Mit den nächsten Codezeilen werden der endgültigen PDF-Datei die Titelseite und die Übersichtskartenseite hinzugefügt. In diesem Beispiel wird angenommen, dass Sie bereits über PDF-Dokumente für die Titel- und Übersichtskartenseiten verfügen.
Als Nächstes werden mithilfe von Code Kartenserien für das Kartendokument mit dem links ausgerichteten Layout erstellt. PDFs werden mit diesen Kartenserien für jede ungerade Seite erstellt. Dies wird dann für die rechts ausgerichteten Seiten wiederholt, wobei PDFs für die geraden Seiten erstellt werden.
Weitere Informationen finden Sie in den arcpy.mapping-Themen zur MapDocument-Klasse und DataDrivenPages-Klasse.
Wenn Sie das Python-Fenster verwenden, um diesen Code auszuführen, sollten Sie wissen, wie mehrere Befehle für die Schleife eingegeben werden.
Wenn Sie nach der ersten Zeile weitere Zeilen eingeben möchten, ohne den Codeblock auszuführen, halten Sie nach dem Eingeben der ersten Zeile die STRG-Taste gedrückt und drücken die EINGABETASTE. Der Cursor wird im Python-Fenster in eine sekundäre Eingabeaufforderung (...) verschoben, und Sie können eine zusätzliche Codezeile eingeben. Nachdem Sie alle Befehle auf diese Weise eingegeben haben, drücken Sie zweimal die EINGABETASTE, um den gesamten Codeblock auszuführen.
Danach müssen die linken und rechten Seiten in der richtigen Reihenfolge in die finale PDF eingefügt werden.
Zuletzt werden die Eigenschaften aktualisiert, und nach dem Speichervorgang wird die endgültige PDF-Datei geschlossen.