ReportSection

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

Объект ReportSection ссылается на раздел отчета в отчете. Он обеспечивает доступ к общим свойствам, таким как определяющий запрос и метод установки источника базовых данных.

Обсуждение

Отчет ArcGIS Pro может содержать несколько разделов отчета. Доступ к разделам отчета осуществляется с помощью метода listSections объекта Report. Это возвращает список Python объектов ReportSection и ReportLayoutSection. На каждый раздел отчета можно ссылаться по уникальному значению name и он имеет REPORT_SECTION type.

ReportSection имеет источник данных, который можно идентифицировать с помощью свойства referenceDataSource. Чтобы изменить источник данных, используйте метод setReferenceDataSource. Метод сопоставляет поля нового источника данных с полями отчета, заданными исходным источником данных. Названия полей (а не их псевдонимы) должны точно совпадать, в том числе и с учетом регистра.

Доступ к списку полей и статистике раздела отчета можно получить с помощью свойств fields и statistics. Эти свойства предназначены для основного раздела отчета и не включают связанные отчеты.

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

Чтобы применить фильтр к записям, экспортируемым в PDF, измените свойство раздела отчета definitionQuery. Чтобы исключить раздел отчета из экспортированного PDF-файла, задайте для свойства visible значение false.

Свойства

СвойствоОписаниеТип данных
definitionQuery
(чтение и запись)

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

String
fields
(только чтение)

Поля в разделе отчета, включая название поля, порядок сортировки и группировку. Сюда не входят сопутствующие отчеты. Ключи словаря определяются следующим образом:

  • fieldNameИмя поля для отчета.
  • sortOrderСортировка для поля в отчете.
  • groupFieldTrue, если поле должно использоваться как группа.

Доступные опции сортировки определяются следующим образом:

  • ASCОтсортировать поле по возрастанию.
  • DESCОтсортировать поле по убыванию.
  • NONEНе сортировать поле, использовать порядок базы данных.
Dictionary
name
(чтение и запись)

Имя раздела отчета. Важно, чтобы у всех разделов отчета проекта были уникальные имена, благодаря чему на них было бы легко ссылаться по имени.

String
referenceDataSource
(только чтение)

Возвращает информацию о подключении к источнику базовых данных раздела отчета в виде словаря Python. Ключи словаря определяются следующим образом:

  • datasetИмя набора данных.
  • workspace_factoryТип рабочей области.
  • connection_infoСтрока, представляющая путь к рабочей области
Dictionary
statistics
(только чтение)

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

  • fieldNameИмя поля для статистики
  • statisticТип статистики для отчета.

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

  • COUNTБудет определено количество строк для группы или отчета.
  • MEANБудет вычислено среднее значение числового поля для группы или отчета.
  • MEDIANБудет вычислена медиана числового поля для группы или отчета.
  • SUMБудет вычислена сумма числового поля для группы или отчета.
  • STD_DEVБудет вычислено среднеквадратическое отклонение числового поля для группы или отчета.
  • MAXБудет определено максимальное значение поля для группы или отчета.
  • MINБудет определено минимальное значение поля для группы или отчета.
Dictionary
type
(только чтение)

Метод listSections для объекта Reportвозвращает и объект ReportSection, и объект ReportLayoutSection. У раздела отчета тип REPORT_SECTION.

String
visible
(чтение и запись)

Видимость раздела отчета. Задайте значение False, чтобы исключить раздел при экспорте в PDF.

Boolean

Обзор метода

МетодОписание
setReferenceDataSource (data_source)

Задает источник базовых данных раздела отчета.

setRelatedReportSource (related_report_data_source, related_report_section_name, relate_or_relationship_class_name)

Задает источник данных связанного отчета.

Методы

setReferenceDataSource (data_source)
ПараметрОписаниеТип данных
data_source

The data reference for the report section. This parameter can be a Layer object, a Table object, or a string that represents the path to an external data source.

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

Object

Метод setReferenceDataSource задает источник данных, на который ссылается раздел отчета, используя объект Layer, объект Table или строку, задающую путь к внешнему источнику данных.

setRelatedReportSource (related_report_data_source, related_report_section_name, relate_or_relationship_class_name)
ПараметрОписаниеТип данных
related_report_data_source

The data source for the new related report. This parameter can be a Layer object, a Table object, or a string that represents the path to an external data source.

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

Object
related_report_section_name

The name of the related report.

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

String
relate_or_relationship_class_name

The name of the new relate or relationship class.

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

String

Метод setRelatedReportSource задает источник данных, на который ссылается связанный отчет, используя объект Layer, объект Table или строку, представляющую путь к внешнему источнику данных, имя связанного отчета и новое имя класса связи или отношения.

SetRelatedReportSource, пример 1

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

aprx = arcpy.mp.ArcGISProject('current')
report = aprx.listReports("States Report with Relate")[0]
reportSection = report.listSections()[0]
map = aprx.listMaps("States with Capitals")[0]
newRelatedLayer = map.listLayers("Capitals")[0]
relatedReportName = "cities: Related Report"
newRelateName = "states_capitals"
reportSection.setRelatedReportSource(newRelatedLayer, relatedReportName, newRelateName)

Пример кода

ReportSection, пример 1

Следующий скрипт получает все разделы отчета из отчета:

aprx = arcpy.mp.ArcGISProject(r"C:\DemoData\NationalParks.aprx")
report = aprx.listReports("National Parks Report")[0]
sections = [s.name for s in report.listSections() if s.type=="REPORT_SECTION"] # Get list of report section names
for s in sections:
	print(s)
# National Parks Overview
# Park Highlights
# Annual Review
ReportSection, пример 2

Следующий скрипт задает видимость раздела отчета как False:

aprx = arcpy.mp.ArcGISProject(r"C:\DemoData\NationalParks.aprx")
report = aprx.listReports("National Parks Report")[0]
section = report.listSections("National Parks Overview")[0] # Find the report section by name
section.visible = False
ReportSection, пример 3

Следующий скрипт устанавливает источник базовых данных для второго раздела отчета в таблицу на карте:

aprx = arcpy.mp.ArcGISProject(r"C:\DemoData\NationalParks.aprx")
map = aprx.listMaps("National Parks")[0]  # Find a map in the project
table = map.listTables()[0] # Find the first table in the map
report = aprx.listReports("National Parks Report")[0]
section = report.listSections()[1] # Find the report section by index
section.setReferenceDataSource(table)
ReportSection, пример 4

Следующий скрипт изменяет определяющий запрос для третьего раздела отчета:

aprx = arcpy.mp.ArcGISProject(r"C:\DemoData\NationalParks.aprx")
report = aprx.listReports("National Parks Report")[0]
section = report.listSections("Annual Review")[0] # Find the report section by name
section.definitionQuery = "ParkName = 'Yosemite'"
ReportSection, пример 5

Следующий скрипт получает поля и статистику для раздела отчета:

aprx = arcpy.mp.ArcGISProject(r'C:\temp\Parcels.aprx') # Find the project
report = aprx.listReports()[1] # Find the second report by index
report_section = report.listSections()[0] # Find the first report section

print(report_section.fields) # Get fields
# [{'fieldName': 'ASR_LANDUSE', 'sortInfo': 'ASC', 'groupField': True}, {'fieldName': 'APN_8', 'sortInfo': 'NONE', 'groupField': False}, {'fieldName': 'ACREAGE', 'sortInfo': 'NONE', 'groupField': False}]

print(report_section.statistics) # Get statistics
# [{'fieldName': 'APN_8', 'statistic': 'COUNT'}, {'fieldName': 'ACREAGE', 'statistic': 'MEAN'}]