Сводка
Представляет палитру уникальных значений растра.
Описание
Если вы изменяете текущую палитру на RasterUniqueValueColorizer, сначала необходимо задать соответствующее значение свойства field. После применения вашего field, палитра автоматически создаст все уникальные значения. Если по каким-либо причинам в растр добавляются новые значения, то необходимо сбросить палитру, чтобы все значения были добавлены заново.
Вам необходимо разобраться, как в палитре происходит управление уникальными значениями, чтобы вы могли выполнять навигацию по структуре класса для изменения отдельных элементов и их значений. Свойство groups возвращает список объектов ItemGroup. Каждый объект ItemGroup представляет категорию items, каждый из которых имеет собственный heading. По умолчанию, имеется один ItemGroup. Свойство items возвращает список объектов RasterItem. После того, как у вас есть item, можно изменить свойства, такие как label и description. Вы также можете изменить color для каждого элемента. Причиной того, что свойство values является множественным и возвращает список является то, что вы можете группировать объекты внутри ItemGroup. Поэтому каждый item может иметь несколько значений.
Далее приведен способ, которым можно обрисовать структуру класса:
- groups – возвращает список объектов ItemGroup
- heading
- items– возвращает список объектов RasterItem
- color
- description
- label
- values
Свойства
Владение | Объяснение | Тип данных |
colorRamp (чтение и запись) | Предоставляет доступ к объекту ColorRamp. | ColorRamp |
field (чтение и запись) | Поле, которое используется палитрой для определения уникального набора значений. | String |
groups (чтение и запись) | Список объектов ItemGroup, содержащих уникальные значения. | List |
noDataColor (чтение и запись) | Логический оператор, управляющий отображением пропущенных значений. Если имеет значение True, пропущенные значения отображаются. | Dictionary |
type (только чтение) | Возвращает строку, которая представляет тип палитры. | String |
useDefaultSymbol (чтение и запись) | Логический параметр, управляющий отображением недобавленных значений. Если имеет значение True, то объекты отображаются. | Boolean |
Пример кода
Следующий скрипт сначала проверяет, является ли палитра RasterUniqueValueColorizer. Далее он задает свойство field для использования поля с названием Class_name. Далее он итерирует каждый RasterItem в каждой ItemGroup и проверяет значение label, равное Water. В итоге, он задает цвет, который будет синим в RGB, с 50% прозрачностью.
import arcpy
import os
import sys
relpath = os.path.dirname(sys.argv[0])
p = arcpy.mp.ArcGISProject(relpath + r'\\RasterUniqueValue.aprx')
m = p.listMaps('Map')[0]
l = m.listLayers('*UniqueValue')[0]
sym = l.symbology
if sym.colorizer.type == "RasterUniqueValueColorizer":
sym.colorizer.field = 'Class_name'
for grp in sym.colorizer.groups:
for itm in grp.items:
if itm.label == "Water":
itm.color = {'RGB': [0, 0, 255, 50]}
l.symbology = sym
p.saveACopy(relpath + r'\\SavedOutput.aprx')