LabelClass

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

Обеспечивает доступ к свойствам класса надписей слоя.

Обсуждение

Объект LabelClass используется для управления свойствами надписей, например, выражениями надписей или SQL-запросами, которые связаны с отдельными классами надписей слоя. Метод listLabelClasses на объекте Слой возвратит список существующих объектов LabelClass. Метод createLabelClass на объекте Layer возвращает ссылку на новый LabelClass.

Не все слои поддерживают надписывание, поэтому будет полезно проверить это заранее, используя метод supports на объекте Layer. Например:

if lyr.supports("SHOWLABELS"):
Если значением этого выражения будет True, то вы сможете изменять любые свойства класса надписей.

Свойства

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

Выражение отдельного класса надписей слоя использует либо анализаторы VBScript, JScript, либо анализатор Python, связанный с классом надписей.

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

Имя отдельного класса надписей слоя.

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

SQL-запрос (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

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

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

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

A modified CIM definition object originally retrieved using getDefinition.

Object

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

Пример кода

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