TableFrameElement

摘要

TableFrameElement 类提供对功能的访问,允许您修改表格信息在 Layout 类上的显示方式。

说明

表格框元素是一种专门的地图整饰要素,它具有关联的 MapFrame 元素,并且还动态链接到图层对象以显示其行和字段。 Layout 类上的 listElements 方法将返回包含所有可能布局元素的 Python 列表。 要仅返回 TableFrameElement 对象的列表,应对 element_type 参数使用 TABLEFRAME_ELEMENT 常量。 还可以使用 wildcard 值,基于元素的 name 值对搜索进行进一步优化。 有必要确保为每个布局元素指定唯一名称,因为这样可以在 ArcPy 脚本中引用它。

Layout 类的 createTableFrameElement 方法可用的所有参数也都在 TableFrameElement 类上公开,例如 mapframetablefields - 可以对现有表格框进行更改。 您可以使用许多属性来调整表格框的大小和位置。 您还可以使用 sortFields 方法修改表格框的外观,或使用 setQuery 方法控制表中显示的行。 表格框元素还具有可用于修改未向 TableFrameElement 类公开的其他属性的 getDefinitionsetDefinition 方法。 有关详细信息,请参阅下面的示例和 Python CIM 访问帮助主题。

属性

属性说明数据类型
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 的元素将返回 Group Element\\Table FramelongName 值。 如果元素不在组中,则 longNamename 值相同。

String
mapFrame
(可读写)

对关联 MapFrame 的引用。

MapFrame
name
(可读写)

元素的名称。 必须确保所有元素均具有唯一名称,因为这样可以通过在 Layout 对象的 listElements 函数中使用 wildcard 参数以唯一方式引用这些元素。

String
parentGroupElement
(只读)

如果元素在组中,则返回的值为 GroupElement,否则返回 NoneType

GroupElement
query
(只读)

返回以下字符串值之一,这些值表示控制应显示哪些行的当前查询。 要更改值,请使用 setQuery 方法。

  • ALL_ROWS显示表中所有行。
  • MAPSERIES_ROWS如果启用了空间地图系列,则显示与当前索引要素关联的行。
  • VISIBLE_ROWS仅显示地图框中的可见要素。
String
table
(可读写)

与表格框关联的 LayerTable 对象。

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

当在 ArcGISProject 类上使用 listStyleItems 方法引用 StyleItem 时,style_class 参数必须是 TABLE_FRAME。 有关详细信息和代码示例,请参阅 StyleItem 帮助主题。

注:

在使用 applyStyleItem 方法之前,必须先将样式添加到工程中。 可以在 ArcGISProject 类上使用 updateStyles 方法添加样式。

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

返回 TableFrameElement 值的 CIM 定义。

有关使用 CIM 和示例的详细信息,请参阅 Python CIM 访问

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

以下脚本引用现有表格框并使用类方法修改其外观。 脚本对通过 Python CIM 访问公开的属性进行其他更改。

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')