ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Ayuda
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plataforma de representación cartográfica para tu organización

ArcGIS Desktop

Un completo SIG profesional

ArcGIS Enterprise

SIG en tu empresa

ArcGIS Developers

Herramientas para crear aplicaciones basadas en la ubicación

ArcGIS Solutions

Plantillas de aplicaciones y mapas gratuitas para tu sector

ArcGIS Marketplace

Obtén aplicaciones y datos para tu organización.

  • Documentación
  • Soporte
Esri
  • Iniciar sesión
user
  • Mi perfil
  • Cerrar sesión

ArcMap

  • Inicio
  • Introducción
  • Cartografiar
  • Analizar
  • Administrar datos
  • Herramientas
  • Extensiones

ExportReport

  • Resumen
  • Debate
  • Sintaxis
  • Muestra de código

Resumen

Exporta un informe tabular con formato utilizando datos de capas o tablas independientes de un documento de mapa junto con la información de plantilla de informe que se proporciona en un archivo de diseño de informe (.rlf).

Debate

La función ExportReport proporciona un mecanismo para automatizar la generación de los informes usando capas o tablas creadas en un documento de mapa (.mxd) o capas de un archivo de capa (.lyr). Un archivo de diseño de informe creado en ArcMap es una plantilla que almacena información sobre el contenido y la ubicación de los elementos en un informe. El archivo de diseño de informe se usa con los datos de origen de un documento de mapa para crear informes de salida. Los datos de origen también pueden tener uniones asociadas y la información de tabla relacionada que se usa en el informe.

Nota:

La función ExportReport tiene una dependencia de la instalación de ArcMap. Por tanto, ExportReport solo se puede ejecutar en equipos que tengan ArcMap instalado. ExportReport no se ejecutará usando instalaciones independientes de ArcGIS Engine o ArcGIS Server. Además, ExportReport no funcionará como Servicio de geoprocesamiento.

Los datos de origen deben existir en un documento de mapa (.mxd) o en un archivo de capa (.lyr) y los nombres de campos del dataset deben coincidir con los del archivo de diseño de informe con el fin de que ExportReport se ejecute correctamente. Se puede usar un archivo de diseño de informe con diferentes fuentes de datos, siempre que el origen de datos tenga los mismos nombres de campos del dataset. Si los datos son similares pero los nombres de campos de la fuente de datos son distintos, el parámetro field_map se puede usar para volver a asignar los campos del archivo de diseño de informe a diferentes nombres de campos del dataset de origen.

Hay numerosos elementos creados en un archivo de diseño de informe de ArcMap que no se exponen directamente a través de la función ExportReport. Puede ser necesario crear un conjunto de plantillas específicas para generar y exportar distintas situaciones de informes.

Las herramientas de creación de informes de la interfaz de usuario de ArcMap tienen un botón denominado Opciones de dataset. Esto permite al autor elegir una de las cuatro formas de procesar los registros: Todo, Conjunto seleccionado, Extensión visible y Consulta de definición. El parámetro dataset_option tiene el mismo propósito y toma una palabra clave. Una dataset_option de ALL o SELECTED procesará los registros adecuados. Si dataset_option se ha definido como DEFINITION_QUERY, se debe proporcionar una cadena de caracteres válida para el parámetro report_definition_query. Si dataset_option se ha definido como EXTENT, se debe proporcionar un objeto Extensión válido para el parámetro extent.

Como en la interfaz de usuario, solo es posible usar una palabra clave de dataset_option cada vez. Por ejemplo, en la interfaz de usuario, no es posible procesar solo el conjunto seleccionado de registros y solo los de la extensión visible. La misma regla se aplica en el caso de la función ExportReport: los parámetros se deben definir de uno en uno. Si se define más de uno de estos parámetros, se sobrescribirán entre sí. Sin embargo, se pueden combinar los atributos estándar de ArcPy y las funciones de consulta espacial y se pueden asociar con un valor de SELECTED para que el parámetro dataset_option genere el informe final deseado. A continuación se indica un ejemplo.

El parámetro page_range permite generar un informe solo para un subconjunto de páginas. Puede ser un grupo continuo de páginas (5-12) o incluso un grupo discontinuo de páginas (3,7). En estos casos, cuando genere un informe y starting_page_number se haya definido como 1, los números de página impresos coincidirán con los que haya introducido (Página 3, Página 7). Esto se diseñó para situaciones en las que solo se va a imprimir un número seleccionado de páginas para insertarlas en informes ya existentes. Si la situación exige que los números de página de salida sean continuos, por ejemplo (Página 1, Página 2), debe definir el starting_page_number de modo que coincida con el número de página de interés y definir el page_range como una sola página. Esto significa que ExportReport se tendrá que ejecutar una vez por cada página; por ejemplo, una vez con starting_page_number = 3, page_range="3" y de nuevo con starting_page_number = 7, page_range="7".

