筛选器语法¶
筛选器限制受规则属性影响的功能集。简单过滤器有几种类型,可以组合起来为规则提供更复杂的过滤器。
组合过滤器¶
组合是以通常的CSS方式完成的。两个过滤器之间用逗号分隔的规则会影响任何匹配的功能 任何一个 筛选,而只有空白分隔的两个筛选的规则只影响匹配的功能 both 过滤器。下面是一个使用基本属性过滤器的示例(如下所述):
/* Matches places where the lake is flooding */
[rainfall>12] [lakes>1] {
fill: black;
}
/* Matches wet places */
[rainfall>12], [lakes>1] {
fill: blue;
}
在编写同时使用这两种方法的选择器时 and 和 or 组合器,记住 and 组合器具有更高的优先级。例如::
restricted [cat='2'], [cat='3'], [cat='4'] [@sd <= 200k] [@sd > 100k] {
fill: #EE0000;
}
上述选择器应为:
typename is 'restricted' and
cat='2'
orcat='3'
orcat='4'
规模在10万到20万之间
如果目的是合并使用三个cat过滤器,那么正确的语法应该是:
restricted [cat='2' or cat='3' or cat='4'] [@sd <= 200k] [@sd > 100k] {
fill: #EE0000;
}
应理解为:
类型名为“受限” and
(
cat='2'
或cat='3'
或cat='4'
) and规模在10万到20万之间
过滤数据属性¶
属性筛选器匹配数据的某些属性(例如,数据库表中的列)。这可能是最常见的过滤器类型。属性过滤器采用属性名和数据值的形式,由某些谓词运算符(如小于运算符)分隔 <
)
支持的谓词运算符包括:
算符 |
意义 |
---|---|
|
属性必须精确 equal 到指定的值。 |
|
属性不能完全等于指定的值。 |
|
属性必须大于(或按字母顺序晚于)指定的值。 |
|
属性必须大于或等于指定的值。 |
|
属性必须小于(或按字母顺序早于)指定的值。 |
|
属性必须小于或等于指定的值。 |
|
属性必须与指定值描述的模式匹配。模式使用 |
例如,要仅为名称以字母开头的州呈现字母表前半部分的大纲,规则如下:
[STATE_NAME<='M'] {
stroke: black;
}
备注
属性过滤器的当前实现使用ECQL语法,如 GeoTools documentation .
筛选类型¶
当处理来自多个源的数据时,提供仅影响其中一个源的规则可能会很有用。这非常简单;只需将层的名称指定为过滤器:
states {
stroke: black;
}
按ID筛选¶
对于提供功能级别标识符的层,您可以通过指定ID来设置特定功能的样式。这可以通过用哈希符号预先固定ID来实现。 (#
):
#states.2 {
stroke: black;
}
备注
在CSS中, .
元素ID中不允许有字符;并且 #states.foo
选择器将元素与ID匹配 states
只有当它也有班级的时候 foo
.由于这种形式的标识符在地理服务器层中出现的频率很高,因此CSS模块在这方面与标准CSS略有不同。未来的修订可能会使用某种形式的咀嚼来避免这种偏差。
通过渲染上下文过滤(比例)¶
通常,地图的某些方面应该根据查看地图的上下文进行更改。例如,在州级别查看时,路线图可能会省略住宅道路,但会在邻里级别突出显示它们。比例级别等详细信息显示为伪属性;它们看起来像属性筛选器,但属性名称以 @
符号::
[roadtype = 'Residential'][@sd > 100k] {
stroke: black;
}
提供的上下文详细信息如下:
伪属性 |
意义 |
---|---|
@标准偏差 |
当前渲染的比例分母。更明确地说,这是实际距离与屏幕/渲染距离的比率。 |
@比例 |
与上面相同,当前渲染的比例分母(不是比例)。支持向后兼容性 |
刻度值可以用普通数字表示,为了简洁易读,可以使用后缀k(kilo)、m(mega)、g(giga),例如:
[@sd > 100k]
[@sd < 12M]
[@sd < 1G]
备注
虽然属性过滤器(当前)使用更复杂的ECQL语法,但伪属性不能使用复杂表达式,必须采用<property><operator><literal>的形式。
过滤符号¶
当使用符号以内联方式创建图形时,您可能需要对它们应用一些样式设置选项。您可以使用一些特殊的选择器为内置符号指定样式属性:
PseudoSelector |
意义 |
---|---|
|
指定规则应用于用作点标记的符号 |
|
指定规则应用于用作笔划模式的符号 |
|
指定规则应用于用作填充图案的符号 |
|
指定规则应用于任何符号,而不管它在哪个上下文中使用 |
|
指定规则应用于要素上用于第n个堆叠点标记的符号。 |
|
指定规则应用于特征上用于第n个堆叠笔划图案的符号。 |
|
指定规则应用于要素上用于第n个堆积填充图案的符号。 |
|
指定规则应用于要素上第n个堆叠符号所用的符号,而不管该符号在哪个上下文中使用。 |
有关使用这些选择器的更多讨论,请参阅 样式化标记 .
全局规则¶
有时,有一个与所有功能匹配的规则很有用,例如,为地图提供一些默认样式(记住,默认情况下不渲染任何内容)。这是用一个星号完成的。 *
代替常规过滤器。此“全部捕获”规则可用于复杂表达式,如果希望规则为某些功能提供默认值和重写值,则此规则可能很有用:
* {
stroke: black;
}