¿Cómo hacer que el Libro de mapas de páginas con la misma área que se muestra pero con diferentes capas esté activado / desactivado?

9

En ESRI, un Libro de mapas es el más adecuado para una serie de características que cada una tiene su propia página. Le permite elegir una función y generar una página de libro de mapas para cada función, incluida cualquier información adicional que desee agregar a cada página a través de texto dinámico, gráficos, etc.

¿Existe una alternativa para decir una serie de páginas que muestran la misma área EXACT pero con diferentes capas activadas y desactivadas? Tenemos un documento de Mejoras de capital que debo crear que muestra los límites de la ciudad en cada página. Una página tiene todas las estaciones de policía y bomberos enumeradas, otra muestra los sistemas de agua propuestos, otra muestra las autopistas y autopistas y el trabajo que se realiza cerca o sobre ellas ... etc., hasta la saciedad.

¿Hay alguna forma de configurar esto para que NO tenga que crear un MXD separado para cada página de mapa de este documento?

randomblink
fuente
¿Qué versión de escritorio? Las herramientas han cambiado un poco en cada versión.
Brad Nesom
ArcGIS for Desktop Advanced 10.2.2
randomblink

Respuestas:

10

Pude hacer esto cuando los tuve para ArcGIS 9.3 y funciona muy bien. No sé si esto funcionará con ArcGIS 10.0 o posterior como se indica en su sitio web, pero lo probaría.

ArcMapBook

Editar:
Esto se puede lograr simplemente creando una página rectangular para cada conjunto de capas apiladas directamente una encima de la otra. Nombre cada página por separado y asigne un valor a cada capa que se mostrará en el marco.
También debe asignar valores de atributo a los elementos que solo aparecen en páginas específicas.
Luego use la definición de página para restringir los objetos a los nombres de página.
En las propiedades de capa en la definición Página de consulta> definición de página.
pagedef

Hay una opción para habilitar coincidencia / no coincidencia y un nombre de campo.
Habilitado
Hay infinitas posibilidades para codificar sus datos para que funcionen dentro del marco.
Además, si tiene elementos que desea mostrar en todas las páginas, simplemente no tienen eso habilitado.

PROBERT
fuente
1
Esto todavía funciona con 10.1, 10.2
Brad Nesom
4

Creo que sus requisitos se cumplirían de manera más fácil e intuitiva al tener un solo mapa con todas las capas incluidas y luego escribir un script Python simple que use la capa .visible para activar / desactivar las capas antes de exportar cada página usando ExportToPDF .

PDFDocument se puede utilizar para agregar las páginas en un solo archivo PDF.

La técnica se describe en un blog de Esri llamado Combinar páginas controladas por datos con Python y arcpy.mapping que también incluye el código a continuación.

Por ejemplo, puede crear un atlas temático con varias páginas que especifiquen un tema diferente en cada página. El siguiente ejemplo se amplía a una parcela seleccionada, alterna la visibilidad de diferentes capas y exporta el diseño de varios temas para crear un informe de parcela con un mapa de suelo, un mapa de inundación y un mapa de zonificación:

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
PolyGeo
fuente
¿Habría una manera de hacer esto para una gran cantidad de shapefiles? Realmente nunca he usado Python, pero supongo que lyrList tiene las capas que se reciclarán. Tengo 121 capas diferentes, con nombres como DA_1, DA_2, DA_3, etc. ¿Hay alguna forma de cargarlas sin nombrarlas individualmente?
El cartógrafo silencioso
@TheSilentCartographer Su lista de últimos puede ser tan larga como desee. Deberá contener los nombres de aquellos para quienes desea crear un PDF. Puede haber varias formas en que esos nombres entran en la lista.
PolyGeo