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