GeoServer使用CSS定义地图样式-上手

使用CSS进行地图配色,能够实现与SLD语言相通的效果,具体样式定义规则参考CSS语法,是在花括号内的键值对来实现{ name: value },支持CSS嵌套,内层级别高于外层。

  • 在新建CSS样式的页面,选择“生成默认样式”,可以生成


    GeoServer使用CSS定义地图样式-上手_第1张图片
    默认样式
通CSS选择器来匹配地图要素
  • *代表所有要素都使用该样式
/* 所有要素都会匹配以下样式 */
* {
    stroke: #000000;
    stroke-width: 0.5;
    fill: #0099cc;
}
属性表过滤
  • 使用CQL语法进行图层属性过滤,作为CSS选择器进行要素匹配,过滤器可以任意组合。
/* 筛选人口小于2百万的要素 */
[PERSONS < 2000000] {
  fill: #4DFF4D;
  fill-opacity: 0.7;
}
  • 多个过滤条件组合的时候,空格表示AND,逗号 ,表示ORAND的优先级要高于OR
/*  */
restricted [cat='2' or cat='3'] [dog > 0] {
  fill: #EE0000;
}

可用的操作符有 =>=<<=<>LIKE

数据源过滤
  • 当有多个图层数据源的时候,直接通过图层名就可以选择该图层,对其所有要素应用样式
/*图层名字是states的要素 */
states{
    stroke: black;
}
ID过滤
  • 可以通过#来选择图层中指定ID的要素(ID可以参考shp数据中FID字段)
/*  states图层中,ID为2的要素 */
#states.2 {
    stroke: black;
}
符号过滤器

选择样式中的符号,来对符号进行渲染。支持以下方式

: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个堆叠符号所使用的符号,无论其使用的是哪个上下文。

/* 构建一个医院的图标 */
[usage='hospital'] {
  mark: symbol('circle'), symbol('cross');
  :nth-mark(1) {
    size: 16px;
    fill: white;
    stroke: red;
  };
  :nth-mark(2) {
    size: 12px;
    fill: red;
  }
}
比例尺过滤

结合其他条件,使用@sd来对当前分辨率下的要素进行过滤渲染

/* Residential类型的道路在大于100K的比例尺是,线条颜色是黑色 */
[roadtype = 'Residential'] [@sd > 100k] {
    stroke: black;
}

你可能感兴趣的:(GeoServer使用CSS定义地图样式-上手)