定义和重用YAML变量¶
ysld中的变量,允许用名称定义某个指令或指令块,然后重新使用。这可以大大简化样式文档。
使用变量最常见的两个用例是:
为值创建更友好的名称(例如使用
myorange
而不是#EE8000
)定义指令块以删除冗余内容并缩短文件长度
通常情况下,但不要求将所有定义放在ysld文件的最上面,最重要的是 header information , feature styles 或 rules .
句法¶
定义单个值¶
将变量定义为单个值的语法为:
define: &variable <value>
在哪里?
属性 |
必修的? |
描述 |
默认值 |
---|---|---|---|
|
是的 |
启动定义块。 |
不适用 |
|
是的 |
正在定义的变量的名称。这个 |
不适用 |
|
是的 |
单个值,如 |
不适用 |
使用此变量的语法是在变量名前面加上 *
::
<directive>: *variable
此变量可以在任何需要其类型的地方使用。
定义指令块¶
将变量定义为内容块的语法为:
define: &varblock
<directive>: <value>
<directive>: <value>
...
<block>:
- <directive>: <value>
<directive>: <value>
...
任何数量的指令或指令块都可以在定义块内。 此外,只要内容块可以替换变量而不进行修改,那么定义中可以包含任何类型的有效ysld指令。
备注
也可以有嵌套的定义。
使用此变量的语法是在变量名前面加上 <<: *
. 例如::
<block>:
- <directive>: <value>
<<: *varblock
包含变量的行将替换为定义的内容。
实例¶
定义变量以重复使用颜色¶
命名多边形填充和光晕轮廓的背景颜色:
define: &background_color '#998088'
define: &text_color "#111122"
feature-styles:
- rules:
- symbolizers:
- polygon:
stroke-width: 1
fill-color: *background_color
- text:
label: ${name}
fill-color: *text_color
halo:
radius: 2
fill-color: *background_color
fill-opacity: 0.8
定义块以重复使用笔划¶
定义笔划参数块以在每个规则中重复使用:
define: &stroke_style
stroke: '#FF0000'
stroke-width: 2
stroke-opacity: 0.5
feature-styles:
- rules:
- filter: ${pop < '200000'}
symbolizers:
- polygon:
<<: *stroke_style
fill-color: '#66FF66'
- filter: ${pop BETWEEN '200000' AND '500000'}
symbolizers:
- polygon:
<<: *stroke_style
fill-color: '#33CC33'
- filter: ${pop > '500000'}
symbolizers:
- polygon:
<<: *stroke_style
fill-color: '009900'