ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

ExportReport

  • Краткая информация
  • Описание
  • Синтаксис
  • Пример кода

Краткая информация

Эта функция позволяет экспортировать отформатированный табличный отчет с данными из слоев или отдельных таблиц в документ карты наряду со сведениями о шаблоне отчета, которые содержатся в файле компоновки отчета (.rlf).

Описание

Функция ExportReport обеспечивает механизм автоматизации создания отчетов с помощью слоев или таблиц, созданных в документе карты (.mxd), или слоев из файла слоя (.lyr). Файл компоновки отчета, создаваемый в ArcMap, представляет собой шаблон, в котором хранятся сведения о содержимом отчета и расположении его элементов. Файл компоновки отчета создается вместе с исходными данными в документе карты, формируя выходной отчет. С исходными данными также могут быть связаны соединения и относящаяся к ним табличная информация, содержащаяся в отчете.

Примечание:

Функция ExportReport зависит от наличия на компьютере ArcMap. Следовательно, функция ExportReport может выполняться только на компьютерах, на которых установлено ArcMap. ExportReport ExportReport не запускается с помощью автономных установок ArcGIS Engine или ArcGIS Server. Более того, ExportReport не будет работать как служба геообработки.

Исходные данные должны находится в документе карты (.mxd) или в файле слоя (.lyr), а имена полей в наборе данных должны совпадать с аналогичными именами в файле компоновки отчета, чтобы избежать ошибок при выполнении ExportReport. Файл компоновки отчета можно использовать с разными источниками, при условии, что в источнике данных будут те же имена полей в наборе данных. Если данные похожи, но имена полей в наборе данных отличаются, для повторного сопоставления полей в файле компоновки отчета с другими именами полей в наборе данных источника можно использовать параметр field_map.

ArcMap создает в файле компоновки отчета многочисленные элементы, которые не отображаются при экспорте с помощью функции ExportReport. Вам может потребоваться создать коллекцию специальных шаблонов для создания и экспорта отчетов разных типов.

В группе инструментов отчетов в ArcMap есть кнопка Опции набора данных (Dataset options). С помощью этой кнопки пользователь может выбрать один из четырех способов обработки записей: Все (All), Выборка (Selected Set), Отображаемый экстент (Visible Extent) и Запрос определений (Definition Query). Параметр dataset_option работает аналогичным образом по ключевым словам. Параметр dataset_option со значениями ALL или SELECTED позволит обработать соответствующие записи. Если dataset_option имеет значение DEFINITION_QUERY, то для параметра report_definition_query необходимо указать корректную строку с текстом. Если dataset_option имеет значение EXTENT, то для параметра extent необходимо указать корректный объект Extent.

Как и в интерфейсе пользователя, можно использовать только одно ключевое слово dataset_option за один раз. Например, в пользовательском интерфейсе невозможно обработать только выборку записей или только отображаемый экстент. Это же правило применяется и по отношению к функции ExportReport - за один раз может быть задан только один параметр. Если будет задано несколько параметров, один из них переопределит другой. Однако допускается комбинирование стандартных атрибутов ArcPy с функциями пространственных запросов, если при формировании финального отчета для параметра dataset_option задано значение SELECTED. Пример приведен ниже.

