过滤器¶
A 滤波器 是SLD中用于指定条件的机制。它们在功能上与SQL“where”子句相似。过滤器用于 规则 确定应将哪些样式应用于数据集中的哪些功能。SLD使用的筛选语言遵循 OGC Filter Encoding standard .详细描述见 筛选器编码引用 .
通过使用 比较运算符 或A 空间运算符 或其中两个或多个 逻辑运算符 .这些操作符通常用于比较被过滤特性的属性与其他属性或文字数据。
比较运算符¶
比较运算符用于指定特征的非空间属性的条件。以下内容 二进制比较运算符 可供选择:
<PropertyIsEqualTo>
<PropertyIsNotEqualTo>
<PropertyIsLessThan>
<PropertyIsLessThanOrEqualTo>
<PropertyIsGreaterThan>
<PropertyIsGreaterThanOrEqualTo>
这些运算符包含两个 filter expressions 比较一下。第一个操作数通常是 <PropertyName>
,但两个操作数都可以是任何表达式、函数或文本值。
二进制比较运算符可以包括 matchCase
具有值的属性 true
或 false
.如果此属性是 true
(默认值),字符串比较区分大小写。如果指定了属性并具有值 false
字符串比较不检查大小写。
其他可用 值比较运算符 是:
<PropertyIsLike>
<PropertyIsNull>
<PropertyIsBetween>
<PropertyIsLike>
将字符串属性值与文本匹配 模式 .它包含一个 <PropertyName>
元素,该元素包含要匹配的字符串和 <Literal>
包含模式的元素。模式由一系列规则字符和三个特殊模式字符指定。模式字符由 <PropertyIsLike>
元素:
wildCard
指定与任何零个或多个字符序列匹配的模式字符
singleChar
指定与任何单个字符匹配的模式字符
escapeChar
指定可用于转义这些模式字符的转义字符
<PropertyIsNull>
测试属性值是否为空。它有一个单人间 <PropertyName>
元素,该元素包含要测试的值的属性的名称。
<PropertyIsBetween>
测试表达式值是否在范围内。它包含一个 filter expression 提供要测试的值,然后是元素 <LowerBoundary>
和 <UpperBoundary>
,每个包含 filter expression .
实例¶
以下筛选器选择其
NAME
属性的值为“纽约”:
<PropertyIsEqualTo>
<PropertyName>NAME</PropertyName>
<Literal>New York</Literal>
</PropertyIsEqualTo>
以下过滤器选择几何面积大于1000000的特征:
<PropertyIsGreaterThan>
<ogc:Function name="area">
<PropertyName>GEOMETRY</PropertyName>
</ogc:Function>
<Literal>1000000</Literal>
</PropertyIsGreaterThan>
空间运算符¶
空间操作符用于指定特征几何属性的条件。以下空间运算符可用:
拓扑算子
这些运算符使用标准OGC简单特征谓词测试拓扑空间关系:
<Intersects>
<Equals>
<Disjoint>
<Touches>
<Within>
<Overlaps>
<Crosses>
<Contains>
这些运算符的内容是 <PropertyName>
几何值属性和GML几何文字的元素。
距离运算符
这些运算符计算几何图形之间的距离关系:
<DWithin>
<Beyond>
这些元素的内容是 <PropertyName>
几何值属性的元素、GML几何文本和 <Distance>
包含距离公差值的元素。这个 <Distance>
元素可以包括可选的 units
属性。
边界框运算符
此运算符测试要素几何属性是否与给定边界框相交:
<BBOX>
内容是可选的 <PropertyName>
元素和GML信封文本。如果 PropertyName
省略了默认的几何属性。
实例¶
以下过滤器选择与点(1,1)相交的几何图形的特征:
<Intersects>
<PropertyName>GEOMETRY</PropertyName>
<Literal>
<gml:Point>
<gml:coordinates>1 1</gml:coordinates>
</gml:Point>
</Literal>
</Intersects>
以下过滤器选择与方框相交的几何图形的要素 [-10,0 : 10,10] :
<ogc:BBOX>
<ogc:PropertyName>GEOMETRY</ogc:PropertyName>
<gml:Box srsName="urn:x-ogc:def:crs:EPSG:4326">
<gml:coord>
<gml:X>-10</gml:X> <gml:Y>0</gml:Y>
</gml:coord>
<gml:coord>
<gml:X>10</gml:X> <gml:Y>10</gml:Y>
</gml:coord>
</gml:Box>
</ogc:BBOX>
逻辑运算符¶
逻辑运算符用于创建其他筛选运算符的逻辑组合。它们可以嵌套到任何深度。以下逻辑运算符可用:
<And>
<Or>
<Not>
的内容 <And>
和 <Or>
是两个筛选器运算符元素。的内容 <Not>
是单个筛选器运算符元素。
实例¶
以下筛选器使用
<And>
要组合比较运算符和空间运算符:
<And>
<PropertyIsEqualTo>
<PropertyName>NAME</PropertyName>
<Literal>New York</Literal>
</PropertyIsEqualTo>
<Intersects>
<PropertyName>GEOMETRY</PropertyName>
<Literal>
<gml:Point>
<gml:coordinates>1 1</gml:coordinates>
</gml:Point>
</Literal>
</Intersects>
</And>
筛选表达式¶
筛选器表达式允许对数据值执行计算。以下元素可用于形成表达式。
算术运算符
这些运算符对数值执行算术运算。每个包含两个表达式作为子元素。
<Add>
<Sub>
<Mul>
<Div>
Functions
这个 <Function>
元素指定要计算的筛选函数。这个 name
属性提供函数名。元素包含提供函数参数的零个或多个筛选器表达式的序列。查看 过滤函数引用 有关geoserver提供的函数的详细信息。
功能属性值
这个 <PropertyName>
元素允许引用给定功能属性的值。它包含一个指定属性名的字符串。
Literals
这个 <Literal>
元素允许指定数值、布尔值、字符串、日期或几何类型的常量值。