支持的过滤器语言
GeoServer中的数据过滤基于OGC过滤器编码规范中的概念。
GeoServer接受以两种不同语言编码的过滤器:过滤器编码和通用查询语言。
过滤器编码
该过滤器编码语言是用来定义过滤器的基于XML的方法。XML过滤器可用于GeoServer的以下位置:
· 在WMS GetMap请求中,使用filter参数
· 在WFS GetFeature请求中,使用filter参数
· 在SLD规则中的Filter元素中
过滤器编码语言由OGC过滤器编码标准定义:
· 过滤编码1.0用于WFS 1.0和SLD 1.0
· 过滤编码1.1在WFS 1.1中使用
· 过滤编码2.0用于WFS 2.0
CQL /ECQL
CQL(通用查询语言)是为OGC目录规范创建的纯文本语言。GeoServer已将其调整为易于使用的过滤机制。GeoServer实际上实现了一个名为ECQL(Extended CQL)的功能更强大的扩展,它允许表达OGC Filter1.1可以编码的所有过滤器。ECQL在GeoServer的许多地方都被接受:
· 在WMS GetMap请求中,使用cql_filter参数
· 在WFS GetFeature请求中,使用cql_filter参数
· 在SLD动态符号器中
该ECQL参考描述ECQL语言的特点。的CQL和ECQL教程显示定义过滤器的例子。
CQL和ECQL语言的定义如下:
· OpenGIS Catalog Services Specification包含CQL的标准定义
· ECQL语法是定义GeoTools ECQL实现的语法
OGC滤波器编码标准定义。
过滤器用于从评估它们的上下文中选择要素或其他对象。它们在功能上与SQL“WHERE”子句类似。使用条件指定过滤器。
表达是第一个要比较的值。经常是<PropertyName>。
表达是第二个值进行比较
二进制比较运算符元素可以包含一个可选matchCase属性,其值为true或false。如果此属性是true(默认值),则字符串比较区分大小写。如果属性是false字符串比较,则不检查大小写。
PropertyIsLike操作
该<PropertyIsLike>运算符将字符串属性值与文本模式进行匹配。它包含以下要素:
元件需要?描述
<PropertyName>是包含指定要测试的属性名称的字符串
<Literal>是包含要匹配的模式字符串
该模式由一系列常规字符和三个特殊模式字符指定。模式字符由元素的以下必需属性定义<PropertyIsLike>:
· wildCard 指定匹配零个或多个字符串字符的任何序列的模式字符
· singleChar 指定匹配任何单个字符串字符的模式字符
· escapeChar 指定可用于转义模式字符的转义字符
PropertyIsNull操作符
该<PropertyIsNull>运营商测试是否一个属性值为null。它包含元素:
元件需要?描述
<PropertyName>是包含一个字符串,指定要测试的属性的名称
PropertyIsBetweeen操作符
所述<PropertyIsBetween>操作者测试是否表达值位于由上限和下限(含)给定的范围内。它包含以下要素:
元件需要?描述
表达是要测试的值
<LowerBoundary>是包含给出范围下限的表达式
<UpperBoundary>是包含给出范围上限的表达式
Condition元素的逻辑组合(可以是Predicate元素或其他逻辑运算符)。它们可以嵌套到任何深度。
以下逻辑运算符可用:
· <And>- 计算操作数的逻辑连接点
· <Or>- 计算操作数的逻辑分离
内容为<And>和条件元素<Or>给出的两个操作数。
· <Not>- 计算操作数的逻辑否定
内容<Not>是Condition元素给出的单个操作数。
表达式元素。
表达式元素,用于提供函数参数的值。
有关GeoServer提供的功能的详细信息,请参阅过滤器功能参考。
谓词单一谓词表达式
NOT条件否定条件
(| [条件] |)包围(或[控制评估订单
表达式[ NOT] BETWEEN表达式AND表达式测试一个值是在一个范围内还是在一个范围之外(包括)
表达[ NOT]LIKE | ILIKE像模式简单的模式匹配。like-pattern使用%角色作为任意数量角色的通配符。 ILIKE不区分大小写的匹配。
表达式[ NOT] 表达式 { 表达式 }IN ( , )测试表达式值是否在一组值中(不)
表达文字(Literal)IN ( , )测试特征ID值是否在给定集合中。ID值是整数或字符串文字
表达式IS[ NOT]NULL测试值是否(非)为空
属性EXISTS|DOES-NOT-EXIST测试featuretype是否(不)具有给定的属性
INCLUDE | EXCLUDE始终包括(排除)应用此过滤器的功能
表达时间段BEFORE OR DURING测试时间值是在一段时间之前还是在一段时间内
表达时间段DURING OR AFTER测试时间值是在一段时间内还是之后
简单特征为SQL规范。
句法描述
INTERSECTS(表达式,表达)测试两个几何是否相交。与之相反的DISJOINT
DISJOINT(表达式,表达)测试两个几何是否不相交。与之相反的INTERSECTS
CONTAINS(表达式,表达)测试第一个几何拓扑是否包含第二个几何。与之相反的 WITHIN
WITHIN(表达式,表达)测试第一个几何图形是否在第二个拓扑图中。与之相反的CONTAINS
TOUCHES(表达式,表达)测试两个几何体是否接触。如果几何图形至少有一个共同点,但它们的内部不相交,则会触摸几何图形。
CROSSES(表达式,表达)测试两个几何图形是否交叉。如果几何图形有一些但不是全部的内部点,那么几何图形就会交叉
OVERLAPS(表达式,表达)测试两个几何图形是否重叠。几何图形重叠如果它们具有相同的尺寸,至少有一个点不被另一个共享,并且两个几何图形的内部交点具有与几何图形本身相同的尺寸
RELATE(表达,的表达,模式)测试几何是否具有由DE-9IM矩阵模式指定的空间关系。DE-9IM模式是使用字符指定的长度为9的字符串*TF012。例:'1*T***T**'
DWITHIN(表达式,表达,距离,单位)测试两个几何体之间的距离是否不超过指定的距离。距离是距离容差的无符号数值。单元是下列之一feet,meters,,,statute milesnautical mileskilometers
BEYOND(表达式,表达,距离,单位)类似于DWITHIN但测试两个几何体之间的距离是否大于给定距离。
BBOX (表达,数,数,数,数[,CRS])测试几何是否与由其最小值和最大值X和Y值指定的边界框相交。可选CRS是一个包含SRS代码的字符串(例如,'EPSG:1234'默认情况下使用查询图层的CRS)
PEMDAS评估顺序。
句法描述
属性要素属性的名称
文字字面值
函数( [Expression{ ,Expression}])通过评估 具有零个或多个参数的过滤函数计算出的值。
(| [表达式] |)包围(或[控制评估订单
Simple规范中定义。所有标准的几何类型的支持:POINT,LINESTRING,POLYGON,MULTIPOINT,MULTILINESTRING,MULTIPOLYGON,GEOMETRYCOLLECTION。语法x1 x2 y1 y2也支持自定义类型的Envelope 。ENVELOPE ( )
时间格式中的UTC日期/时间值yyyy-mm-hhThh:mm:ss。秒值可能有一个小数部分。时区可以被指定为Z或+/-hh:mm。例:2006-11-30T00:30:00Z
持续时间持续时间指定为P[y Ym Md D] T[h Hm Ms S]。持续时间可以通过仅包括所需的年,月,日,小时,分钟和秒分量来指定为任何期望的精度。例如: P1Y2M,P4Y2M20D, P4Y2M1DT20H3M36S
过滤器功能参考中提供了完整的列表。
注意
过滤器编码规范为过滤器函数提供了一种标准语法,但不要求特定的一组函数。服务器可以自由地提供他们想要的任何功能,所以某些函数表达式可能只适用于特定的软件。
http:// localhost:8080/ geoserver / wfs?request = GetCapabilities并在ogc:FunctionNames返回的XML中搜索来确定GeoServer实例上可用的函数列表。如果功能描述在功能文档中,但不在此参考文献中,则可能意味着该功能不能用于过滤,或者它是新的并且没有记录。询问用户邮件列表中的详细信息。
除非另有说明,否则本参考文献中的所有过滤功能都不会被数据存储本机理解,因此使用它们的表达式将在内存中进行评估。
一片空白obj:目的返回true传递的参数是null,否则返回false
少于x:对象,y:对象如果x<,则返回true y。参数可以是数字或字符串(在第二种情况下,使用词典排序
lessEqualThanx:对象,y:对象如果x<=,则返回true y。参数可以是数字或字符串(在第二种情况下,使用词典排序
不bool:布尔返回的否定 bool
notEqualx:对象,y:对象如果x和y相等则返回true ,否则返回false
SLD渲染和WMS Animator。
名称参数描述
ENVvariable:串返回环境变量的值variable。
OGC简单特征规范SQL
名称参数描述
包含a:几何,b:几何如果几何体a包含,则返回trueb
十字架a:几何,b:几何如果a十字架返回trueb
不相交的a:几何,b:几何如果两个几何不相交,则返回true,否则返回false
equalsExacta:几何,b:几何如果两个几何图形完全相同,则返回true,相同坐标的顺序相同
equalsExactTolerancea:几何,b:几何,tol:双如果两个几何图形完全相等,则返回true,相同坐标的顺序相同,允许tol相应点的距离
相交a:几何,b:几何如果a相交,则返回trueb
isWithinDistancea:几何,b:几何,distance:双如果与之间的距离小于(测量为欧氏距离)a,b则返回truedistance
重叠a:几何,b:几何返回真正的a重叠b
涉及a:几何,b:几何返回DE-9IM交集矩阵a和b
relatePatterna:几何,b:几何,pattern:字符串如果DE-9IM交叉点矩阵for a并b匹配指定的模式,则返回true
触摸a:几何,b:几何如果根据SQL简单功能规范规则进行a触摸b,则返回true
中a:几何,b:几何返回true被完全包含在里面 b
strReplacestring:字符串,pattern:字符串,replacement:字符串,global:布尔值返回替换为给定替换文本的模式的字符串。如果global参数是true那么所有的模式将被替换,否则只有第一个。有关模式规范的完整语法,请参阅Java Pattern类javadocs
strStartsWithstring:String,prefix:String如果string以。开头,则返回trueprefix
strSubstringstring:字符串,begin:整数,end整数返回一个新字符串,该字符串是此字符串的子字符串。子字符串从指定的位置开始begin并延伸到索引处的字符处(索引从零开始)。endIndex - 1
strSubstringStartstring:字符串,begin:整数返回一个新字符串,该字符串是此字符串的子字符串。子字符串从指定的位置开始begin并延伸到字符串的最后一个字符
strToLowerCasestring:串返回字符串的小写版本
strToUpperCasestring:串返回字符串的大写版本
strTrimstring:串返回字符串的副本,省略前导和尾随空白
Java SimpleDateFormat javadocs中找到
dateParseformat:String,dateString:StringdateString根据format规范解析格式化的日期。格式语法可以在Java SimpleDateFormat javadocs中找到
NUMBERFORMATformat:字符串,number:双根据指定的格式编号format。格式语法可以在Java DecimalFormat javadocs中找到
parseBooleanboolean:串将字符串解析为布尔值。空字符串,f,0.0并且0被认为是假的,否则一切都被认为是真实的。
parseDoublenumber:串将字符串解析为双精度型。数字可以用正常或科学的形式表示。
parseInt函数number:串将一个字符串解析为一个整数。
parseLongnumber:串将字符串分析为长整数
使用转换函数的样式。
名称参数描述
重新编码lookupValue:目的,
data:对象, value:对象,...
将一lookupValue组离散数据值转换为另一组值。可以指定任意数量的data/ value对。
分类lookupValue:对象,value:对象,
threshold:对象,...value:对象,
belongsTo :字符串
将连续值属性值转换为一组离散值。 lookupValue并且value必须是可订购类型(通常是数字)。最初value是必需的。可以指定任意数量的附加threshold/ value配对。 belongsTo是可选的,具有值succeeding或preceding。它定义了当查找值等于阈值时使用哪个间隔。
插lookupValue:数字,
data:数字, value:数字或#RRGGBB,...
mode:String,method:String
将连续值属性值转换为另一个连续的值范围。可以指定任意数量的data/ value对。 mode是可选的,值linear是cosine或cubic。它定义要使用的插值算法。 method是可选的,具有值numeric或color。它定义目标值是数字还是RGB颜色规格。