Se pueden integrar secuencias de comandos de mapa en las páginas controladas por datos para crear un libro de mapas que incluya mapas insertados personalizados en páginas diferentes, utilizando un único documento de mapa. Se puede introducir una lógica personalizada para controlar no sólo la visibilidad del mapa insertado, sino también su tamaño, ubicación y extensión.
Crear su libro de mapas
El primer paso es crear el documento de mapa y establecer las Páginas controladas por datos. Querrá diseñar un diseño de línea base que todas las páginas compartirán.
Agregar el mapa inserto al diseño
Después de que tenga su diseño de página básico, debe insertar un marco de datos que servirá como el mapa inserto.
- Haga clic en el menú Insertar y elija Marco de datos.
- Déle un nombre único al marco de datos. Este nombre se utilizará para identificar el marco de datos en la secuencia de comandos de exportación.
- Haga clic en Aceptar para cerrar el cuadro de diálogo Propiedades del marco de datos.
- Continúe para crear el mapa inserto al agregar las capas necesarias y simbolizarlas según desee.
Establecer los mapas insertos personalizados para páginas individuales
Debido a que la extensión, tamaño y posición del mapa inserto se establecerá para páginas individuales durante la exportación, debe conocer estos valores con anterioridad para que pueda hacer uso de ellos dentro de la secuencia de comandos de exportación. Esto significa que primero debe decidir qué páginas deben tener un mapa inserto. Luego deberá navegar a cada una de esas páginas, configurar el diseño como desee que aparezca en el producto final, y a continuación registrar la configuración adecuada que se utilizará en la secuencia de comandos final.
Los siguientes pasos lo llevan por el proceso de registrar manualmente la información del mapa inserto necesaria para una página en la serie de mapas. Estos pasos se deben repetir para cada página que contenga un mapa inserto.
- Navegue a una página que incluirá un mapa inserto. Registre el valor de índice de la página al abrir la barra de herramientas Páginas controladas por datos y cambiar la visualización a Mostrar página.
- Ubique y asigne el tamaño del marco de datos del mapa inserto en la página y establezca su extensión.
- Registre los valores Superior, Izquierdo, Derecho e Inferior de la extensión actual del mapa inserto. Para obtener esta información, abra el cuadro de diálogo Propiedades del Marco de datos del mapa inserto, haga clic en la pestaña Marco de datos y, a continuación, cambie la extensión a Extensión fija para que los valores de coordenadas aparezcan.
- Registre la información que necesite y cambie la extensión de nuevo a Automático. Si la extensión se establece como algo distinto a Automático, no podrá cambiarla en una secuencia de comandos. Los otros tipos de extensión son fijos y recibirá un error de tiempo de ejecución.
- Haga clic en la pestaña Tamaño y posición y registre los valores de posición x- y y-. Tenga en cuenta que estos reflejan el punto de anclaje actual y es necesario actualizarlos si el punto de anclaje se modifica alguna vez.
- Registre los valores de la altura y el ancho del marco de datos también.
- Cierre el cuadro de diálogo Propiedades del Marco de datos , teniendo cuidado de no aplicar los cambios no deseados.
Agregar un indicador de extensión
Puede agregar un indicador de extensión a su mapa principal para resaltar el área que se muestra en el mapa inserto.
- Abra el cuadro de diálogo Propiedades del marco de datos de su mapa principal y haga clic en la pestaña Indicadores de extensión.
- Agregue el marco de datos Mapa inserto.
- Utilice las opciones disponibles para establecer su apariencia.
Preparar el documento de mapa para la exportación
Después de haber creado el indicador de extensión y registrado la información necesaria para la secuencia de comandos, cree el documento de mapa de modo que no vea el indicador de extensión o mapa inserto en cada página.
- Mueva el marco de datos que contiene el mapa inserto del área de impresión de la página.
- Cambie la extensión del mapa inserto a algo mucho mayor que la extensión del marco de datos principal de manera que el indicador de extensión no aparezca en las páginas en las que no lo desea.
- Guarde el documento de mapa.
Escribir una secuencia de comandos de exportación
La siguiente es una muestra de secuencia de comandos que exporta un libro de mapas con mapas insertos en las páginas 1 y 3.
La siguiente secuencia de comandos exporta un libro de mapas con mapas insertos en las páginas 1 y 3.
import arcpy, os # Create an output directory variable # outDir = r"C:\Project\MapBook\final_output" # Create a new, empty pdf document in the specified output directory # This will be your final product finalpdf_filename = outDir + r"\FinalMapBook.pdf" if os.path.exists(finalpdf_filename): # Check to see if file already exists, delete if it does os.remove(finalpdf_filename) finalPdf = arcpy.mapping.PDFDocumentCreate(finalpdf_filename) # Create a Data Driven Pages object from the mxd you wish to export # mxdPath = r"C:\Project\MapBook\zipCodePopulation.mxd" tempMap = arcpy.mapping.MapDocument(mxdPath) tempDDP = tempMap.dataDrivenPages # Create objects for the layout elements that will be moving, e.g., inset data frame, scale text dataFrame = arcpy.mapping.ListDataFrames(tempMap, "Inset Map")[0] # Instead of exporting all pages at once, you will need to use a loop to export one at a time # This allows you to check each index and execute code to add inset maps to the correct pages # for pgIndex in range(1, tempDDP.pageCount + 1, 1): # Create a name for the pdf file you will create for each page temp_filename = r"C:\Project\MapBook\temp_pdfs\MB_" + \ str(pgIndex) + ".pdf" if os.path.exists(temp_filename): os.remove(temp_filename) # The following if statements check the current page index against given values # If the current page index matches, it will execute code to set up that page # If not, the page remains as is # Note: If you created a text file containing this information, this is where # you would paste in that code # Code for setting up the inset map on the first page # if (pgIndex == 1): # Set position of inset map to place it on the page layout dataFrame.elementPositionX = 0.5 dataFrame.elementPositionY = 0.6 # Set the desired size of the inset map for this page dataFrame.elementHeight = 2.0 dataFrame.elementWidth = 2.0 # Set the desired extent for the inset map insetExtent_1 = arcpy.Extent(-88.306778229417176, 41.590293951894907, -87.609922645465474, 42.300975912784295) dataFrame.extent = insetExtent_1 # Code for setting up the inset map on the third page # if (pgIndex == 3): # Set up inset map dataFrame.elementPositionX = 3.25 dataFrame.elementPositionY = 7 dataFrame.elementHeight = 2.45 dataFrame.elementWidth = 3.0 insetExtent_3 = arcpy.Extent(-83.889191535, 41.870516098, -82.875460656, 42.72572048) dataFrame.extent = insetExtent_3 # Code to export current page and add it to mapbook tempDDP.exportToPDF(temp_filename, "RANGE", pgIndex) finalPdf.appendPages(temp_filename) # Clean up your page layout by moving the data frame and resetting its extent after exporting the page # This will reset the page to the basic layout before exporting the next page # dataFrame.elementPositionX = 10 # Move inset data frame off the page dataFrame.scale = 350000000 # Change scale so extent indicator no longer visible in main data frame arcpy.RefreshActiveView() # Clean up # del tempMap # Update the properties of the final pdf # finalPdf.updateDocProperties(pdf_open_view="USE_THUMBS", pdf_layout="SINGLE_PAGE") # Save your result # finalPdf.saveAndClose()
En conclusión, al seguir este flujo de trabajo, puede crear libros de mapas con mapas insertos u otras entidades especiales sólo en algunas páginas mediante un único documento de mapa.