描述
表示栅格唯一值着色器。
讨论
如果将当前着色器更改为 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 的字段。它接着遍历每个 ItemGroup 中的各个 RasterItem,并检查等于 Water 的 label 值。最后,它将颜色设置为具有 50% 透明度的 RGB 蓝色。
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')