Comment créer un Map Book de pages avec la même zone affichée mais différentes couches activées / désactivées?


9

Dans ESRI, un Map Book est mieux adapté à une série de fonctionnalités qui obtiennent chacune leur propre page. Il vous permet de choisir une entité et de générer une page de livre de carte pour chaque entité, y compris toute information supplémentaire que vous souhaitez ajouter à chaque page via du texte dynamique, des graphiques, etc.

Existe-t-il une alternative, par exemple une série de pages montrant la même zone EXACT mais avec différents calques activés et désactivés? Nous avons un document d'amélioration des immobilisations que je dois créer pour montrer les limites de la ville sur chaque page. Une page répertorie tous les postes de police et les casernes de pompiers, une autre montre les systèmes d'alimentation en eau proposés, une autre montre les autoroutes et les autoroutes et les travaux en cours à proximité ou sur eux ... etc., ad nauseum.

Existe-t-il un moyen de configurer cela de sorte que je n'ai PAS à créer un MXD distinct pour chaque page de carte de ce document?


quelle version de bureau? les outils ont un peu changé dans chaque version.
Brad Nesom

ArcGIS for Desktop Advanced 10.2.2
randomblink

Réponses:


10

J'ai pu le faire lorsque je les avais pour ArcGIS 9.3 et cela fonctionne très bien. Je ne sais pas si cela fonctionnera avec ArcGIS 10.0 ou version ultérieure, comme indiqué sur leur site Web, mais j'essaierais.

ArcMapBook

Modifier:
Cela peut être accompli en créant simplement une page rectangulaire pour chaque ensemble de couches empilées directement les unes sur les autres. Nommez chaque page séparément et attribuez une valeur à chaque calque à afficher dans le cadre.
Vous devez également affecter des valeurs d'attribut aux éléments qui n'apparaissent que sur des pages spécifiques.
Utilisez ensuite la définition de page pour restreindre les objets aux noms de page.
Dans les propriétés de la couche sur la page de requête de définition> définition de page.
pagedef

Il existe une option pour activer la correspondance / ne correspond pas et un nom de champ.
Activée
Les possibilités de codage de vos données dans le cadre sont infinies.
De plus, si vous avez des éléments que vous souhaitez afficher sur toutes les pages, ils ne sont tout simplement pas activés.


1
Cela fonctionne toujours avec 10.1, 10.2
Brad Nesom

4

Je pense que vos exigences seraient plus facilement et intuitivement satisfaites en ayant une seule carte avec toutes les couches incluses, puis en écrivant un script Python simple qui utilise la couche .visible pour activer / désactiver les couches avant d'exporter chaque page en utilisant ExportToPDF .

PDFDocument peut ensuite être utilisé pour ajouter les pages dans un seul fichier PDF.

La technique est décrite dans un blog Esri intitulé Combining Data Driven Pages with Python and arcpy.mapping qui inclut également le code ci-dessous.

Par exemple, vous pouvez créer un atlas thématique avec plusieurs pages spécifiant un thème différent sur chaque page. L'exemple suivant effectue un zoom sur une parcelle sélectionnée, bascule sur la visibilité de différentes couches et exporte la mise en page pour plusieurs thèmes afin de créer un rapport de parcelle avec une carte des sols, une carte d'inondation et une carte de zonage:

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

Y aurait-il un moyen de le faire pour un grand nombre de fichiers de formes? Je n'ai jamais vraiment utilisé Python, mais je suppose que le lyrList a les couches qui seront parcourues. J'ai 121 couches différentes, avec des noms comme DA_1, DA_2, DA_3 etc. Existe-t-il un moyen de les charger sans les nommer individuellement?
The Silent Cartographer

@TheSilentCartographer Votre liste de laters pourrait être aussi longue que vous le souhaitez. Il devra contenir les noms de ceux pour lesquels vous souhaitez créer un PDF. Il peut y avoir plusieurs façons d’inscrire ces noms dans la liste.
PolyGeo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.