UniqueValueRenderer

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

Класс UniqueValueRenderer представляет способ отображения с помощью уникальных значений.

Обсуждение

Если вы изменяете текущий способ отображения на UniqueValueRenderer, вам необходимо сначала указать соответствующее значение свойства fields. Это множественное свойство, поскольку вы можете создать набор уникальных значений на основе нескольких полей. Поэтому свойство fields получает в качестве параметра список, даже если в нем используется только одно поле. После применения ваших fields, способ отображения автоматически создаст все уникальные значения. Если по каким-либо причинам в слой добавляются новые значения, то вам будет необходимо заново настроить способ отображения, чтобы все значения были добавлены заново. Для этого необходимо изменить свойство fields, или вы можете использовать метод addValues.

Вам необходимо разобраться, как способ отображения управляет уникальными значениями, чтобы вы могли выполнять навигацию по структуре класса для изменения отдельных элементов и их значений. Свойство groups возвращает список объектов ItemGroup. Каждый объект ItemGroup представляет категорию items, каждый из которых имеет собственный heading. По умолчанию имеется один ItemGroup. Свойство items возвращает список объектов Item. После того как у вас есть item, можно изменить свойства, такие как label и description. Вы также можете изменить symbol для каждого элемента. Причиной того? что свойство values является множественным и возвращает список является то, что вы можете группировать объекты внутри ItemGroup. Поэтому каждый item может иметь несколько значений.

Далее приведен способ, которым можно обрисовать структуру класса:

  • groups – возвращает список объектов ItemGroup
    • heading
    • items – возвращает список объектов Item
      • description
      • label
      • symbol
      • values

Вы можете также добавлять значения из способа отображения. Каждое уникальное значение в действительности является item в модели объектов, и каждый элемент связан в ItemGroup. Чтобы addValues или removeValues, вам потребуется работать со словарём Python. Ключом словаря является название заголовка группы, а его значением – список значений на основе свойства fields. Есть также способ listMissingValues, который позволяет определить, какие значения в текущей момент отсутствуют в способе отображения. Значения будут отсутствовать только, если вы преднамеренно вызвали removeValues, так как по умолчанию способ отображения автоматически создаёт уникальные значения, когда установлено свойство fields.

Если ваша цель – создать новую группу заголовков для организации ваших элементов уникальных значений, то вам следует сначала вызвать removeValues, чтобы удалить элементы, затем использовать addValues для создания новой группы с новой надписью heading.

Свойства

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

Предоставляет доступ к объекту ColorRamp.

ColorRamp
defaultSymbol
(чтение и запись)

Символ, который может быть использован в качестве шаблона для обновления всех символов в каждом классе.

Symbol
fields
(чтение и запись)

Список из одного или более полей, используемых методом отображения для определения уникального набора значений.

List
groups
(чтение и запись)

Список объектов ItemGroup, содержащих уникальные значения. Если значения не были добавлены в метод отображения, количество элементов в группе может быть нулевым.

List
type
(только чтение)

Возвращает строку, которая отображает тип способа отображения.

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

Логический параметр, управляющий отображением недобавленных значений. Если имеет значение True, то объекты отображаются.

Boolean

Обзор метода

МетодОписание
addValues (values_or_items)

addValues предоставляет механизм для добавления отсутствующих значений в способе отображения уникальные значения.

listMissingValues ()

listMissingValues предоставляет механизм для идентификации отсутствующих значений в способе отображения уникальные значения.

removeValues (values_or_items)

removeValues предоставляет механизм для удаления значений в способе отображения уникальные значения.

Методы

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

Словарь, основанный на ключе, который содержит соответствие названия заголовка группы и значения, представленного как список значений в строке или как список элементов для добавления в группу.

Например: addValues({"group name" : ["str1", "str2", "str3"]}) или addValues({"group name" : missingVals[0].items})

(Значение по умолчанию — None)

Dictionary

