Краткая информация
Обеспечивает доступ к свойствам класса надписей слоя.
Обсуждение
Объект LabelClass используется для управления свойствами надписей, например, выражениями надписей или SQL-запросами, которые связаны с отдельными классами надписей слоя. Метод listLabelClasses на объекте Слой возвратит список существующих объектов LabelClass. Метод createLabelClass на объекте Layer возвращает ссылку на новый LabelClass.
Не все слои поддерживают надписывание, поэтому будет полезно проверить это заранее, используя метод supports на объекте Layer. Например:if lyr.supports("SHOWLABELS"):
Свойства
Свойство | Описание | Тип данных |
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.
| 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.
Пример кода
Следующий скрипт выведет свойства класса надписей только тех слоев, в которых поддерживается свойство 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
Следующий скрипт находит слой с именем 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
Следующий скрипт создает два новых класса надписей с помощью языков 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