Erstellen einer Kartensammlung mit gegenüberliegenden Seiten

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 einfachen Referenzserie verwendet diese Kartensammlung jedoch die Layouts von zwei Kartendokumenten: ein Layout für die linke Seite und ein Layout 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.

Beispiel: Einfache Referenzserien-Kartensammlung

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 einer Kartenserie und einem arcpy.mapping-Python-Skript erstellen.

Weitere Informationen finden Sie unter Erstellen einer Kartenserie.

Dieses Beispiel umfasst die folgenden Annahmen:

TippTipp:

Sie können Titel- und Übersichtskartenseiten mit ArcMap erstellen. Erstellen Sie einfach den Inhalt für jede Seite, und exportieren Sie ihn in eine separate PDF.

Sobald Sie über ein Kartendokument und PDF-Dateien verfügen, können Sie den Code unten ausführen, um die finale Kartensammlungs-PDF zu erstellen. Sie können den Code im Python-Fenster oder in einer eigenständigen Python-Anwendung ausführen.

Obwohl der spezielle Code in diesem Thema für das oben angegebene Beispiel für eine 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

Die ersten Codezeilen importieren die notwendigen Module, erstellen eine Ausgabeverzeichnisvariable, in der die finale Kartensammlungs-PDF gespeichert wird und erstellen im angegebenen Ausgabeverzeichnisordner ein neues, leeres PDF-Dokument. Diese PDF ist die finale Ausgabe für dieses Skript.

TippTipp:

Programming languages, such as Python, treat a backslash (\) as an escape character. For instance, \n represents a line feed, and \t represents a tab. When specifying a path, a forward slash (/) can be used in place of a backslash. Two backslashes can be used instead of one to avoid a syntax error. A string literal can also be used by placing the letter r before a string containing a backslash so it is interpreted correctly.

Weitere Informationen finden Sie in der PDFDocument-Klasse von arcpy.mapping.

Die nächsten Codezeilen fügen der finalen PDF die Titelseite und die Übersichtskartenseite hinzu. In diesem Beispiel wird davon ausgegangen, dass Sie über vorhandene PDF-Dokumente verfügen, die für Titel- und Übersichtskartenseiten verwendet werden können.

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 unter MapDocument-Klasse und DataDrivenPages-Klasse von arcpy.mapping.

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.

Mithilfe des Codes werden schließlich die Eigenschaften aktualisiert und die finale PDF gespeichert und geschlossen.

Verwandte Themen


7/10/2012