Перед выполнением addValues рекомендуется сначала проверить пропускает ли способ отображения какие-либо значения при использовании способа listMissingValues. Если значения, которые вы добавили не корректны, они просто будут игнорироваться. Важно сбросить символы слоя с обновленной информацией перед продолжением обработки других элементов в способе отображения.

listMissingValues ()
Возвращаемое значение
Тип данныхОписание
ItemGroup

ItemGroup обеспечивает доступ к информации уровня групп для UniqueValueRenderer.

Каждый ItemGroup имеет heading и связанный набор объектов item, которые представляют уникальные значения. Если вы желаете добавить отсутствующие элементы из множества групп элементов назад в способ отображения, вам потребуется вызвать addValues несколько раз, по одному для каждой группы заголовка, в которую вы хотите добавить значения.

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

Словарь, основанный на ключе, который содержит соответствие названия заголовка группы и значения, представленного как список значений в строке или как список элементов для добавления в группу.

Например: removeValues({"group name" : ["str1", "str2", "str3"]})

(Значение по умолчанию — None)

Dictionary

После выполнения removeValues вы можете подтвердить, будут ли значения удаляться с помощью метода listMissingValues. Важно сбросить символы слоя с обновленной информацией перед продолжением обработки других элементов в способе отображения.

Пример кода

UniqueValueRenderer, пример 1

Следующий скрипт сначала изменяет способ отображения на UniqueValueRenderer. Далее он для свойства fields задаёт использование одного поля с названием Percent. Затем он перебирает каждый Item в каждой ItemGroup и задает красный цвет RGB и значение alpha, или прозрачность, соответствующее значению Percent каждого из объектов. И наконец он надписывает все значения, снова задает символы для слоя и сохраняет выходные данные.

import arcpy, os, sys
relpath = os.path.dirname(sys.argv[0])

p = arcpy.mp.ArcGISProject(relpath + r'\\UniqueValue.aprx')
m = p.listMaps('Map')[0]
l = m.listLayers('PercentCover*')[0]
sym = l.symbology

sym.updateRenderer('UniqueValueRenderer')
sym.renderer.fields = ['Percent']
for grp in sym.renderer.groups:
    for itm in grp.items:
        transVal = itm.values[0][0] #Grab the first "percent" value in the list of potential values
        itm.symbol.color = {'RGB': [255, 0, 0, int(transVal)]}
        itm.label = str(transVal) + '%'

l.symbology = sym
p.saveACopy(relpath + r'\\SavedOutput.aprx')
UniqueValueRenderer, пример 2

Следующий скрипт сначала иллюстрирует два способа удаления и добавления значений в заголовок новой группы. Сначала он удаляет четыре названия штатов и затем добавляет те же элементы в новый заголовок группы Pacific Coast. Далее он использует removeValues, чтобы удалить шесть штатов Новая Англия и затем применяет addValues, основываясь на том, что возвращает метод listMissingValues. [0] в списке – это первая и единственная группа элементов, которая возвращается.

import arcpy
import os
import sys
relpath = os.path.dirname(sys.argv[0])

p = arcpy.mp.ArcGISProject(relpath + r'\\UniqueValue.aprx')
m = p.listMaps('Map')[0]
l = m.listLayers('State_Polygons_Default')[0]
sym = l.symbology

sym.renderer.removeValues({"STATE_NAME" : ["Alaska", "California", "Oregon", "Washington"]})
l.symbology = sym
sym.renderer.addValues({"Pacific Coast" : ["Alaska", "California", "Oregon", "Washington"]})
l.symbology = sym

sym.renderer.removeValues({"STATE_NAME" : ["Connecticut", "Maine", "Massachusetts", "New Hampshire", "Rhode Island", "Vermont"]})
l.symbology = sym
missList = sym.renderer.listMissingValues()
sym.renderer.addValues({"New England" : missList[0].items})
l.symbology = sym

p.saveACopy(relpath + r'\\SavedOutput.aprx')