LabelClass

摘要

用于访问图层的标注类属性。

说明

LabelClass 对象用于管理与图层的单个标注类相关联的标注属性(如标注表达式或 SQL 查询)。 Layer 对象上的 listLabelClasses 方法将返回现有 LabelClass 对象列表。 Layer 对象上的 createLabelClass 方法将返回对新 LabelClass 的参考。

并非所有图层都支持标注,因此在 Layer 对象上使用 supports 方法提前进行测试是十分有用的。 例如:

if lyr.supports("SHOWLABELS"):
如果此语句为 True,则您能够修改所有标注类属性。

属性

属性说明数据类型
expression
(可读写)

图层的单个标注类表达式(使用与标注类相关的 VBScript、JScript 或 Python 分析程序)。

String
name
(可读写)

图层的单个标注类名称。

String
SQLQuery
(可读写)

图层的单个标注类 SQLQuery。这在将标注限制为某些要素方面十分有用。

String
visible
(可读写)

如果为 True,标注类则可见。如果为 False,则不可见。

Boolean

方法概述

方法说明
getDefinition (cim_version)

返回标注类的 CIM 定义。

setDefinition (definition_object)

设置标注类的 CIM 定义。

方法

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

返回 LabelClass 的 CIM 定义。

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

setDefinition (definition_object)
参数说明数据类型
definition_object

A modified CIM definition object originally retrieved using getDefinition.

Object

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

代码示例

LabelClass 示例 1

以下脚本仅会打印已打开标注并支持 showLabels 属性的图层的标注类属性。

import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
m = aprx.listMaps("Yosemite National Park")[0]

for lyr in m.listLayers():
    if lyr.supports("SHOWLABELS"):
        if lyr.showLabels:
            print("Layer name: " + lyr.name)
            for lblClass in lyr.listLabelClasses():
                print("\t Class Name: \t" + lblClass.name)
                print("\t Expression: \t" + lblClass.expression)
                print("\t SQL Query:  \t" + lblClass.SQLQuery)
del aprx
LabelClass 示例 2

以下脚本会查找名为 Points of Interest 的图层并会更改名为 Summit 的特定标注类的标注类属性,从而不会对所有山峰进行标注。 仅会对高程超过 2,000 米的山峰进行标注。

import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
m = aprx.listMaps("Yosemite National Park")[0]

lyr = m.listLayers("Points of Interest")[0]

if lyr.supports("SHOWLABELS"):
  lblClass = lyr.listLabelClasses("Summit")[0]
  lblClass.expression = "Name"
  lblClass.SQLQuery = "Type_ = 'summit' And Elevation > 2000"
  lblClass.visible = True

aprx.save()
del aprx
LabelClass 示例 3

以下脚本使用 Python 和 Arcade 语言选项创建两个新的标注类。

p = arcpy.mp.ArcGISProject('current')
m = p.listMaps('Map')[0]
l = m.listLayers('GreatLakes')[0]

#Enable layer labels but toggle off all existing label classes
l.showLabels = True
for lc in l.listLabelClasses():
    lc.visible = False

#Create new Label classes and toggle those on
lc1 = l.createLabelClass(name = 'Small Lakes - Python',
                         expression = '[AREA]',
                         sql_query = 'AREA < 10000',
                         labelclass_language = 'Python')
lc1.visible = True

lc2 = l.createLabelClass(name = 'Large Lakes - Arcade',
                         expression = '$feature.AREA',
                         sql_query = 'AREA > 10000',
                         labelclass_language = 'Arcade')
lc2.visible = True