Création d'un atlas avec pages opposées
ArcGIS fournit tous les outils nécessaires pour créer des atlas imprimés ou au format PDF d'Adobe. Un atlas est un ensemble de pages imprimées ou exportées ensemble. La plupart des pages contiennent des cartes, mais d'autres pages peuvent présenter du texte, des informations tabulaires, des tables des matières ou des titres et tout autre contenu.
Les pages opposées permettent à l'auteur de la carte de prendre en compte la reliure de l'atlas. La reliure est l'espace requis pour relier ensemble les pages de l'atlas. La plupart du temps, il s'agit d'un atlas contenant une série de référence qui couvre une suite d'étendues de carte, tout comme un atlas de référence. Toutefois, contrairement à une série de référence, cet atlas utilise les mises en page de deux cartes : une pour la page de gauche et une pour la page de droite. Les pages dynamiques définissent l'étendue de la série. Créez le même ensemble de pages dynamiques dans chaque carte. Le script Python arcpy.mapping utilise les deux cartes et rassemble les pages de droite et de gauche dans le document PDF final dans l'ordre approprié.
L'exemple ci-dessus montre un atlas topographique d'Arenac County, dans le Michigan, avec des pages opposées. Remarquez que l'alignement des pages impaires (la page 3 par exemple) est réalisé de façon à ce que tous les éléments de la page soient déplacés sur la gauche. Les pages paires (la page 4 par exemple) sont alignées sur la droite. Cette disposition permet de libérer de l'espace pour relier l'atlas. De même, les numéros de page et la carte générale de situation ont été placés sur chaque mise en page de façon à se trouver à l'extérieur de la page. Chaque alignement de page (à gauche et à droite) est basé sur un document ArcMap distinct. Vous pouvez créer ce document à l'aide des pages dynamiques et d'un script Python arcpy.mapping.
Pour plus d'informations, reportez-vous à la rubrique Création de pages dynamiques
Cet exemple repose sur les conditions suivantes :
- Vous disposez de deux cartes existantes dont les pages dynamiques sont activées : l'une des cartes est définie pour les pages de gauche et l'autre pour les pages de droite.
Cet exemple de code utilise l'exemple d'atlas de référence simple figurant dans la rubrique Création d'atlas avec ArcGIS.
Vous pouvez recréer cet atlas en suivant les étapes décrites dans les rubriques d'aide suivantes :Démarrage de l'atlasCréation d'entités de grille d'indexModification de la couche d'entités de grille d'indexActivation des pages dynamiquesCréation d'une carte générale de situation pour un atlasAjout de texte dynamique pour un atlasExportation d'un atlasUne fois que vous avez créé une carte avec des pages dynamiques, vous devez créer une copie de la carte. Lorsque vous avez deux copies, vous pouvez réorienter les éléments cartographiques de chaque document, de telle sorte qu'une mise en page soit orientée à gauche et l'autre, à droite. Assurez-vous que les noms que vous attribuez aux cartes vous permettent de distinguer celle qui devra figurer à gauche de votre atlas final, de celle qui devra figurer à droite.Puisque l'atlas affiche des numéros de page, vous devez vous assurer que le numéro de la première page dynamique prend en compte toutes les pages de l'atlas final qui la précède. Dans cet exemple, il y a deux pages qui précèdent les pages de carte. Par conséquent, les pages de carte démarrent avec "page 3". Assurez-vous que "3" est la valeur attribuée pour l'option Numéro de la page de début dans la boîte de dialogue Configurer les pages dynamiques.
- Vous disposez d'un fichier PDF existant pour la page de titre de l'atlas.
- Vous disposez d'un fichier PDF existant qui contient la page de carte globale.
Vous pouvez créer les pages de titre et de carte globale à l'aide d'ArcMap. Créez simplement un contenu pour chaque page et exportez-le vers un PDF distinct pour chacune d'entre elles.
Une fois que votre carte et vos fichiers PDF sont prêts, vous pouvez exécuter le code ci-dessous pour créer votre atlas final au format PDF. Vous pouvez exécuter le code dans la fenêtre Python ou dans une application Python autonome.
Bien que le code spécifique de cette rubrique s'applique à l'exemple d'atlas ci-dessus, vous pouvez également utiliser les procédures et les conseils présentés ici pour vos propres cartes et atlas.
Créez un atlas avec pages opposées au format PDF.
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
Les premières lignes de code permettent d'effectuer les opérations suivantes : importer les modules nécessaires ; créer une variable d'emplacement des données en sortie où l'atlas final au format PDF sera enregistré ; créer un nouveau document PDF vide dans le dossier d'emplacement des données de sortie spécifié. Ce PDF est le document de sortie final pour ce script.
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.
Pour plus d'informations, reportez-vous à la rubrique Classe PDFDocument d'arcpy.mapping.
Les lignes de code suivantes ajoutent la page de titre et la page de carte globale au PDF final. Cet exemple suppose que vous disposez de documents PDF existants pouvant être utilisés pour les pages de titre et de carte globale.
Ensuite, le code crée des pages dynamiques pour la carte avec la mise en page alignée à gauche. Des PDF sont créés à l'aide de ces pages dynamiques pour chaque page impaire. L'opération est ensuite répétée pour les pages alignées à droite, avec création de PDF pour les pages paires.
Pour plus d'informations, reportez-vous aux rubriques Classe MapDocument et Classe DataDrivenPages d'arcpy.mapping.
Si vous utilisez la fenêtre Python pour exécuter ce code, vous devez savoir comment entrer plusieurs commandes pour la boucle.
Si vous souhaitez entrer d'autres lignes après la première sans exécuter le bloc de code : après avoir entré la première ligne, maintenez enfoncée la touche Ctrl et appuyez sur Entrée. Le curseur se place sur une invite secondaire (...) dans la fenêtre Python, et vous pouvez entrer une ligne de code supplémentaire. Une fois toutes les commandes entrées de cette manière, appuyez deux fois sur Entrée pour exécuter le bloc de code entier.
Ensuite, les pages de gauche et de droite doivent être ajoutées dans l'ordre approprié au PDF final.
Enfin, le code met à jour les propriétés, puis enregistre et ferme le PDF final.