筛选器编码引用¶
这是一个参考 筛选器编码 在geoserver中实现的语言。过滤器编码语言使用基于XML的语法。它由 OGC Filter Encoding standard .
过滤器用于从评估要素或其他对象的上下文中选择要素或其他对象。它们在功能上与SQL“where”子句相似。使用指定的筛选器 条件 .
条件¶
谓语¶
谓词是布尔值表达式,用于计算值之间的关系。谓词是通过使用 比较运算符 或A 空间运算符 .这些运算符用于将要筛选的功能的属性与其他功能属性或文字数据进行比较。
比较运算符¶
比较运算符用于指定非空间属性的条件。
二进制比较运算符¶
这个 二进制比较运算符 是:
<PropertyIsEqualTo>
<PropertyIsNotEqualTo>
<PropertyIsLessThan>
<PropertyIsLessThanOrEqualTo>
<PropertyIsGreaterThan>
<PropertyIsGreaterThanOrEqualTo>
它们包含以下元素:
Element |
必修的? |
Description |
是的 |
要比较的第一个值。通常是 |
|
是的 |
要比较的第二个值 |
二进制比较运算符元素可以包括可选的 matchCase
属性,值为 true
或 false
.如果此属性是 true
(默认),字符串比较区分大小写。如果属性是 false
字符串比较不检查大小写。
PropertyIsLike运算符¶
这个 <PropertyIsLike>
运算符将字符串属性值与文本匹配 模式 .它包含以下元素:
Element |
必修的? |
Description |
|
是的 |
包含指定要测试的属性名称的字符串 |
|
是的 |
包含要匹配的模式字符串 |
模式由一系列规则字符和三个特殊模式字符指定。模式字符由以下内容定义 必修的 的属性 <PropertyIsLike>
元素:
wildCard
指定与任何零个或多个字符串序列匹配的模式字符
singleChar
指定与任何单个字符串匹配的模式字符
escapeChar
指定可用于转义模式字符的转义字符
属性为空运算符¶
这个 <PropertyIsNull>
运算符测试属性值是否为空。它包含以下元素:
Element |
必修的? |
Description |
|
是的 |
包含指定要测试的属性名称的字符串 |
属性介于运算符之间¶
这个 <PropertyIsBetween>
运算符测试表达式值是否位于由下限和上限(包括上限)给定的范围内。它包含以下元素:
Element |
必修的? |
Description |
是的 |
要测试的值 |
|
|
是的 |
包含一个 表情 给出范围的下限 |
|
是的 |
包含一个 表情 给出范围的上界 |
空间运算符¶
空间操作符用于指定特征几何属性的条件。以下空间运算符可用:
拓扑算子¶
这些运算符使用标准OGC简单特征谓词测试拓扑空间关系:
<Intersects>
-测试两个几何图形是否相交
<Disjoint>
-测试两个几何图形是否不相交(不交互)
<Contains>
-测试几何图形是否包含另一个几何图形
<Within>
-测试几何图形是否在另一个几何图形中
<Touches>
-测试两个几何图形是否接触
<Crosses>
-测试两个几何图形是否交叉
<Overlaps>
-测试两个几何图形是否重叠
<Equals>
-测试两个几何图形是否拓扑相等
其中包含以下元素:
Element |
必修的? |
Description |
|
是的 |
包含一个字符串,指定要测试的几何值属性的名称。 |
GML几何 |
是的 |
指定要测试的几何体的gml文本值 |
距离运算符¶
这些运算符测试几何特性和几何文字之间的距离关系:
<DWithin>
<Beyond>
它们包含以下元素:
Element |
必修的? |
Description |
|
是的 |
包含指定要测试的属性名称的字符串。如果省略,则 默认几何属性 假设。 |
GML几何 |
是的 |
指定要计算距离的几何图形的文字值。这可以是几何图形,也可以是GML3格式的信封。 |
|
是的 |
包含距离公差的数值。元素可以包括可选的 |
边界框运算符¶
这个 <BBOX>
运算符测试几何值属性是否与固定边界框相交。它包含以下元素:
Element |
必修的? |
Description |
|
不 |
包含指定要测试的属性名称的字符串。如果省略,则 默认几何属性 假设。 |
|
是的 |
指定要测试的边界框的gml box文本值 |
实例¶
此过滤器选择与点(1,1)相交的几何图形的特征。
<Intersects>
<PropertyName>GEOMETRY</PropertyName>
<gml:Point>
<gml:coordinates>1 1</gml:coordinates>
</gml:Point>
</Intersects>
此过滤器选择几何图形与多边形重叠的要素。
<Overlaps>
<PropertyName>Geometry</PropertyName>
<gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#63266405">
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:posList> ... </gml:posList>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</Overlaps>
此过滤器选择具有与地理范围相交的几何图形的要素 [-10,0 : 10,10] .
<BBOX>
<PropertyName>GEOMETRY</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>
</BBOX>
逻辑运算符¶
逻辑运算符用于指定 条件 元素(可以是 谓语 元素或其他 逻辑运算符 )。它们可以嵌套到任何深度。
以下逻辑运算符可用:
<And>
-计算操作数的逻辑连接
<Or>
-计算操作数的逻辑析取
的内容 <And>
和 <Or>
两个操作数是由 条件 元素。
<Not>
-计算操作数的逻辑求反
的内容 <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>
-将第一个操作数除以第二个操作数
每个算术运算符元素包含两个 表情 提供操作数的元素。
功能¶
这个 <Function>
元素指定要计算的筛选函数。所需的 name
属性提供函数名。元素包含一个零或更多的序列 表情 提供函数参数值的元素。
见 过滤函数引用 有关geoserver提供的函数的详细信息。
属性值¶
这个 <PropertyName>
元素引用功能属性的值。它包含一个 一串 或 xpath表达式 指定属性名称。
字面意义的¶
这个 <Literal>
元素指定一个常量值。它包含以下类型之一的数据:
Type |
Description |
数字的 |
表示数值(整数或十进制)的字符串。 |
布尔 |
布尔值 |
弦 |
字符串值。XML不兼容的文本可以通过使用 字符实体 或 |
日期 |
表示日期的字符串。 |
几何图形 |
以GML3格式指定几何图形的元素。 |
WFS 2.0命名空间¶
WFS 2.0不依赖于任何一个GML版本,因此需要GML的显式名称空间和模式位置。在GET请求中,可以将命名空间放在筛选器元素(即, filter=
下面的块,URL编码):
<fes:Filter
xmlns:fes="http://www.opengis.net/fes/2.0"
xmlns:gml="http://www.opengis.net/gml/3.2">
<fes:Not>
<fes:Disjoint>
<fes:ValueReference>sf:the_geom</fes:ValueReference>
<gml:Polygon
gml:id="polygon.1"
srsName='http://www.opengis.net/def/crs/EPSG/0/26713'>
<gml:exterior>
<gml:LinearRing>
<gml:posList>590431 4915204 590430
4915205 590429 4915204 590430
4915203 590431 4915204</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</fes:Disjoint>
</fes:Not>
</fes:Filter>