Symbol

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

Класс Symbol обеспечивает доступ к основным свойствам и методам символа.

Обсуждение

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

Свойства color и outlineColor возвращают словарь Python. Этот словарь имеет отдельный ключ, который соответствует имени цветовой модели, а значением является список цветовых свойств. Например, так выглядит RGB представление для красного: {'RGB' : [255, 0, 0, 100]}. Свойства изменяются в зависимости от цветовой модели. Последним параметром для всех цветовых моделей является альфа или значение непрозрачности. Альфа, или значение непрозрачности, имеет поведение, противоположное прозрачности в пользовательском интерфейсе приложения. Если вы зададите в словаре это значение равным 100, оно появится, как 0% в элементе управления transparency на ленте или на панели Символы.

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

  • {'CMYK' : [Cyan, Magenta, Yellow, Black, Alpha]} – Чтение/Запись
  • {'HSL' : [Hue, Saturation, Lightness, Alpha]} – Чтение/Запись
  • {'HSV' : [Hue, Saturation, Value, Alpha]} – Чтение/Запись
  • {'RGB' : [Red, Green, Blue, Alpha]} – Чтение/Запись
  • {'Lab' : [Lightness, a, b, Alpha]} – Только чтение
  • {'Grayscale' : [Gray, Alpha]} – Только чтение

Свойства

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

Получает и задает значение поворота для точечного символа.

Double
color
(чтение и запись)

Получает и задает цвет для точечного, линейного или полигонального символа, используя словарь Python.

Dictionary
name
(только чтение)

Получает имя, связанное с этим символом. Корректное значение доступно только в случае, если на символ ссылаются с помощью метода listSymbolsFromGallery.

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

Получает и задает цвет для контура символа, используя словарь Python.

Dictionary
outlineWidth
(чтение и запись)

Получает и задает ширину контура символа.

Double
size
(чтение и запись)

Получает и задает размер точечного символа, ширину линейного символа или ширину контура полигонального символа.

Double
useRealWorldUnits
(чтение и запись)

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

Boolean

Обзор метода

МетодОписание
applySymbolFromGallery (wildcard, {index})

applySymbolFromGallery предоставляет механизм для установки символа на тот, который существует в системе или в галерее стилей проекта.

listSymbolsFromGallery ({wildcard})

listSymbolsFromGallery предоставляет механизм для возвращения списка символов, которые существуют в системе или в галерее стилей проекта.

Методы

applySymbolFromGallery (wildcard, {index})
ПараметрОписаниеТип данных
wildcard

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

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

String
index

Значение индекса в списке на основе количества возможных символов, которые возвращаются с одинаковым именем.

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

Integer

В проекте могут находиться несколько символов с одинаковым именем. Важно разрабатывать проект, используя такие имена символов, которые легко найти по уникальному значению. Для возвращения определенного символа можно использовать значение индекса. Например, существует несколько точечных символов с именем Airport. Индекс соответствует порядку, в котором символы отображаются в галерее. Если вы хотите обратиться ко второму символу, попробуйте, например, airportSym = symbol.applySymbolFromGallery('Airport', 1).

listSymbolsFromGallery ({wildcard})
ПараметрОписаниеТип данных
wildcard

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

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

String

Вы можете не знать, какое значение индекса следует использовать, поскольку в различных проектах могут содержаться различные коллекции символов. Для этой цели может использоваться метод listSymbolsFromGallery. Он позволяет вам пройти по всем символом с общим именем и извлечь отдельные свойства символа, такие как size или color, так что вы сможете идентифицировать, на какой из символов следует ссылаться.

Пример кода

Symbol, пример 1

Следующий скрипт применяет символ с названием Экстент – Прозрачный из галереи в проекте с полигональным слоем. Далее, он изменяет несколько свойств символа, такие как color (используя цветовую модель RGB), outlineColor (используя цветовую модель CMYK) и size.

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

p = arcpy.mp.ArcGISProject(os.path.join(relpath, "Symbol.aprx"))
m = p.listMaps('Map')[0]
lyr = m.listLayers("Study Areas")[0]
sym = lyr.symbology

sym.renderer.symbol.applySymbolFromGallery("Extent Transparent Wide Gray")
sym.renderer.symbol.color = {'RGB' : [255, 0, 0, 60]}
sym.renderer.symbol.outlineColor = {'CMYK' : [25, 50, 75, 25, 100]}
sym.renderer.symbol.size = 3

lyr.symbology = sym

p.saveACopy(os.path.join(relpath, "SavedOutput.aprx"))
Symbol, пример 2

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

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

p = arcpy.mp.ArcGISProject(os.path.join(relpath, "Symbol.aprx"))
m = p.listMaps('Map')[0]
lyr = m.listLayers("Airports")[0]
sym = lyr.symbology

if sym.renderer.type == "SimpleRenderer":
  airportSymList = sym.renderer.symbol.listSymbolsFromGallery("Airport")
  for symbol in airportSymList:
    if symbol.size == 14.0:
      sym.renderer.symbol = symbol
      lyr.symbology = sym

p.saveACopy(os.path.join(relpath, "SavedOutput.aprx"))