使用转换函数

SLD中描述和中描述的支持的转换函数 equivalent SLD chapter 也可以在CSS中使用,下面给出了如何使用它们的示例。

重新编码

这个 Recode 过滤函数通过应用 (输入、输出) 映射到作为函数的第一个输入提供的变量/表达式的值。

考虑使用填充颜色表示州的地形区域的美国州数据集的叶绿体地图。数据集有一个属性 SUB_REGION 包含每个州的区号。这个 Recode 函数用于将每个区域代码映射到不同的颜色。

备注

需要注意的是,下面的示例将颜色指定为十六进制字符串,而不是本机CSS颜色名称,这是因为函数语法是用cql表示的,cql不支持本机CSS颜色名称。

* {
  fill: [recode(strTrim(SUB_REGION),
         'N Eng', '#6495ED',
         'Mid Atl', '#B0C4DE',
         'S Atl', '#00FFFF',
         'E N Cen', '#9ACD32',
         'E S Cen', '#00FA9A',
         'W N Cen', '#FFF8DC',
         'W S Cen', '#F5DEB3',
         'Mtn', '#F4A460',
         'Pacific', '#87CEEB')];
  stroke: lightgrey;
  label: [STATE_ABBR];
  font-family: 'Arial';
  font-fill: black;
  label-anchor: 0.5 0.5;
}
../../../_images/recode_usa_region.png

分类

这个 Categorize 过滤函数通过划分值的范围并将其转换为颜色、大小、宽度、不透明度等,将连续值属性转换为一组离散值。

在下面的示例中,构建了一个coropleth映射,将颜色与范围内的状态人口密度关联起来。 [ <= 20] , [20 - 100] 和 [ > 100] .

* {
  fill: [categorize(
         PERSONS / LAND_KM,
         '#87CEEB',
         20,
         '#FFFACD',
         100,
         '#F08080')];
  stroke : lightgrey;
  label: [STATE_ABBR];
  font-family: 'Arial';
  font-fill: black;
  label-anchor: 0.5 0.5;
}
../../../_images/categorize_usa_popdensity.png

插入

这个 Interpolate 过滤函数通过分段插值将一个连续值属性转换为另一个连续值范围。

The result will work for numeric values such as size, width, opacity when operating in numeric interpolation method (the default), and for colors when working in color mode.

拟合指定点的曲线类型可以是 linear (违约), cubiccosine ,这些值称为 插值模式 .

插值方法和模式都是可选的,如果提供,它们将添加到输入列表的末尾。

在下面的示例中,使用插值函数以相当紧凑的方式将状态填充映射到连续的色阶:

* {
  fill: [Interpolate(
         PERSONS,
         0, '#FEFEEE',
         9000000, '#00FF00',
         23000000, '#FF0000',
         'color',
         'linear')];
  stroke : lightgrey;
  label: [STATE_ABBR];
  font-family: 'Arial';
  font-fill: black;
  label-anchor: 0.5 0.5;
}
../../../_images/interpolate_usa_pop.png