过滤器

A 滤波器 是SLD中用于指定条件的机制。它们在功能上与SQL“where”子句相似。过滤器用于 规则 确定应将哪些样式应用于数据集中的哪些功能。SLD使用的筛选语言遵循 OGC Filter Encoding standard .详细描述见 筛选器编码引用 .

通过使用 比较运算符 或A 空间运算符 或其中两个或多个 逻辑运算符 .这些操作符通常用于比较被过滤特性的属性与其他属性或文字数据。

比较运算符

比较运算符用于指定特征的非空间属性的条件。以下内容 二进制比较运算符 可供选择:

  • <PropertyIsEqualTo>

  • <PropertyIsNotEqualTo>

  • <PropertyIsLessThan>

  • <PropertyIsLessThanOrEqualTo>

  • <PropertyIsGreaterThan>

  • <PropertyIsGreaterThanOrEqualTo>

这些运算符包含两个 filter expressions 比较一下。第一个操作数通常是 <PropertyName> ,但两个操作数都可以是任何表达式、函数或文本值。

二进制比较运算符可以包括 matchCase 具有值的属性 truefalse .如果此属性是 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> 元素允许指定数值、布尔值、字符串、日期或几何类型的常量值。

Previous: 规则