TableFrameElement

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

Класс TableFrameElement предоставляет доступ к возможностям, которые позволяют вам изменять способ отображения табличной информации в классе Layout.

Обсуждение

Элемент фрейма таблицы - это специализированное зарамочное оформление карты, имеющее связанный элемент MapFrame, а также динамически связанное с объектом Слой или Таблица для отображения его строк и полей. Метод listElements для класса Layout возвращает список Python всех возможных элементов компоновки. Чтобы вернуть список только объектов TableFrameElement, используйте константу TABLEFRAME_ELEMENT для параметра element_type. Значение wildcard также может быть использовано для дальнейшей тонкой настройки поиска на основе значения name элемента. Важно, чтобы у каждого элемента компоновки было свое уникальное имя, чтобы на него можно было ссылаться с использованием скрипта ArcPy.

Все параметры, доступные методу createTableFrameElement класса Layout, также доступны в классе TableFrameElement, например mapframe, table и fields, что делает возможным внесение изменений в существующие фреймы таблиц. Существует ряд свойств, которые можно использовать для изменения размера и положения фрейма таблицы. Вы также можете изменить внешний вид фрейма таблицы с помощью метода sortFields или управлять строками, которые появляются в таблице с помощью метода setQuery. Элементы фрейма таблицы также имеют методы getDefinition и setDefinition, которые можно использовать для изменения дополнительных свойств, которые не доступны классу TableFrameElement. Дополнительные сведения см. в приведенных ниже примерах и в разделе справки по доступу к CIM Python.

Свойства

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

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

  • BOTTOM_LEFT_CORNERВ левом нижнем углу
  • BOTTOM_MID_POINTСнизу по центру
  • BOTTOM_RIGHT_CORNERВ правом нижнем углу
  • CENTER_POINTВ центре
  • LEFT_MID_POINTСлева по центру
  • RIGHT_MID_POINTСправа по центру
  • TOP_LEFT_CORNERВ левом верхнем углу
  • TOP_MID_POINTСверху по центру
  • TOP_RIGHT_CORNERВ правом верхнем углу
String
elementHeight
(чтение и запись)

Высота элемента в единицах страницы.

Double
elementPositionX
(чтение и запись)

x-положение позиции точки якоря элемента. Единицы измерения задаются или считываются в единицах страницы.

Double
elementPositionY
(чтение и запись)

y-положение позиции точки якоря элемента. Единицы измерения задаются или считываются в единицах страницы.

Double
elementWidth
(чтение и запись)

Ширина элемента в единицах страницы.

Double
fields
(чтение и запись)

Список строк, представляющих имена полей таблицы, отображаемых во фрейме таблицы.

List
locked
(чтение и запись)

Если установлено значение True, элемент нельзя выбрать графически в виде компоновки.

Boolean
longName
(только чтение)

Полное имя элемента, включая информацию о группе, если она существует. Например, элемент с именем 'Table Frame' в групповом элементе с именем 'Group Element' вернет значение longName, равное 'Group Element\\Table Frame'. Если элемент не входит в группу, longName будет таким же, как и значение name.

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

Ссылка на связанный MapFrame.

MapFrame
name
(чтение и запись)

Имя элемента. Важно, чтобы у всех элементов были уникальные имена, благодаря чему на них можно было бы ссылаться с помощью параметра wildcard функции listElements объекта Layout.

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

Если элемент находится в группе, возвращаемым значением будет GroupElement, в противном случае будет возвращено NoneType.

GroupElement
query
(только чтение)

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

  • ALL_ROWSОтобразите все строки таблицы.
  • MAPSERIES_ROWSОтобразите строку, связанную с текущим индексным объектом, если включена серия пространственных карт.
  • VISIBLE_ROWSОтобразите только видимые объекты во фрейме карты.
String
table
(чтение и запись)

Объект Layer или Table, связанный с фреймом таблицы.

Object
type
(только чтение)

Возвращает значение TABLEFRAME_ELEMENT.

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

Возвращает True, если элемент является видимым в компоновке.

Boolean

Обзор метода

МетодОписание
applyStyleItem (style_item)

Применяет StyleItem к TableFrameElement.

getDefinition (cim_version)

Возвращает определение CIM элемента фрейма таблицы.

setAnchor (anchor)

Метод setAnchor, управляющий положением якоря для значения TableFrameElement.

setDefinition (definition_object)

Метод setDefinition задает определение CIM для элемента фрейма таблицы.

setQuery (query_rows)

Метод setQuery управляет отображением строк во фрейме таблицы.

sortFields (field_info)

Метод sortFields сортирует фрейм таблицы, используя список пар ключ-значение словаря для одного или нескольких полей.

Методы

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

A reference to a StyleItem in a project.

StyleItem

При привязывании StyleItem с помощью метода listStyleItems для класса ArcGISProject параметр style_class должен быть TABLE_FRAME. Обратитесь к разделу справки StyleItem для получения дополнительной информации и примеров кода.

Примечание:

Перед использованием метода applyStyleItem необходимо добавить стили в проект. Их можно добавить, используя метод updateStyles для класса ArcGISProject.

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

A string that represents the major version of the CIM that will be used.

  • V2The 2.x version of the CIM will be used.
  • V3The 3.x version of the CIM will be used.
String
Возвращаемое значение
Тип данныхОписание
Object

Возвращает определение CIM для значения TableFrameElement.

Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.

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

