0
点赞
收藏
分享

微信扫一扫

GeoServer 属性查询和空间查询支持 CQL / ECQL过滤器语言

支持的过滤器语言

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”子句类似。使用条件指定过滤器。

Predicate元素,或逻辑运算符的条件组合。

表达是第一个要比较的值。经常是<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提供的功能的详细信息,请参阅过滤器功能参考。

ECQL BNF定义中

谓词单一谓词表达式

条件AND | OR条件条件的结合或分离

NOT条件否定条件

(| [条件] |)包围(或[控制评估订单

表达式= | <>| <| <=| >| >=表达比较操作

表达式NOTBETWEEN表达式AND表达式测试一个值是在一个范围内还是在一个范围之外(包括)

表达NOT]LIKE | ILIKE像模式简单的模式匹配。like-pattern使用%角色作为任意数量角色的通配符。 ILIKE不区分大小写的匹配。

表达式NOT表达式 { 表达式 }IN ( , )测试表达式值是否在一组值中(不)

表达文字LiteralIN ( , )测试特征ID值是否在给定集合中。ID值是整数或字符串文字

表达式ISNOT]NULL测试值是否(非)为空

属性EXISTS|DOES-NOT-EXIST测试featuretype是否(不)具有给定的属性

INCLUDE | EXCLUDE始终包括(排除)应用此过滤器的功能

表达BEFORE时间测试时间值是否在某个时间点之前

表达时间段BEFORE OR DURING测试时间值是在一段时间之前还是在一段时间内

表达DURING时间段测试时间值是否在一段时间内

表达时间段DURING OR AFTER测试时间值是在一段时间内还是之后

表达AFTER时间测试时间值是否在某个时间点之后

简单特征为SQL规范。

句法描述

INTERSECTS(表达式,表达)测试两个几何是否相交。与之相反的DISJOINT

DISJOINT(表达式,表达)测试两个几何是否不相交。与之相反的INTERSECTS

CONTAINS(表达式,表达)测试第一个几何拓扑是否包含第二个几何。与之相反的 WITHIN

WITHIN(表达式,表达)测试第一个几何图形是否在第二个拓扑图中。与之相反的CONTAINS

TOUCHES(表达式,表达)测试两个几何体是否接触。如果几何图形至少有一个共同点,但它们的内部不相交,则会触摸几何图形。

CROSSES(表达式,表达)测试两个几何图形是否交叉。如果几何图形有一些但不是全部的内部点,那么几何图形就会交叉

OVERLAPS(表达式,表达)测试两个几何图形是否重叠。几何图形重叠如果它们具有相同的尺寸,至少有一个点不被另一个共享,并且两个几何图形的内部交点具有与几何图形本身相同的尺寸

EQUALS(表达式,表达)测试两个几何是否在拓扑上相等

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 DT[h Hm Ms S]。持续时间可以通过仅包括所需的年,月,日,小时,分钟和秒分量来指定为任何期望的精度。例如: P1Y2M,P4Y2M20D, P4Y2M1DT20H3M36S

时间/时间开始和结束时间指定的时段

持续/时间期限由给定时间之前的持续时间指定

时间/期限按给定时间之后的持续时间指定的时间段

过滤器功能参考中提供了完整的列表。

注意


过滤器编码规范为过滤器函数提供了一种标准语法,但不要求特定的一组函数。服务器可以自由地提供他们想要的任何功能,所以某些函数表达式可能只适用于特定的软件。

http:// localhost:8080/ geoserver / wfs?request = GetCapabilities并在ogc:FunctionNames返回的XML中搜索来确定GeoServer实例上可用的函数列表。如果功能描述在功能文档中,但不在此参考文献中,则可能意味着该功能不能用于过滤,或者它是新的并且没有记录。询问用户邮件列表中的详细信息。

除非另有说明,否则本参考文献中的所有过滤功能都不会被数据存储本机理解,因此使用它们的表达式将在内存中进行评估。

Java Pattern类javadocs

一片空白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。

SLD中变量替换来计算或指定属性名称 。

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

Java Pattern类javadocs

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颜色规格。

举报

相关推荐

0 条评论