结构¶
下面是一个包含单个特征样式内单个规则的ysld样式的简单示例:
name: style_example
title: An example of YSLD styling
abstract: Used in the User Manual of GeoServer
feature-styles:
- rules:
- name: all
title: Every feature will be styled this way
symbolizers:
- polygon:
fill-color: '#808080'
fill-opacity: 0.5
stroke-color: '#000000'
stroke-opacity: 0.75
这将使用给定的RGB颜色代码(填充为中灰色,轮廓为黑色)为给定层中的每个多边形特征设置样式,填充和笔画的给定阴影均以小数表示百分比(因此0.5是50%不透明)。
备注
有关语法的详细信息,请参阅 symbolizers .
典型的ysld文件结构如下:
结构 |
描述 |
---|---|
|
用于常用样式设置 |
|
用于基于瓦片集缩放级别定义样式 |
|
文档名称、标题和摘要,后跟要素样式 |
可以包含一个或多个规则的独立块。 |
|
可以包含一个或多个的指令 symbolizers . |
|
规则“包括”所有功能,除非通过使用 filter . |
|
包含单个功能的实际可视化说明的样式的基本单位。 |
结构ysld文件使用缩进概述。
ysld样式的结构示例¶
属性语法¶
ysld样式文档中的单个语句(或指令)设计为以下形式的键值或属性值对:
<property>: <value>
这个 <property>
是表示属性名的字符串,而 <value>
可以是多种不同类型中的一种,具体取决于上下文。这些不同的类型需要稍微不同的标记,如下表所示:
类型 |
句法 |
例子 |
笔记 |
---|---|---|---|
整数 |
仅限值 |
|
也允许使用引号 |
浮标 |
仅限值 |
|
也允许使用引号 |
文本 |
引用 |
|
允许使用空格、冒号和其他特殊字符。如果值不明确,请使用单引号。 |
颜色 |
|
|
用于指定RGB颜色。对于十六进制,使用 |
元组 |
括号 |
|
使用两个单引号表示元组中的空白条目(例如: |
Filter 或其他表达式 |
$<表达式> |
|
如果属性名不明确,请用括号括起来(例如: |
表达¶
在整个参考指南中,都有对以下值的引用: <expression>
. 安 表达 是一个灵活的术语,意思是值可以是下列对象之一:
文字(标量或字符串)
属性名
如果使用函数,它的计算结果必须与属性预期的类型匹配。
映射和列表¶
备注
下面的讨论摘自基本的yaml语法。请参阅 YAML specification 如有必要。
YSLD文档中有三种类型的对象:
标量 ,一个简单值
映射 ,键值(属性值)对的集合
List ,任何对象集合。列表可以包含映射、标量,甚至其他列表。
列表要求每个条目都有破折号,而映射则不需要。 .
例如,a symbolizer 块是一个列表,因此每个条目都需要自己的破折号:
- symbolizer:
- polygon:
...
- text:
...
这个 point:
和 text:
对象(单个符号本身)是映射,因此内容不需要短划线,只需要缩进:
- polygon:
stroke-color: '#808080'
fill-color: '#FF0000'
旁边的破折号 polygon
表示项本身包含在列表中,而不是包含列表。和 破折号的位置与列表标题的缩进级别相同。
有时,对象应该是列表(并使用破折号)还是映射(而不是使用破折号)并不明显,因此如果不确定,请参阅此表:
对象 |
类型 |
---|---|
表 |
|
表 |
|
表 |
|
个别符号(内容) |
映射 |
映射 |
|
颜色表(用于栅格符号) |
表 |
缩进¶
压痕在YSLD中非常重要。所有指令都必须缩进到适当的位置,以确保正确的层次结构。 不正确的缩进将导致样式呈现不正确,或者根本不正确。
例如,多边形符号,因为它是一个映射,所以在它内部包含一些参数,例如填充和笔划的颜色。这些必须缩进,使它们“在”多边形块内。
在本例中,以下标记是 对的 ::
- polygon:
fill-color: '#808080'
fill-opacity: 0.5
stroke-color: black
stroke-opacity: 0.75
多边形(符号)内的参数是缩进的,这意味着它们引用的是符号,而不是“在它外面”。
与以下内容比较 不正确的 标记:
- polygon:
fill-color: '#808080'
fill-opacity: 0.5
stroke-color: black
stroke-opacity: 0.75
这里与多边形块相关的参数需要包含在该块中。如果不缩进参数,则它们与多边形块处于同一“级别”,因此无法正确解释。
备注
有关符号语法的详细信息,请参阅 symbolizers .
换行¶
长行可以通过缩进文本块中的每个后续行来换行。新行字符将转换为空格,因此每行不应以空格结尾。
所以在一个有长值的情况下:
- name: shortname
title: Longer name
abstract: This is a really long abstract that in no way is ever likely to fit on a single line on most people's displays.
可以将其更改为:
- name: shortname
title: Longer name
abstract: This is a really long abstract that in no way
is ever likely to fit on a single line on most
people's displays.
在这两种情况下, abstract
没有变化。
换行也可以在属性和值之间进行。所以这一行:
stroke-width: ${roadwidth / 500}
可以修改为:
stroke-width:
${roadwidth / 500}
使用换行的唯一约束是后续行需要缩进。
评论¶
在ysld中允许使用注释,这是出于描述性原因,并且可以删除某些样式指令而不直接删除它们。注释由a表示
#
作为行中第一个非空白字符。例如::上面将显示宽度为
2
;显示宽度为3
被注释掉。注释块不存在,因此注释的每一行都需要这样指示::
备注
转换为SLD时不保留注释。