样式化标记

geoserver的css模块提供了一组预定义的符号,您可以使用这些符号并将它们组合在一起以创建简单的标记、笔画和填充图案,而无需使用图像编辑程序。您可以通过symbol()css函数访问这些符号。例如,内置的圆形符号使为点图层创建简单的“点”标记变得容易:

* {
  mark: symbol(circle);
}

符号可以在任何地方使用 url() 要引用图像(如中所示,您可以使用笔画和填充图案以及标记的符号。)

符号名称

geoserver扩展可以添加额外的符号(例如 chart:// 符号族,允许通过类似于google charts api的命名方案将图表用作符号。但是,有一些符号始终可用:

  • 圆圈

  • 广场

  • 三角形

  • 箭头

  • 交叉

  • 明星

  • X

  • 形状:/水平线

  • 形状://垂直线

  • 形状:/反斜杠

  • shape//斜线

  • 形状:/。

  • 形状://次

  • windbarbs://default(大小) [unit]

符号选择器

符号提供了一些额外的样式选项,而不是为图像参考提供的样式选项。要指定这些样式属性,只需添加另一个带有特殊选择器的规则。有8个“伪类”选择器用于设置选择器的样式:

  • :mark 指定规则应用于用作点标记的符号

  • :shield 指定规则应用于用作标签屏蔽的符号(标签文本后面显示的图标)

  • :stroke 指定规则应用于用作笔划模式的符号

  • :fill 指定规则应用于用作填充图案的符号

  • :symbol 指定规则应用于任何符号,而不管它在哪个上下文中使用

  • :nth-mark(n) 指定规则应用于要素上用于第n个堆叠点标记的符号。

  • :nth-shield(n) 指定规则应用于要素上第n个堆叠标签的背景符号

  • :nth-stroke(n) 指定规则应用于特征上用于第n个堆叠笔划图案的符号。

  • :nth-fill(n) 指定规则应用于要素上用于第n个堆积填充图案的符号。

  • :nth-symbol(n) 指定规则应用于要素上第n个堆叠符号所用的符号,而不管该符号在哪个上下文中使用。

这些伪类选择器可以在顶级规则中使用,但从geoserver 2.10开始,它们更常用于靠近mark属性的子规则中,以获得更好的可读性(请参见下面的示例)。

符号样式属性

设置内置符号的样式类似于设置多边形特征的样式。但是,样式设置选项与真正多边形功能的可用选项略有不同:

  • 这个 marklabel 特性族不可用于符号。

  • 当前不支持嵌套符号样式。

  • 只有第一个 strokefill 将被使用。

  • 附加的 size (作为长度)和 rotation (作为角度)属性可用。它们类似于 (mark|stroke|fill)-size(mark|stroke|fill)-rotation 属性可用于真正的几何图形样式。

备注

包含样式上的各种前缀“-size”和“-rotation”属性会覆盖符号的属性(如果存在)。

示例样式符号

作为一个例子,考虑一种情况,在这种情况下,您要设计一个包含您所在城镇医院数据的图层。您可以通过在白色圆圈背景上放置红十字符号来创建简单的医院徽标:

[usage='hospital'] {
  mark: symbol('circle'), symbol('cross');
  :nth-mark(1) {
    size: 16px;
    fill: white;
    stroke: red;
  };
  :nth-mark(2) {
    size: 12px;
    fill: red;
  }
}

还有一个windbarb示例,从数据字段horspeed和hordir(direction)中获取风速和风向:

* {
  /* select windbard based on speed( here in meters per second, and south hemisphere) */
  mark: symbol('windbarbs://default(${horSpeed})[m/s]?hemisphere=s');

  /* rotate windbarb based on horDir property (in degrees) */
  mark-rotation: [horDir];

  mark-size: 20;
}