Параметр page_range позволяет создавать отчеты по подмножеству страниц. Это могут быть группы страниц, идущих по порядку (5-12) или вразбивку (3,7). В таких случаях, если при создании отчета для параметра starting_page_number задано значение 1, номера страниц в распечатке будут совпадать со значениями, которые вы вводили (страница 3, страница 7). Это разработано для сценариев, поддерживающих повторную печать и вставку в существующие отчеты только выбранных страниц. Если по условиям сценария номера страниц должны идти подряд, например (страница 1, страница 2, необходимо будет задать в качестве значения параметра starting_page_number номер нужной страницы, а для параметра page_range задать одну страницу. Это значит, что ExportReport необходимо выполнить один раз для каждой страницы – один раз с параметрами starting_page_number = 3, page_range="3" и еще один раз с параметрами starting_page_number = 7, page_range="7".

Параметр field_map используется только в тех случаях, когда имена полей в наборе данных отличаются от source_data и от имен полей, использованных при построении файла компоновки отчета. При создании field_map в словарь необходимо добавлять только поля, непосредственно используемые в отчете. Поля, которых нет в словаре, не будут включены в отчет. Отображенные поля должны иметь одинаковый тип данных, в именах полей в field_map учитывается регистр.

Для построения отчетов можно использовать arcpy.mapping, поэтому в отчет можно включить карту. У изображений в отчете есть свойство Исходное изображение (Source Image). У Arcpy.mapping нет доступа к этому значению, однако если для значения исходного изображения указан путь на диске, то arcpy.mapping может обновить этот файл на диске с помощью операции экспорта, при этом алгоритм построения отчета использует любое доступное в данный момент изображение. На примере многостраничной компоновки перед вызовом очередной страницы можно изменить изображение, используя текущий экстент, например с помощью функции arcpy.mapping. Пример приведен ниже.

Дополнительные сведения об отчетах в ArcGIS см. в следующих вводных разделах справки:

  • Что представляют собой отчеты ArcGIS
  • Создание отчета

Синтаксис

ExportReport (report_source, report_layout_file, output_file, {dataset_option}, {report_title}, {starting_page_number}, {page_range}, {report_definition_query}, {extent}, {field_map})
ПараметрОбъяснениеТип данных
report_source

Ссылка на объект Layer или TableView .

Object
report_layout_file

Строка, содержащая путь и имя файла компоновки отчета (.rlf).

String
output_file

Строка, содержащая путь и имя выходного файла. Указанное расширение определяет выходной формат. Поддерживаются следующие выходные форматы/расширения: .htm, .html, .pdf, .rtf, .tif, .tiff, .txt и .xls.

String
dataset_option

Ключевое слово, определяющее, какие строки набора данных будут обрабатываться в итоговом отчете. Этот значение заменит значение в Опциях набора данных (Dataset Options), сохраненное в файле компоновки отчета в диалоговом окне Свойства отчета (Report Properties). Если параметр dataset_option не указан, по умолчанию будет использоваться значение, сохраненное в файле компоновки отчета. Если dataset_option имеет значение DEFINITION_QUERY, то для параметра report_definition_query необходимо указать корректную строку с текстом. Если dataset_option имеет значение EXTENT, то для параметра Extent необходимо указать параметр extent. Поскольку дополнительный параметр, который будет использоваться, определяется ключевым словом dataset_option, допускается указывать только один из этих параметров за один раз, так же, как в пользовательском интерфейсе.

  • ALL —Замещает опцию набора данных файла набора даннытчета и обрабатывает все записи источника данных.
  • DEFINITION_QUERY —Замещает опцию данных файла файла компоновки отчета и создает новый или обновленный определяющий запрос.
  • EXTENT —Замещает опцию набора данных файла компоновки отчета и создает новый или обновленный экстент.
  • SELECTED —Замещает опцию набора данных файла компоновки отчета и обрабатывает только выбранные записи.
  • USE_RLF —Использует настройки, сохраненные в файле компоновки отчета.

(Значение по умолчанию — USE_RLF)

String
report_title

Строка с названием отчета, которая появляется в заголовке файла компоновки отчета.

String
starting_page_number

Число, соответствующее номеру первой страницы выходного отчета. Это значение необходимо для изменения номеров страниц, которые добавляются в конце существующих документов.

(Значение по умолчанию — 1)

Long
page_range

Строка, определяющая экспортируемые в файл страницы отчета (например, 1, 3, 5–12).

String
report_definition_query

Строка, которая содержит корректный запрос, определяющий, какие строки будут экспортированы в выходной отчет. Этот параметр можно устанавливать только в случае, если параметр dataset_option имеет значение DEFINITION_QUERY. Это значение перезапишет все настройки, сохраненные в файле компоновки отчета. Если слой или таблица report_source имеет определяющий запрос, то к существующему поднабору записей применяется report_definition_query.

String
extent

Объект Extent. Этот параметр можно задавать только в случае, если для параметра dataset_option указано значение EXTENT. Когда в этот параметр передается объект extent, строки будут зависеть от тех объектов, которые пересекают экстент.

Extent
field_map

Параметр позволяет вам использовать файл компоновки отчета с источником данных, имеющим те же типы, но другие имена полей. Словарь имен полей используется для переназначения полей с помощью файла компоновки отчет с использованием новых полей источника данных.

Ниже представлен пример структуры словаря field_map:

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

Dictionary

Пример кода

ExportReport. Пример 1

Следующий скрипт выполняет экспорт в PDF на основании выборки объектов в слое документа карты. Поскольку алгоритм пропускает необязательные параметры, имя параметра extent введено точно.

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)
del mxd
ExportReport. Пример 2

Следующий скрипт аналогичен приведенному выше, однако он использует слой в файле слоя в качестве эталона.

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)
del mxd
ExportReport. Пример 3

Этот скрипт является расширенным вариантом предыдущего и показывает, как пространственная выборка работает в сочетании с атрибутивной выборкой при создании требуемого отчета. Это является обязательным требованием, потому что одновременно можно использовать только одну опцию dataset_option. Результаты объединяются в общую выборку, при этом для параметра dataset_option используется значение SELECTED.

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")
del mxd
ExportReport. Пример 4

Это скрипт обрабатывает существующий файл компоновки отчета и несоответствующий ему набор данных с отличающимися именами полей. Алгоритм заменяет название файла компоновки отчета новым и выполняет сопоставление полей, используя параметр 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'})
del mxd
ExportReport. Пример 5

Этот скрипт демонстрирует вставку карты в отчет. Создается многостраничный отчет. На каждой странице есть большое изображение текущего фрагмента экстента данных и отчет с информацией о пространственных объектах в экстенте. После того, как экстент фрейма данных будет изменен, фрейм данных экспортируется в файл .emf, и для создания отдельного файла PDF используется ExportReport. Все страницы объединяются в один общий файл PDF.

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()
del mxd

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2019 Esri. | Конфиденциальность | Правовая информация