定义和重用YAML变量

ysld中的变量,允许用名称定义某个指令或指令块,然后重新使用。这可以大大简化样式文档。

使用变量最常见的两个用例是:

  • 为值创建更友好的名称(例如使用 myorange 而不是 #EE8000

  • 定义指令块以删除冗余内容并缩短文件长度

通常情况下,但不要求将所有定义放在ysld文件的最上面,最重要的是 header informationfeature stylesrules .

句法

定义单个值

将变量定义为单个值的语法为:

define: &variable <value>

在哪里?

属性

必修的?

描述

默认值

define

是的

启动定义块。

不适用

&variable

是的

正在定义的变量的名称。这个 & 不是变量名的一部分。

不适用

<value>

是的

单个值,如 512'#DD0000'

不适用

使用此变量的语法是在变量名前面加上 * ::

<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'
Previous: 功能
Next: 转换