El parámetro field_map solo es necesario si los nombres de campos del dataset difieren entre source_data y los nombres de campos utilizados para generar el archivo de diseño de informe. Al crear la field_map, solo los campos utilizados en el informe se deben agregar al diccionario. Si los campos se eliminan del diccionario de mapa de campos, se eliminarán también del informe. Los campos asignados deben tener tipos de datos idénticos, y los nombres de campos de field_map distinguen entre mayúsculas y minúsculas.

Es posible usar arcpy.mapping para crear informes con el fin de insertar un mapa en el informe. Las imágenes de un informe tienen una propiedad denominada Imagen de origen. Arcpy.mapping no tiene acceso a este valor, pero si el valor de la imagen de origen apunta a una ruta del disco, arcpy.mapping puede actualizar el archivo en el disco con una operación de exportación, y el motor de informes usará la imagen que esté disponible. En un ejemplo de páginas controladas por datos, puede cambiar la imagen en función de la extensión actual, por ejemplo, con arcpy.mapping antes de llamar a la siguiente página. A continuación se indica un ejemplo.

Para obtener más información sobre la creación de informes en ArcGIS, consulte los siguientes temas de introducción:

  • Qué son los informes en ArcGIS
  • Crear un informe

Sintaxis

ExportReport (report_source, report_layout_file, output_file, {dataset_option}, {report_title}, {starting_page_number}, {page_range}, {report_definition_query}, {extent}, {field_map})
ParámetroExplicaciónTipo de datos
report_source

A reference to a Layer or TableView object.

Object
report_layout_file

A string that represents the path and file name of the report layout file (.rlf).

String
output_file

A string that represents the path and file name of the output file. The specified file extension controls the output format. The following extensions/formats are supported: .htm, .html, .pdf, .rtf, .tif, .tiff, .txt, and .xls.

String
dataset_option

A keyword that specifies which dataset rows will be processed in the output report. This value will override the Dataset Options value stored in the report layout file which is found in the Report Properties dialog box. If the dataset_option parameter is not set, it will default to the value stored in the report layout file. If the dataset_option is set to DEFINITION_QUERY, then a valid string needs to be provided for the report_definition_query parameter. If the dataset_option is set to EXTENT, then a valid Extent object needs to be provided for the extent parameter. Because the dataset_option keyword controls which additional parameter to use, only one of these parameters can be set at a time, just like in the user interface.

  • ALL —Override the report layout file dataset option and process all data source records.
  • DEFINITION_QUERY —Override the report layout file dataset option and provide a new or updated definition query.
  • EXTENT —Override the report layout file dataset option and provide a new or updated extent.
  • SELECTED —Override the report layout file dataset option and process only the selected records.
  • USE_RLF —Use the settings saved in the report layout file.

(El valor predeterminado es USE_RLF)

String
report_title

A string that represents the report's title, which appears in the report layout file header section.

String
starting_page_number

A number that represents the printed page number for the first page of the output report. This value is useful for offsetting page numbers for reports that get appended to the end of existing documents.

(El valor predeterminado es 1)

Long
page_range

A string that identifies the report pages to be exported to file (for example, 1, 3, 5–12).

String
report_definition_query

A string that represents a valid definition query that controls which rows will be exported to the output report. This parameter can only be set if the dataset_option parameter is set to DEFINITION_QUERY.This value will overwrite any settings stored in the report layout file. If the report_source layer or table has an existing definition query, then the report_definition_query will be applied to the existing subset of records.

String
extent

An Extent object. This parameter can only be set if the dataset_option parameter is set to EXTENT. When an extent object is passed into this parameter, the rows will be based on those features that intersect the extent.

Extent
field_map

This parameter allows you to use a report layout file with a data source that has similar data types but different field names. A dictionary of mapped field names is used to remap the fields used in the report layout file with the new fields in the data source.

The following shows an example of the field_map dictionary structure:

field_map={'rlf_field1':'data_source_field1', 'rlf_field2':'data_source_field2'}

Dictionary

Muestra de código

Ejemplo de ExportReport 1

El siguiente script exportará un informe a un archivo PDF usando las entidades seleccionadas de la capa en el documento de mapa. Como se omiten otros parámetros opcionales, el nombre del parámetro extent se introduce explícitamente.

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Transportation")[0]
lyr = arcpy.mapping.ListLayers(mxd, "Accidents", df)[0]
arcpy.mapping.ExportReport(lyr,
                           r"C:\Project\Project.rlf",
                           r"C:\Project\Output\ProjectReport.pdf",
                           "EXTENT",
                           extent=df.extent)
Ejemplo de ExportReport 2

El siguiente script es similar al anterior, pero usa una capa de un archivo de capa como referencia.

