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实现的语法
过滤器编码参考
这是GeoServer中实现的过滤编码语言的参考。过滤编码语言使用基于XML的语法。它由OGC滤波器编码标准定义。
过滤器用于从评估它们的上下文中选择要素或其他对象。它们在功能上与SQL“WHERE”子句类似。使用条件指定过滤器。
条件
谓词
谓词是计算值之间关系的布尔值表达式。谓词通过使用比较运算符或空间运算符来指定。这些运算符用于比较要过滤的要素的属性与其他要素属性或文字数据。
比较运算符
比较运算符用于指定非空间属性的条件。
二进制比较运算符
该二进制比较操作符是:
· <PropertyIsEqualTo>
· <PropertyIsNotEqualTo>
· <PropertyIsLessThan>
· <PropertyIsLessThanOrEqualTo>
· <PropertyIsGreaterThan>
· <PropertyIsGreaterThanOrEqualTo>
它们包含以下要素:
元件 |
需要? |
描述 |
是 |
第一个要比较的值。经常是<PropertyName>。 |
|
是 |
第二个值进行比较 |
二进制比较运算符元素可以包含一个可选matchCase属性,其值为true或false。如果此属性是true(默认值),则字符串比较区分大小写。如果属性是false字符串比较,则不检查大小写。
PropertyIsLike操作
该<PropertyIsLike>运算符将字符串属性值与文本模式进行匹配。它包含以下要素:
元件 |
需要? |
描述 |
<PropertyName> |
是 |
包含指定要测试的属性名称的字符串 |
<Literal> |
是 |
包含要匹配的模式字符串 |
该模式由一系列常规字符和三个特殊模式字符指定。模式字符由元素的以下必需属性定义<PropertyIsLike>:
· wildCard 指定匹配零个或多个字符串字符的任何序列的模式字符
· singleChar 指定匹配任何单个字符串字符的模式字符
· escapeChar 指定可用于转义模式字符的转义字符
PropertyIsNull操作符
该<PropertyIsNull>运营商测试是否一个属性值为null。它包含元素:
元件 |
需要? |
描述 |
<PropertyName> |
是 |
包含一个字符串,指定要测试的属性的名称 |
PropertyIsBetweeen操作符
所述<PropertyIsBetween>操作者测试是否表达值位于由上限和下限(含)给定的范围内。它包含以下要素:
元件 |
需要? |
描述 |
是 |
要测试的值 |
|
<LowerBoundary> |
是 |
包含给出范围下限的表达式 |
<UpperBoundary> |
是 |
包含给出范围上限的表达式 |
空间操作符
空间运算符用于指定要素几何属性的条件。以下空间操作符可用:
拓扑操作符
这些运算符使用标准的OGC Simple Features谓词测试拓扑空间关系:
· <Intersects> – 测试两个几何是否相交
· <Disjoint> – 测试两个几何是否不相交
· <Contains> – 测试几何是否包含另一个几何
· <Within> – 测试几何是否在另一个之内
· <Touches> – 测试两个几何体是否接触
· <Crosses> – 测试两个几何图形是否交叉
· <Overlaps> – 测试两个几何图形是否重叠
· <Equals> – 测试两个几何是否在拓扑上相等
这些包含以下要素:
元件 |
需要? |
描述 |
<PropertyName> |
是 |
包含一个字符串,指定要测试的几何值属性的名称。 |
GML几何 |
是 |
GML文字值,用于指定要测试的几何图形 |
距离运算符
这些运算符测试几何属性和几何文字之间的距离关系:
· <DWithin>
· <Beyond>
它们包含以下要素:
元件 |
需要? |
描述 |
<PropertyName> |
是 |
包含一个字符串,指定要测试的属性的名称。如果省略,则假定默认几何属性。 |
GML几何 |
是 |
一个文字值,用于指定计算距离的几何图形。这可能是GML 3格式的几何图形或信封 |
<Distance> |
是 |
包含距离容差的数值。该元素可能包含一个可选units属性。 |
边界框运算符
该<BBOX>运营商测试一个几何值属性是否相交的固定边框。它包含以下要素:
元件 |
需要? |
描述 |
<PropertyName> |
没有 |
包含一个字符串,指定要测试的属性的名称。如果省略,则假定默认几何属性。 |
<gml:Box> |
是 |
指定要对其进行测试的边界框的GML Box文字值 |
示例
· 该过滤器选择几何与点(1,1)相交的要素。
<Intersects>
<PropertyName> GEOMETRY </ PropertyName>
<gml:Point>
<gml:coordinates> 1 1 </ gml:coordinates>
</ gml:Point>
</ Intersects>
· 此过滤器选择几何图形与多边形重叠的要素。
<Overlaps>
<PropertyName>几何</ 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>
逻辑运算符
逻辑运算符用于指定Condition元素的逻辑组合(可以是Predicate元素或其他逻辑运算符)。它们可以嵌套到任何深度。
以下逻辑运算符可用:
· <And> – 计算操作数的逻辑连接点
· <Or> – 计算操作数的逻辑分离
内容为<And>和条件元素<Or>给出的两个操作数。
· <Not> – 计算操作数的逻辑否定
内容<Not>是Condition元素给出的单个操作数。
示例
· 此过滤器用于<And>组合比较谓词和空间谓词:
<
Properties
> <PropertyName> <PropertyName> NAME </ PropertyName>
<Literal> New York </ Literal>
</ PropertyIsEqualTo>
<Intersects>
<PropertyName> GEOMETRY </ PropertyName>
<Literal>
<gml:Point>
<gml:coordinate > 1 1 </ gml:coordinates>
</ gml:Point>
</ Literal>
</ Intersects>
</ And>
表达
过滤器表达式指定常量,变量或计算的数据值。表达式由以下元素之一形成(其中一些包含子表达式,这意味着表达式可以具有任意深度):
算术运算符
该算术运算单元计算的数值运算。
· <Add> – 增加了两个操作数
· <Sub> – 从第一个操作数中减去第二个操作数
· <Mul> – 将两个操作数相乘
· <Div> – 将第一个操作数除以第二个操作数
每个算术运算符元素都包含两个提供操作数的表达式元素。
函数
的<Function>元素指定要被评估的滤波器功能。必需的name属性给出了函数名称。该元素包含一系列零个或多个 表达式元素,用于提供函数参数的值。
有关GeoServer提供的功能的详细信息,请参阅过滤器功能参考。
属性值
的<PropertyName>元件是指一种特征属性的值。它包含一个字符串或一个指定属性名称的XPath表达式。
文字
该<Literal>元素指定的恒定值。它包含以下类型之一的数据:
类型 |
描述 |
数字 |
表示数值(整数或小数)的字符串。 |
布尔 |
trueor 的布尔值false。 |
串 |
一个字符串值。可以通过使用字符实体或<![CDATA[ ]]>分隔符来包含XML不兼容的文本 。 |
日期 |
代表日期的字符串。 |
几何 |
以GML3格式指定几何图元的元素。 |
WFS 2.0名称空间
WFS 2.0不依赖任何一个GML版本,因此需要GML的显式名称空间和schemaLocation。在GET请求中,可以将名称空间放置在Filter元素上(即,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>
ECQL参考
本部分提供ECQL语言语法的参考。完整的语言语法记录在GeoTools ECQL BNF定义中
语法注释
下面的部分描述了主要的语言结构。每个构造都列出了它的所有语法选项。每个选项被定义为一系列其他结构,或者按照其自身递归的方式定义。
· 显示ECQL语言一部分的符号。所有其他符号都是语法描述的一部分。codefont
· ECQL关键字不区分大小写。
· 竖线符号‘ | ‘表示可以选择关键字。
· 括号“ [ … ] ”划定语法是可选的。
· 大括号‘ { … } ‘分隔可能出现零次或多次的语法。
条件
过滤条件是单个谓词或其他条件的逻辑组合。
句法 |
描述 |
单一谓词表达式 |
|
条件的结合或分离 |
|
NOT 条件 |
否定条件 |
(| [ 条件 ] |) |
包围(或[控制评估订单 |
谓词
谓词是指定值之间关系的布尔值表达式。
句法 |
描述 |
比较操作 |
|
测试一个值是在一个范围内还是在一个范围之外(包括) |
|
表达 [ NOT ] LIKE | ILIKE 像模式 |
简单的模式匹配。 like-pattern使用%角色作为任意数量角色的通配符。 ILIKE不区分大小写的匹配。 |
测试表达式值是否在一组值中(不) |
|
测试特征ID值是否在给定集合中。ID值是整数或字符串文字 |
|
表达式 IS [ NOT ] NULL |
测试值是否(非)为空 |
属性 EXISTS | DOES-NOT-EXIST |
测试featuretype是否(不)具有给定的属性 |
INCLUDE | EXCLUDE |
始终包括(排除)应用此过滤器的功能 |
时间谓词
时间谓词指定时间表达式与时间或时间段的关系。
句法 |
描述 |
测试时间值是否在某个时间点之前 |
|
测试时间值是在一段时间之前还是在一段时间内 |
|
测试时间值是否在一段时间内 |
|
测试时间值是在一段时间内还是之后 |
|
测试时间值是否在某个时间点之后 |
空间谓词
空间谓词指定几何值之间的关系。拓扑空间谓词(INTERSECTS,DISJOINT,CONTAINS,WITHIN,TOUCHES CROSSES,OVERLAPS和RELATE)以在OGC描述的DE-9IM模型来定义的简单特征为SQL规范。
句法 |
描述 |
测试两个几何是否相交。与之相反的DISJOINT |
|
测试两个几何是否不相交。与之相反的INTERSECTS |
|
测试第一个几何拓扑是否包含第二个几何。与之相反的 WITHIN |
|
测试第一个几何图形是否在第二个拓扑图中。与之相反的CONTAINS |
|
测试两个几何体是否接触。如果几何图形至少有一个共同点,但它们的内部不相交,则会触摸几何图形。 |
|
测试两个几何图形是否交叉。如果几何图形有一些但不是全部的内部点,那么几何图形就会交叉 |
|
测试两个几何图形是否重叠。几何图形重叠如果它们具有相同的尺寸,至少有一个点不被另一个共享,并且两个几何图形的内部交点具有与几何图形本身相同的尺寸 |
|
测试两个几何是否在拓扑上相等 |
|
测试几何是否具有由DE-9IM矩阵模式指定的空间关系。DE-9IM模式是使用字符指定的长度为9的字符串*TF012。例:’1*T***T**’ |
|
测试两个几何体之间的距离是否不超过指定的距离。 距离是距离容差的无符号数值。 单元是下列之一feet,meters,,,statute |
|
类似于DWITHIN但测试两个几何体之间的距离是否大于给定距离。 |
|
测试几何是否与由其最小值和最大值X和Y值指定的边界框相交。可选CRS是一个包含SRS代码的字符串(例如,’EPSG:1234’默认情况下使用查询图层的CRS) |
表达
表达式指定属性,文字或计算值。值的类型由表达式的性质决定。使用标准的PEMDAS 评估顺序。
句法 |
描述 |
要素属性的名称 |
|
字面值 |
|
算术运算 |
|
函数 ( [ Expression { , Expression }]) |
通过评估 具有零个或多个参数的过滤函数计算出的值。 |
(| [ 表达式 ] |) |
包围(或[控制评估订单 |
属性
属性名称表示要素属性的值。
· 简单的属性名称是字母和数字的序列,
· 用双引号引用的属性名称可以是任何字符序列。
文字
文字指定各种类型的常量值。
类型 |
描述 |
数 |
整数或浮点数。科学记数法得到支持。 |
布尔 |
TRUE 要么 FALSE |
串 |
由单引号分隔的字符串文字。要在字符串中包含单引号,请使用两个单引号:” |
几何 |
WKT格式的几何图形。WKT在OGC 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 |
时间周期
以几种不同的格式指定一段时间。
句法 |
描述 |
开始和结束时间指定的时段 |
|
期限由给定时间之前的持续时间指定 |
|
按给定时间之后的持续时间指定的时间段 |
过滤功能
OGC过滤器编码规范提供了过滤器功能的通用概念。过滤器函数是具有任意数量参数的命名函数,它们可以用于过滤器表达式中以执行特定的计算。这为定义过滤器提供了更丰富的表现力。过滤器函数可以用XML过滤器编码语言和文本ECQL语言使用适合于该语言的语法。
GeoServer提供了许多不同类型的过滤功能,涵盖了广泛的功能,包括数学,字符串格式化和几何操作。过滤器功能参考中提供了完整的列表。
注意
过滤器编码规范为过滤器函数提供了一种标准语法,但不要求特定的一组函数。服务器可以自由地提供他们想要的任何功能,所以某些函数表达式可能只适用于特定的软件。
示例
以下示例显示了如何使用过滤器功能。第一个显示使用该geometryType功能的增强型WFS过滤。第二部分展示了如何使用SLD中的函数来获得改进的标签渲染。
WFS过滤
假设我们有一个要素类型,其几何字段geom可以包含任何种类的几何。对于某个应用程序,我们只需要提取其几何结构是简单点或多点的特征。这可以使用名为GeoServer特定的过滤器函数完成geometryType。这是包含过滤功能的WFS请求:
<wfs:GetFeature service = “WFS” version = “1.0.0”
outputFormat = “GML2”
xmlns:wfs = “http://www.opengis.net/wfs”
xmlns:ogc = “http://www.opengis .net / ogc“
xmlns:xsi = ”http://www.w3.org/2001/XMLSchema-instance“
xsi:schemaLocation = ”http://www.opengis.net/wfs
http://schemas.opengis。 net / wfs / 1.0.0 / WFS-basic.xsd“ >
<wfs:Query typeName = ”sf:archsites“ >
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:Function name = ”geometryType“ >
<ogc:PropertyName> geom </ ogc:PropertyName>
</ ogc:Function>
<ogc:Literal> Point </ ogc:Literal>
</ ogc:PropertyIsEqualTo>
</ ogc:Filter>
</ wfs:Query>
</ wfs:GetFeature>
WFS 2.0名称空间
WFS 2.0不依赖任何一个GML版本,因此需要GML的显式名称空间和schemaLocation。此POST示例使用空间查询选择要素。请注意命名空间前缀的完整声明。在GET请求中,名称空间可以放在Filter元素上。
<?xml version =“1.0”encoding =“UTF-8”?>
<wfs:GetFeature service = “WFS” version = “2.0.0”
xmlns:wfs = “http://www.opengis.net/wfs/ 2.0“
xmlns:fes = ”http://www.opengis.net/fes/2.0“
xmlns:gml = ”http://www.opengis.net/gml/3.2“
xmlns:sf = ”http:// www .openplans.org / spearfish“
xmlns:xsi = ”http://www.w3.org/2001/XMLSchema-instance“
xsi:schemaLocation = ”http://www.opengis.net/wfs/2.0
http:// schemas.opengis.net/wfs/2.0/wfs.xsd
http://www.opengis.net/gml/3.2
http:// schemas。opengis.net/gml/3.2.1/gml.xsd“ >
<wfs:QuerytypeNames = “SF:bugsites” >
<FES:过滤器>
<FES:未>
<FES:不相交>
<FES:ValueReference> SF:the_geom </ FES:ValueReference>
< - GML:ID是强制性的上GML 3.2几何元素 - >
<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>
</ wfs:Query >
</ wfs:GetFeature>
SLD格式化
我们想在等高线图中显示高程标签。海拔高度存储为浮点值,因此原始数值可能会显示不需要的小数位(例如“150.0”或“149.999999”)。我们希望确保数字适当舍入(即显示“150”)。要实现此目的,numberFormat可以在SLD标签内容表达式中使用滤镜功能:
...
<TextSymbolizer>
<Label>
<ogc:Function name = “numberFormat” >
<ogc:Literal> ## </ ogc:Literal>
<ogc:PropertyName> ELEVATION </ ogc:PropertyName>
</ ogc:Function>
</标签>
...
</ TextSymbolizer>
...
性能影响
在SLD符号表达式中使用过滤函数不会产生很大的开销,除非函数执行的计算量非常大。
但是,在某些情况下,使用WFS筛选或SLD规则表达式中的函数可能会导致性能问题。这通常是因为特定的过滤器函数不被本机数据存储过滤器编码器识别,因此GeoServer必须执行内存中的函数。
例如,像大多数数据存储一样,过滤器会将过滤器分成两个独立的部分。边界框过滤器将被编码为主要过滤器并在SQL中执行,而函数将在内存中执行来自主过滤器的结果。BBOX(geom,-10,30,20,45)and
geometryType(geom)
=
‘Point’geometryType
过滤函数参考
该参考描述了可用于WFS / WMS过滤或SLD表达式中的所有过滤器功能。
可以通过浏览到http:// localhost:8080/ geoserver / wfs?request = GetCapabilities 并在ogc:FunctionNames返回的XML中搜索来确定GeoServer实例上可用的函数列表。如果功能描述在功能文档中,但不在此参考文献中,则可能意味着该功能不能用于过滤,或者它是新的并且没有记录。询问用户邮件列表中的详细信息。
除非另有说明,否则本参考文献中的所有过滤功能都不会被数据存储本机理解,因此使用它们的表达式将在内存中进行评估。
函数参数类型参考
类型 |
描述 |
双 |
浮点数,8字节,IEEE 754.范围从4.94065645841246544e-324d到1.79769313486231570e + 308d |
浮动 |
浮点数,4字节,IEEE 754.范围从1.40129846432481707e-45到3.40282346638528860e + 38。范围较小,精度低于Double。 |
整数 |
整数,范围从-2,147,483,648到2,147,483,647 |
长 |
整数,范围从-9,223,372,036,854,775,808到+9,223,372,036,854,775,807 |
数 |
任何类型的数值 |
目的 |
任何类型的值 |
串 |
字符序列 |
时间戳 |
日期和时间信息 |
比较函数
名称 |
参数 |
描述 |
之间 |
num:号码,low:号码,high:号码 |
如果low<= num<=,则返回truehigh |
等于 |
a:对象,b:对象 |
可用于比较两个数字,两个字符串,两个日期等等 |
greaterEqualThan |
x:对象,y:对象 |
如果x> =,则返回true y。参数可以是数字或字符串(在第二种情况下,使用词典排序) |
比…更棒 |
x:对象,y:对象 |
如果x>,则返回true y。参数可以是数字或字符串(在第二种情况下,使用词典排序) |
in2,in3,in4,in5,in6,in7,in8,in9,in10 |
candidate:Object,v1:Object,…,v9:Object |
如果candidate等于其中一个v1,… v9值,则返回true 。使用匹配指定参数数目的函数名称。 |
在 |
candidate:Object,v1:Object,v2:Object,… |
与上面介绍的in2,…,in10函数完全相同,但是可以将任意数量的值作为输入。 |
就好像 |
string:String,pattern:String |
如果字符串匹配指定的模式,则返回true。有关模式规范的完整语法,请参阅Java Pattern类javadocs |
一片空白 |
obj:目的 |
返回true传递的参数是null,否则返回false |
少于 |
x:对象,y:对象 |
如果x<,则返回true y。参数可以是数字或字符串(在第二种情况下,使用词典排序 |
lessEqualThan |
x:对象,y:对象 |
如果x<=,则返回true y。参数可以是数字或字符串(在第二种情况下,使用词典排序 |
不 |
bool:布尔 |
返回的否定 bool |
notEqual |
x:对象,y:对象 |
如果x和y相等则返回true ,否则返回false |
控制功能
名称 |
参数 |
描述 |
if_then_else |
condition:布尔值,x:对象,y:对象 |
x如果条件为真,y则返回; 否则返回 |
环境功能
该函数返回在各种上下文中定义的环境变量的值。定义环境变量的上下文包括 SLD渲染 和WMS Animator。
名称 |
参数 |
描述 |
ENV |
variable:串 |
返回环境变量的值variable。 |
特征函数
名称 |
参数 |
描述 |
ID |
feature:特征 |
返回该特征的标识符 |
PropertyExists |
f:功能,propertyName:字符串 |
true如果f具有名为的属性,则返回propertyName |
属性 |
f:功能,propertyName:字符串 |
空间关系函数
有关空间关系的精确含义的更多信息,请参阅OGC简单特征规范SQL
名称 |
参数 |
描述 |
包含 |
a:几何,b:几何 |
如果几何体a包含,则返回trueb |
十字架 |
a:几何,b:几何 |
如果a十字架返回trueb |
不相交的 |
a:几何,b:几何 |
如果两个几何不相交,则返回true,否则返回false |
equalsExact |
a:几何,b:几何 |
如果两个几何图形完全相同,则返回true,相同坐标的顺序相同 |
equalsExactTolerance |
a:几何,b:几何,tol:双 |
如果两个几何图形完全相等,则返回true,相同坐标的顺序相同,允许tol相应点的距离 |
相交 |
a:几何,b:几何 |
如果a相交,则返回trueb |
isWithinDistance |
a:几何,b:几何,distance:双 |
如果与之间的距离小于(测量为欧氏距离)a,b则返回truedistance |
重叠 |
a:几何,b:几何 |
返回真正的a重叠b |
涉及 |
a:几何,b:几何 |
返回DE-9IM交集矩阵a和b |
relatePattern |
a:几何,b:几何,pattern:字符串 |
如果DE-9IM交叉点矩阵for a并b匹配指定的模式,则返回true |
触摸 |
a:几何,b:几何 |
如果根据SQL简单功能规范规则进行a触摸b,则返回true |
中 |
a:几何,b:几何 |
返回true被完全包含在里面 b |
几何函数
名称 |
参数 |
描述 |
区 |
geometry:几何 |
指定几何体的面积。在笛卡尔平面中工作时,结果将与几何坐标具有相同的度量单位(这也意味着结果对地理数据没有任何意义) |
边界 |
geometry:几何 |
返回几何的边界 |
boundaryDimension |
geometry:几何 |
返回几何边界的维数 |
缓冲 |
geometry:几何,distance:双 |
使用指定的距离返回几何图形周围的缓冲区域 |
bufferWithSegments |
geometry:几何,distance:双精度,segments:整数 |
使用指定的距离返回几何图形周围的缓冲区域,并使用指定数量的线段表示圆的象限。 |
形心 |
geometry:几何 |
返回几何体的质心。可以经常用作多边形的标签点,但不能保证它实际位于几何体内 |
凸形轮廓 |
geometry:几何 |
返回指定几何体的凸包 |
区别 |
a:几何,b:几何 |
返回所有坐下a但不在的点b |
尺寸 |
a:几何 |
返回指定几何体的尺寸 |
距离 |
a:几何,b:几何 |
返回两个几何体之间的欧氏距离 |
endAngle |
line:线段形式 |
返回线串的结束段的角度 |
端点 |
line:线段形式 |
返回线串的结束点 |
信封 |
geometry:几何 |
返回表示几何的包络的多边形,即具有与包含它的轴平行的边的最小矩形 |
exteriorRing |
poly:多边形 |
返回指定多边形的外部环 |
geometryType |
geometry:几何 |
以字符串形式返回几何图形的类型。也许是Point,MultiPoint,LineString,LinearRing,MultiLineString,Polygon,MultiPolygon,GeometryCollection |
geomFromWKT |
wkt:串 |
返回参数中Geometry包含的已知文本格式的表示形式wkt |
geomLength |
geometry:几何 |
返回此几何体的长度/周长(在笛卡尔空间中计算) |
getGeometryN |
collection:GeometryCollection,:n整数 |
返回集合中的第n个几何图形 |
的getX |
p:点 |
返回的x纵坐标p |
的getY |
p:点 |
返回的y纵坐标p |
盖茨 |
p:点 |
返回的z纵坐标p |
内点 |
geometry:几何 |
返回几何体内部的点,如果可能,或者坐在其边界上,否则返回 |
interiorRingN |
polyg:多边形,n:整数 |
返回多边形的第n个内环 |
路口 |
a:几何,b:几何 |
返回之间的交叉a和b。交集结果可以是任何东西,包括异构的几何集合,如果结果为空,它将由空集合表示。 |
关闭了 |
line:LineString |
如果line形成一个闭环,也就是说,如果第一个和最后一个坐标相等,则返回true |
是空的 |
geometry:几何 |
如果几何体不包含任何点(通常情况下为空几何集合),则返回true |
等距 |
geometry:几何,extrusion:双 |
返回一个MultiPolygon,其中包含输入几何图元所有组件的等距突出部分。挤出距离extrusion以与几何坐标相同的单位表示。可以用来在地图中获得伪3D效果 |
isRing |
line:线段形式 |
如果line实际上是一个闭环(等于),则返回trueisRing(line) |
isSimple |
line:线段形式 |
如果几何图形只在边界点相交,则返回true |
已验证 |
geometry:几何 |
如果几何拓扑有效,则返回true(环关闭,孔位于船体内,等等) |
numGeometries |
collection:GeometryCollection |
返回几何集合中包含的几何图形的数量 |
numInteriorRing |
poly:多边形 |
返回指定多边形内的内部环(孔)的数量 |
numPoint |
geometry:几何 |
返回包含在中的点(顶点)的数量 geometry |
抵消 |
geometry:几何,offsetX:双,offsetY:双 |
用指定的X和Y偏移量偏移几何图形中的所有点。偏移量与几何自身坐标在同一坐标系中工作。 |
焦点N |
geometry:几何,n:整数 |
返回指定几何体内的第n个点 |
由startAngle |
line:LineString |
返回输入线串的起始段的角度 |
起点 |
line:LineString |
返回输入线串的起始点 |
symDifference |
a:几何,b:几何 |
返回a和之间的对称差异b(内部a或所有点b,但不是两者) |
toWKT |
geometry:几何 |
返回WKT表示 geometry |
联盟 |
a:几何,b:几何 |
返回的工会a和b(结果可能是一个几何集合) |
顶点 |
geom:几何 |
返回由所有顶点组成的多点 geom |
数学函数
名称 |
参数 |
描述 |
ABS |
value:整数 |
指定的Integer的绝对值 value |
abs_2 |
value:长 |
指定Long的绝对值 value |
abs_3 |
value:浮动 |
指定Float的绝对值 value |
abs_4 |
value:双 |
指定Double的绝对值 value |
ACOS |
angle:双 |
angle以弧度为单位返回弧的余弦值,范围为0.0到PI |
ASIN |
angle:双 |
返回angle以弧度表示的弧的正弦值,范围为through-PI |
晒黑 |
angle:双 |
以弧度返回角度的反正切,范围为-PI/2throughPI/2 |
ATAN2 |
x:双,y:双 |
将直角坐标转换为极坐标(r,theta)并返回theta。(x, |
小区 |
x:双 |
返回大于或等于x且等于数学整数的最小(最接近负无穷大)double值。 |
COS |
angle:双 |
返回angle以弧度表示的余弦 |
double2bool |
x:双 |
返回trueif x为零,false否则返回 |
EXP |
x:双 |
返回欧拉数e增加的力量x |
地板 |
x:双 |
返回小于或等于x且等于数学整数的最大(最接近正无穷大)值 |
IEEERemainder |
x:双,y:双 |
计算IEEE 754标准规定的x除以余数y |
int2bbool |
x: 整数 |
如果x为零则返回true ,否则返回false |
int2ddouble |
x: 整数 |
转换x为双精度 |
日志 |
x: 整数 |
返回的自然对数(基数e)x |
max,max_3,max_4 |
x1:双倍,x2:双倍,x3:双倍,x4:双倍 |
返回最大值x1,…,x4 |
min,min_3,min_4 |
x1:双倍,x2:双倍,x3:双倍,x4:双倍 |
返回最小值x1,…,x4 |
PI |
没有 |
返回pi一个圆的周长与其直径的比值的近似值 |
POW |
base:双,exponent:双 |
返回base提升到权力的值exponent |
随机 |
没有 |
返回带有正号,大于或等于0.0和小于的Double值1.0。返回值是从该范围内以近似均匀分布伪随机选择的。 |
RINT |
x:双 |
返回与参数值最接近的Double值,等于一个数学整数。如果两个数学整数的double值相等,则结果是整数值是偶数。 |
round_2 |
x:双 |
相同round,但返回Long |
回合 |
x:双 |
返回最接近的整数x。结果通过加1/2来舍入到一个整数,取结果的底部,并将结果转换为Integer类型。换句话说,结果等于表达式的值(int)floor(a |
roundDouble |
x:双 |
返回距离最近的Long x |
罪 |
angle:双 |
返回angle以弧度表示的正弦值 |
黄褐色 |
angle:双 |
返回angle以弧度表示的三角正切 |
toDegrees |
angle:双 |
将以弧度表示的角度转换为度数 |
toRadians |
angle:双 |
将以弧度表示的角度转换为度数 |
字符串函数
字符串函数通常会接受任何类型的String参数值。非字符串值将自动转换为字符串表示形式。
名称 |
参数 |
描述 |
CONCATENATE |
s1:String,s2:String,… |
连接任意数量的字符串。非字符串参数是允许的。 |
strCapitalize |
sentence:串 |
充分利用句子。例如,“你是谁?”将变成“你好吗?” |
strConcat |
a:String,b:String |
将两个字符串连接成一个 |
strEndsWith |
string:String,suffix:String |
如果string以。结尾,则返回truesuffix |
strEqualsIgnoreCase |
a:String,b:String |
如果两个字符串相等,则忽略大小写注意事项返回true |
strIndexOf |
string:String,substring:String |
返回指定子字符串第一次出现的此字符串中的索引,或者-1如果未找到 |
strLastIndexOf |
string:String,substring:String |
返回指定子字符串最后一次出现的字符串中的索引,或者-1如果找不到 |
strLength |
string:串 |
返回字符串长度 |
strMatches |
string:String,pattern:String |
如果字符串与指定的正则表达式匹配,则返回true。有关模式规范的完整语法,请参阅Java Pattern类javadocs |
strReplace |
string:字符串,pattern:字符串,replacement:字符串,global:布尔值 |
返回替换为给定替换文本的模式的字符串。如果global参数是true那么所有的模式将被替换,否则只有第一个。有关模式规范的完整语法,请参阅Java Pattern类javadocs |
strStartsWith |
string:String,prefix:String |
如果string以。开头,则返回trueprefix |
strSubstring |
string:字符串,begin:整数,end整数 |
返回一个新字符串,该字符串是此字符串的子字符串。子字符串从指定的位置开始begin并延伸到索引处的字符处(索引从零开始)。endIndex |
strSubstringStart |
string:字符串,begin:整数 |
返回一个新字符串,该字符串是此字符串的子字符串。子字符串从指定的位置开始begin并延伸到字符串的最后一个字符 |
strToLowerCase |
string:串 |
返回字符串的小写版本 |
strToUpperCase |
string:串 |
返回字符串的大写版本 |
strTrim |
string:串 |
返回字符串的副本,省略前导和尾随空白 |
解析和格式化函数
名称 |
参数 |
描述 |
日期格式 |
format:字符串,date:时间戳 |
根据提供的格式格式化指定的日期。格式语法可以在Java SimpleDateFormat javadocs中找到 |
dateParse |
format:String,dateString:String |
dateString根据format规范解析格式化的日期。格式语法可以在Java SimpleDateFormat javadocs中找到 |
NUMBERFORMAT |
format:字符串,number:双 |
根据指定的格式编号format。格式语法可以在Java DecimalFormat javadocs中找到 |
parseBoolean |
boolean:串 |
将字符串解析为布尔值。空字符串,f,0.0并且0被认为是假的,否则一切都被认为是真实的。 |
parseDouble |
number:串 |
将字符串解析为双精度型。数字可以用正常或科学的形式表示。 |
parseInt函数 |
number:串 |
将一个字符串解析为一个整数。 |
parseLong |
number:串 |
将字符串分析为长整数 |
转换函数
转换函数将值从一个数据空间转换为另一个 这些函数提供了从特征属性值计算样式参数的简洁方法。另请参见使用转换函数的样式。
名称 |
参数 |
描述 |
重新编码 |
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颜色规格。 |
转载自:https://blog.csdn.net/neimeng0/article/details/79914880