Сводка
Класс 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 |
size (чтение и запись) | Получает и задает размер точечного символа, ширину линейного символа или ширину контура полигонального символа. | Double |
useRealWorldUnits (чтение и запись) | Получает и задает свойство, отвечающее за использование реальных единиц измерения или единиц измерения страницы при отображении размера символа. Если равно True, символ будет отображен с использованием реальных единиц измерения, например, метров. | Boolean |
Обзор метода
Метод | Объяснение |
applySymbolFromGallery (wildcard, {index}) | applySymbolFromGallery предоставляет механизм для установки символа на тот, который существует в системе или в галерее стилей проекта. |
listSymbolsFromGallery ({wildcard}) | listSymbolsFromGallery предоставляет механизм для возвращения списка символов, которые существуют в системе или в галерее стилей проекта. |
Методы
applySymbolFromGallery (wildcard, {index})
Parameter | Объяснение | Тип данных |
wildcard | Строка, используемая для поиска символов на основе его имени или значения тега. Поиск по части слова тоже работает. (Значение по умолчанию — None) | String |
index | Значение индекса в списке на основе количества возможных символов, которые возвращаются с одинаковым именем. (Значение по умолчанию — 0) | Integer |
В проекте могут находиться несколько символов с одинаковым именем. Важно разрабатывать проект, используя такие имена символов, которые легко найти по уникальному значению. Для возвращения определенного символа можно использовать значение индекса. Например, существует несколько точечных символов с именем Airport. Индекс соответствует порядку, в котором символы отображаются в галерее. Если вы хотите обратиться ко второму символу, попробуйте, например, airportSym = symbol.applySymbolFromGallery('Airport', 1).
listSymbolsFromGallery ({wildcard})
Parameter | Объяснение | Тип данных |
wildcard | Строка, используемая для поиска символов на основе его имени или значения тега. Поиск по части слова тоже работает. (Значение по умолчанию — None) | String |
Вы можете не знать, какое значение индекса следует использовать, поскольку в различных проектах могут содержаться различные коллекции символов. Для этой цели может использоваться метод listSymbolsFromGallery. Он позволяет вам пройти по всем символом с общим именем и извлечь отдельные свойства символа, такие как size или color, так что вы сможете идентифицировать, на какой из символов следует ссылаться.
Пример кода
Следующий скрипт применяет символ с названием Экстент – Прозрачный из галереи в проекте с полигональным слоем. Далее, он изменяет несколько свойств символа, такие как 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"))
Следующий скрипт перебирает символы в галерее, имеющие одинаковое имя. Он выделяет нужный символ на основе свойства 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"))