摘要
Symbol 类用于访问基本符号属性和方法。
说明
Symbol 类表示与渲染器关联的符号。该类显示了基本的通用助手成员集,可应用于点、线和面符号。更新符号最简单的方式是使用 applySymbolFromGallery 方法。您可以更改符号以使用与工程一同保存的符号库中现有的已命名符号。
color 和 outlineColor 属性返回一个 Python 字典。字典拥有与颜色模型名称匹配的单个键,且其值为颜色属性列表。例如,这是红色的 RGB 制图表达:{'RGB' : [255, 0, 0, 100]}。属性根据颜色模型变化。所有颜色模型的最后一个参数是 alpha 或不透明度值。alpha 或不透明度值的行为与应用程序用户界面中的透明度相反。如果在字典中将该值设为 100,则其会在功能区的透明度控件中或在符号系统窗格中显示为 0%。
您可以读取所有受支持颜色模型的值,但只能修改一个子集。以下是受支持的颜色模型列表:
- {'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})
参数 | 说明 | 数据类型 |
wildcard | 用于基于符号名称和标签值查找符号的字符串。部分单词搜索有效。 (默认值为 None) | String |
index | 基于可能符号数的列表索引值将以相同名称返回。 (默认值为 0) | Integer |
在一个工程中,可能会有多个符号使用相同的名称。创作工程时,采用可通过唯一值轻松进行搜索的符号名称非常重要。索引编号可用于返回特定符号。例如,有多个名为 Airport 的点符号。索引与您在库中所见的符号顺序对应。如果您想要引用第二个符号,请尝试,例如,airportSym = symbol.applySymbolFromGallery('Airport', 1)。
listSymbolsFromGallery ({wildcard})
参数 | 说明 | 数据类型 |
wildcard | 用于基于符号名称和标签值查找符号的字符串。部分单词搜索有效。 (默认值为 None) | String |
您可能并不总知道要使用的索引值,因为不同的工程可能会有不同的符号集。此时,可使用 listSymbolsFromGallery 方法。您可以借此遍历拥有常用名称的符号并查询单个符号属性,例如 size 或 color,这样一来您就可以识别要引用的特定符号。
代码示例
以下脚本将名为 Extent Transparent 的符号从工程中的库应用至面图层。接下来,它会更改一些符号属性,例如 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"))