Symbology

Сводка

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

Описание

Типичный рабочий процесс: сослаться на symbology векторного слоя, выполнить изменения и затем применить эти изменения обратно к слою.

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

Только следующие способы отображения векторного слоя поддерживаются в текущий момент в arcpy.mp: SimpleRenderer, GraduatedColorsRenderer, GraduatedSymbolsRenderer и UniqueValueRenderer.

Поддерживаются следующие палитры для растров: RasterClassifyColorizer и RasterUniqueValueColorizer.

Свойства

ВладениеОбъяснениеТип данных
colorizer
(только чтение)

Получает объект палитры для растрового слоя. Поддерживаются следующие типы: RasterClassifyColorizer и RasterUniqueValueColorizer.

Object
renderer
(только чтение)

Получает объект способа отображения для векторного слоя. Поддерживаемые типы включают: GraduatedColorsRenderer, GraduatedSymbolsRenderer, SimpleRenderer или UniqueValueRenderer.

Object

Обзор метода

МетодОбъяснение
updateColorizer (colorizer_name)

Метод updateColorizer используется для изменения палитры растрового слоя.

updateRenderer (renderer_name)

Метод updateRenderer используется для изменения способа отображения слоя.

Методы

updateColorizer (colorizer_name)
ParameterОбъяснениеТип данных
colorizer_name

Поддерживаются следующие способы отображения:

  • RasterClassifyColorizerПалитра классифицированного растра.
  • RasterUniqueValueColorizerПалитра уникальных значений растра.
String

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

updateRenderer (renderer_name)
ParameterОбъяснениеТип данных
renderer_name

Поддерживаются следующие способы отображения:

  • GraduatedColorsRendererСпособ отображения Градуированные цвета
  • GraduatedSymbolsRendererСпособ отображения Градуированные символы
  • SimpleRendererСпособ отображения Единый символ
  • UniqueValueRendererСпособ отображения Уникальные значения
String

Способ отображения SimpleRenderer такой же, как способ отображения с помощью единого символа, который вы видите в приложении. Это имя используется для поддержки согласованности с .NET API.

Пример кода

Пример символов 1

Следующий скрипт проходит через каждый векторный слой и тестирует, поддерживает ли его symbology свойство renderer, используя функцию hasattr. Далее, если способ отображения type является SimpleRenderer, он изменит его на GraduatedColorsRenderer, используя способ updateRenderer, а затем установит его значение breakCount, равным 6. И, наконец, применит символы обратно к слою перед сохранением результатов.

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

p = arcpy.mp.ArcGISProject(relpath + r'\\Symbol.aprx')
m = p.listMaps('Map')[0]

for lyr in m.listLayers():
  if lyr.isFeatureLayer:
    sym = lyr.symbology
    if hasattr(sym, 'renderer'):
      if sym.renderer.type == 'SimpleRenderer':
        sym.updateRenderer('GraduatedColorsRenderer')
        sym.renderer.breakCount = 6
        
        lyr.symbology = sym

p.saveACopy(relpath + r"\\SavedOutput.aprx")
Пример символов 2

В следующем скрипте сначала тестируется, поддерживают ли символы слоя свойство colorizer, затем подтверждается, что способ отображения – RasterClassifyColorizer. Далее изменяются classificationField и breakCount. Наконец, ColorRamp меняется на цветовую шкалу с именем Голубой – фиолетовый.

import arcpy
import os
import sys

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

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

if hasattr(sym, 'colorizer'):
    if sym.colorizer.type == 'RasterClassifyColorizer':
        sym.colorizer.classificationField = 'Value'
        sym.colorizer.breakCount = 7
        sym.colorizer.colorRamp = p.listColorRamps('Cyan to Purple')[0]
        l.symbology = sym

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