Краткая информация
Класс 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.
| 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.
| String |
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)
При привязывании 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.
| String |
Тип данных | Описание |
Object | Возвращает определение CIM для значения TableFrameElement. |
Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.
setAnchor (anchor)
Параметр | Описание | Тип данных |
anchor | A string that specifies the location of the anchor 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_ROWS) | String |
sortFields (field_info)
Параметр | Описание | Тип данных |
field_info [field_info,...] | A list of Python dictionaries that each contain field sorting information. The dictionary keys are defined below.
| List |
Сортировка применяется ко всем полям одновременно и зависит от порядка полей, заданного в списке field_info. Вам необходимо заново создать всю информацию о сортировке для всех соответствующих полей и передать эту информацию в параметр field_info.
Пример кода
Следующий скрипт создает фрейм таблицы в компоновке. Он использует функцию для создания конверта, используемого для размещения фрейма таблицы в компоновке.
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')
Следующий скрипт ссылается на существующий фрейм таблицы и использует методы класса для изменения его оформления. Скрипт вносит дополнительные изменения в свойства, доступные через доступ к 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)
Следующий скрипт создает серию пространственных карт перед созданием нового фрейма таблицы. Он завершается установкой значения 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')