A string that specifies the location of the anchor position.

  • BOTTOM_LEFT_CORNERThe anchor will be set at the bottom left corner position.
  • BOTTOM_MID_POINTThe anchor will be set at the bottom center position.
  • BOTTOM_RIGHT_CORNERThe anchor will be set at the bottom right corner position.
  • CENTER_POINTThe anchor will be set at the center position.
  • LEFT_MID_POINTThe anchor will be set at the left center position.
  • RIGHT_MID_POINTThe anchor will be set at the right center position.
  • TOP_LEFT_CORNERThe anchor will be set at the top left corner position.
  • TOP_MID_POINTThe anchor will be set at the top center position.
  • TOP_RIGHT_CORNERThe anchor will be set at the top right corner position.
String

Задание положения якоря привязки полезно, поскольку с его помощью вы можете контролировать, как элемент будет расширяться при изменении размера. Например, положение якоря по умолчанию для элемента фрейма таблицы - TOP_LEFT_CORNER. Если вы измените положение якоря на BOTTOM_RIGHT_CORNER, изменение значения elementHeight приведет к расширению элемента вверх вместо расширения вниз (по умолчанию), а изменение значения elementWidth - к расширению элемента влево.

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

A modified CIM definition object originally retrieved using getDefinition.

Object

Более подробно о работе с CIM и примеры использования см. в разделе Доступ к Python CIM.

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

A keyword string that serves as a filter and specifies the rows that will be displayed in the table frame.

  • ALL_ROWSAll rows in the table will be displayed.
  • MAPSERIES_ROWSThe row associated with the current index feature will be displayed if a spatial map series is enabled.
  • VISIBLE_ROWSOnly the visible features in the map frame will be displayed.

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

String

Значение по умолчанию - ALL_ROWS, когда создается фрейм таблицы. Если вы используете значение MAPSERIES_ROWS, убедитесь, что для объекта Layout включено пространственное значение MapSeries, в противном случае вы можете не получить нужных результатов.

sortFields (field_info)
ПараметрОписаниеТип данных
field_info
[field_info,...]

A list of Python dictionaries that each contain field sorting information. The dictionary keys are defined below.

  • nameA string that represents the name of the field used to sort.
  • ascendingA Boolean value of True will sort in ascending order. The default value is True.
  • caseSensitiveA Boolean value of True will honor case while sorting. The default value is True.
List

Сортировка применяется ко всем полям одновременно и зависит от порядка полей, заданного в списке field_info. Вам необходимо заново создать всю информацию о сортировке для всех соответствующих полей и передать эту информацию в параметр field_info.

Пример кода

TableFrameElement, пример 1

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

def MakeRec_UL(ulx, uly, w, h):
    xyRecList = [[ulx, uly], [ulx+w, uly], [ulx+w,uly-h], [ulx,uly-h], [ulx,uly]]
    array = arcpy.Array([arcpy.Point(*coords) for coords in xyRecList])
    rect = arcpy.Polygon(array)
    return rect

p = arcpy.mp.ArcGISProject('current')
m = p.listMaps('Map')[0]
lyr = m.listLayers('States*')[0]
lyt = p.listLayouts('Create*')[0]
mf = lyt.listElements()[0]

#States table frame
tfStyle = p.listStyleItems('ArcGIS 2D', 'TABLE_FRAME', 'Blue Alternating Rows')[0]
tfEnv = MakeRec_UL(0.5, 5, 7.5, 4)
tfFields = ['STATE_NAME', 'STATE_ABBR', 'POP2000', 'POP2010']
tf = lyt.createTableFrameElement(tfEnv, mf, lyr, tfFields, tfStyle, 'States TableFrame')

#Display only visible rows
tf.setQuery('VISIBLE_ROWS')
TableFrameElement, пример 2

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

p = arcpy.mp.ArcGISProject('current')
lyt = p.listLayouts('Modify*')[0]
tf = lyt.listElements('TABLEFRAME_ELEMENT', 'States*')[0]

#Modify table frame
tf.setQuery('VISIBLE_ROWS')
tf.sort({'name':'STATE_NAME', 'ascending':True, 'caseSensitive':True})

#Modify additional properties using the CIM
tf_cim = tf.getDefinition('V3')
tf_cim.minFontSize = 8
tf_cim.alternate1RowBackgroundCount = 2
tf_cim.alternate2RowBackgroundCount = 2
tf_cim.balanceColumns = False
tf_cim.columnGap = 75
tf_cim.fittingStrategy = 'AdjustColumnsAndSize'
tf.setDefinition(tf_cim)
TableFrameElement, пример 3

Следующий скрипт создает серию пространственных карт перед созданием нового фрейма таблицы. Он завершается установкой значения query на MAPSERIES_ROWS.

def MakeRec_UL(ulx, uly, w, h):
    xyRecList = [[ulx, uly], [ulx+w, uly], [ulx+w,uly-h], [ulx,uly-h], [ulx,uly]]
    array = arcpy.Array([arcpy.Point(*coords) for coords in xyRecList])
    rect = arcpy.Polygon(array)
    return rect

p = arcpy.mp.ArcGISProject('current')
m = p.listMaps('Map')[0]
lyr = m.listLayers('GreatLakes')[0]
lyt = p.listLayouts('MapSeries')[0]
mf = lyt.listElements()[0]

#Create a spatial map series
lyt.createSpatialMapSeries(mf, lyr, 'NAME', 'AREA')

#Create a table frame
tfStyle = p.listStyleItems('ArcGIS 2D', 'TABLE_FRAME', 'Orange Alternating Rows')[0]
tfEnv = MakeRec_UL(0.5, 5.75, 7.5, 2)
tf = lyt.createTableFrameElement(tfEnv, mf, lyr, ['NAME', 'AREA'], tfStyle, 'Great Lakes TableFrame')

#Set the query to match mapseries rows
tf.setQuery('MAPSERIES_ROWS')