lyr = arcpy.mapping.Layer(r"C:\Project\Layers\Transportation.lyr")
arcpy.mapping.ExportReport(lyr,
                           r"C:\Project\Project.rlf",
                           r"C:\Project\Output\ProjectReport.pdf",
                           "EXTENT",
                           extent=df.extent)
Ejemplo de ExportReport 3

El siguiente script amplía el ejemplo anterior para demostrar cómo se combinan una selección espacial y una selección de atributos para generar el informe deseado. Esto es necesario porque solo se puede usar una dataset_option cada vez. Los resultados se combinan en una única selección y usan un valor de SELECTED para el parámetro dataset_option.

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Transportation")[0]
lyr = arcpy.mapping.ListLayers(mxd, "Accidents", df)[0]
#The DataFrame extent object is converted into a polygon feature so it can be used with the SelectLayerByLocation function.
dfAsFeature = arcpy.Polygon(arcpy.Array([df.extent.lowerLeft, df.extent.lowerRight, df.extent.upperRight, df.extent.upperLeft]),
                            df.spatialReference)
arcpy.SelectLayerByLocation_management(lyr, "INTERSECT", dfAsFeature, "", "NEW_SELECTION")
arcpy.SelectLayerByAttribute_management(lyr, "SUBSET_SELECTION", "\"Accidents\" > 3")
arcpy.mapping.ExportReport(lyr,
                           r"C:\Project\Project.rlf",
                           r"C:\Project\Output\ProjectReport.pdf",
                           "SELECTED")
Ejemplo de ExportReport 4

El siguiente script usa un archivo de diseño de informe existente con un dataset diferente con distintos nombres de campos. Se usa un nuevo título para sobrescribir el título del archivo de diseño de informe y los campos se vuelven a asignar usando el parámetro field_map.

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Transportation")[0]
lyr = arcpy.mapping.ListLayers(mxd, "Traffic Lights", df)[0]
arcpy.mapping.ExportReport(lyr,
                           r"C:\Project\Project.rlf",
                           r"C:\Project\Output\ProjectReport.pdf",
                           report_title="Traffic Light Coordinates",
                           field_map={'Accidents':'LightID','X':'Longitude','Y':'Latitude'})
Ejemplo de ExportReport 5

El siguiente script muestra cómo insertar un mapa en un informe. Se genera un informe de varias páginas. Cada página tiene una imagen grande que muestra la extensión del marco de datos actual y un informe que proporciona información sobre las entidades incluidas en la extensión. Una vez que se cambia cada extensión del marco de datos, este se exporta a un archivo .emf y ExportReport se usa para crear un único PDF. Todas las páginas se combinan en un único PDF final.

import arcpy, os
path = os.getcwd()  #a relative path allowing for easy packaging

#Create PDF and remove if it already exists
pdfPath = path + r"\States_SubRegions.pdf"
if os.path.exists(pdfPath):
  os.remove(pdfPath)
pdfDoc = arcpy.mapping.PDFDocumentCreate(pdfPath)

subRegionList = ["East North Central", "East South Central", "Middle Atlantic",
                 "Mountain", "New England", "Pacific", "South Atlantic",
                 "West North Central", "West South Central"]

mxd = arcpy.mapping.MapDocument(path + r"\States_SubRegions.mxd")
df = arcpy.mapping.ListDataFrames(mxd)[0]
lyr = arcpy.mapping.ListLayers(mxd, "States")[0]

pageCount = 1
for region in subRegionList:
  #Generate image for each sub region
  whereClause = "\"SUB_REGION\" = '" + region + "'"
  lyr.definitionQuery = whereClause
  arcpy.SelectLayerByAttribute_management(lyr, "NEW_SELECTION", whereClause)
  df.extent = lyr.getSelectedExtent()
  arcpy.SelectLayerByAttribute_management(lyr, "CLEAR_SELECTION")
  arcpy.mapping.ExportToEMF(mxd, path + "\RegionalPicture.emf", df) #single file

  #Generate report
  arcpy.mapping.ExportReport(report_source=lyr,
                             report_layout_file=path + r"\States_SubRegions.rlf",
                             output_file=path + r"\temp" + str(pageCount) + ".pdf",
                             starting_page_number=pageCount)

  #Append pages into final output
  pdfDoc.appendPages(path + r"\temp" + str(pageCount) + ".pdf")
  os.remove(path + r"\temp.pdf")
  pageCount = pageCount + 1

pdfDoc.saveAndClose()

ArcGIS Desktop

  • Inicio
  • Documentación
  • Soporte

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Acerca de Esri

  • Quiénes somos
  • Empleo
  • Blog de Esri
  • Conferencia de usuarios
  • Cumbre de desarrolladores
Esri
Díganos su opinión.
Copyright © 2021 Esri. | Privacidad | Legal