Filter Function Reference
This reference describes all filter functions that can be used in WFS/WMS filtering or in SLD expressions.
The list of functions available on a GeoServer instance can be determined by browsing to http://localhost:8080/geoserver/wfs?request=GetCapabilities and searching for ogc:Function_Names
(WFS 1.0.0), ogc:FunctionNames
(WFS 1.1.0), or fes:Functions
(WFS 2.0.0) in the returned XML. If a function is described in the Capabilities document but is not in this reference, then it might mean that the function cannot be used for filtering, or that it is new and has not been documented. Ask for details on the user mailing list.
Unless otherwise specified, none of the filter functions in this reference are understood natively by the data stores, and thus expressions using them will be evaluated in-memory.
Function argument type reference
Type | Description |
Double | Floating point number, 8 bytes, IEEE 754. Ranges from 4.94065645841246544e-324d to 1.79769313486231570e+308d |
Float | Floating point number, 4 bytes, IEEE 754. Ranges from 1.40129846432481707e-45 to 3.40282346638528860e+38. Smaller range and less accurate than Double. |
Integer | Integer number, ranging from -2,147,483,648 to 2,147,483,647 |
Long | Integer number, ranging from -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 |
Number | A numeric value of any type |
Object | A value of any type |
String | A sequence of characters |
Timestamp | Date and time information |
Comparison functions
Name | Arguments | Description |
between | num :Number, low :Number, high :Number |
returns true if low <= num <= high |
equalTo | a :Object, b :Object |
Can be used to compare for equality two numbers, two strings, two dates, and so on |
greaterEqualThan | x :Object, y :Object |
Returns true if x >= y . Parameters can be either numbers or strings (in the second case lexicographic ordering is used) |
greaterThan | x :Object, y :Object |
Returns true if x > y . Parameters can be either numbers or strings (in the second case lexicographic ordering is used) |
in2, in3, in4, in5, in6, in7, in8, in9, in10 | candidate :Object, v1 :Object, ..., v9 :Object |
Returns true if candidate is equal to one of the v1 , ..., v9 values. Use the function name matching the number of arguments specified. |
in | candidate :Object, v1 :Object, v2 :Object, ... |
Works exactly the same as the in2, ..., in10 functions described above, but takes any number of values as input. |
isLike | string :String, pattern :String |
Returns true if the string matches the specified pattern. For the full syntax of the pattern specification see the Java Pattern class javadocs |
isNull | obj :Object |
Returns true the passed parameter is null , false otherwise |
lessThan | x :Object, y :Object |
Returns true if x < y . Parameters can be either numbers or strings (in the second case lexicographic ordering is used |
lessEqualThan | x :Object, y :Object |
Returns true if x <= y . Parameters can be either numbers or strings (in the second case lexicographic ordering is used |
not | bool :Boolean |
Returns the negation of bool |
notEqualTo | x :Object, y :Object |
Returns true if x and y are equal, false otherwise |
Control functions
Name | Arguments | Description |
if_then_else | condition :Boolean, x :Object, y : Object |
Returns x if the condition is true, y otherwise |
Environment function
This function returns the value of environment variables defined in various contexts. WMS GetMap automatically defines some variables SLD rendering, while others can be provided using the env
request parameter. Example usage in e.g. a dynamic symbolizer:
${env('size', 20)}
Example usage in a default Symbolizer:
<PointSymbolizer uom="http://www.opengeospatial.org/se/units/metre">
<Graphic>
...
<Size>
<ogc:Function name="env">
<ogc:Literal>size</ogc:Literal>
<ogc:Literal>20</ogc:Literal>
</ogc:Function>
</Size>
</Graphic>
</PointSymbolizer>
- Name
-
Arguments
Description
- env
-
variable
:StringReturns the value of the environment variable
variable
.
Feature functions
Name | Arguments | Description |
id | feature :Feature |
returns the identifier of the feature |
PropertyExists | f :Feature, propertyName :String |
Returns true if f has a property named propertyName |
property | f :Feature, propertyName :String |
Returns the value of the property propertyName . Allows property names to be computed or specified by Variable substitution in SLD. |
mapGet | f :Feature, map :Map, key :String |
Get the value of the map map related to the specified key . |
Spatial Relationship functions
For more information about the precise meaning of the spatial relationships consult the OGC Simple Feature Specification for SQL
Name | Arguments | Description |
contains | a :Geometry, b :Geometry |
Returns true if the geometry a contains b |
crosses | a :Geometry, b :Geometry |
Returns true if a crosses b |
disjoint | a :Geometry, b :Geometry |
Returns true if the two geometries are disjoint, false otherwise |
equalsExact | a :Geometry, b :Geometry |
Returns true if the two geometries are exactly equal, same coordinates in the same order |
equalsExactTolerance | a :Geometry, b :Geometry, tol :Double |
Returns true if the two geometries are exactly equal, same coordinates in the same order, allowing for a tol distance in the corresponding points |
intersects | a :Geometry, b :Geometry |
Returns true if a intersects b |
isWithinDistance | a : Geometry, b :Geometry, distance : Double |
Returns true if the distance between a and b is less than distance (measured as an euclidean distance) |
overlaps | a : Geometry, b :Geometry |
Returns true a overlaps with b |
relate | a : Geometry, b :Geometry |
Returns the DE-9IM intersection matrix for a and b |
relatePattern | a : Geometry, b :Geometry, pattern :String |
Returns true if the DE-9IM intersection matrix for a and b matches the specified pattern |
touches | a : Geometry, b : Geometry |
Returns true if a touches b according to the SQL simple feature specification rules |
within | a : Geometry, b :Geometry |
Returns true is fully contained inside b |
Geometric functions
- Name
-
Arguments
Description
- area
-
geometry
:GeometryThe area of the specified geometry. Works in a Cartesian plane, the result will be in the same unit of measure as the geometry coordinates (which also means the results won't make any sense for geographic data)
- boundary
-
geometry
:GeometryReturns the boundary of a geometry
- boundaryDimension
-
geometry
:GeometryReturns the number of dimensions of the geometry boundary
- buffer
-
geometry
:Geometry,distance
:DoubleReturns the buffered area around the geometry using the specified distance
- bufferWithSegments
-
geometry
:Geometry,distance
:Double,segments
:IntegerReturns the buffered area around the geometry using the specified distance and using the specified number of segments to represent a quadrant of a circle.
- centroid
-
geometry
:GeometryReturns the centroid of the geometry. Can be often used as a label point for polygons, though there is no guarantee it will actually lie inside the geometry
- convexHull
-
geometry
:GeometryReturns the convex hull of the specified geometry
- difference
-
a
:Geometry,b
:GeometryReturns all the points that sit in
a
but not inb
- dimension
-
a
:GeometryReturns the dimension of the specified geometry
- distance
-
a
:Geometry,b
:GeometryReturns the euclidean distance between the two geometries
- endAngle
-
line
:LineStringReturns the angle of the end segment of the linestring
- endPoint
-
line
:LineStringReturns the end point of the linestring
- envelope
-
geometry
:geometryReturns the polygon representing the envelope of the geometry, that is, the minimum rectangle with sides parallels to the axis containing it
- exteriorRing
-
poly
:PolygonReturns the exterior ring of the specified polygon
- geometryType
-
geometry
:GeometryReturns the type of the geometry as a string. May be
Point
,MultiPoint
,LineString
,LinearRing
,MultiLineString
,Polygon
,MultiPolygon
,GeometryCollection
- geomFromWKT
-
wkt
:StringReturns the
Geometry
represented in the Well Known Text format contained in thewkt
parameter - geomLength
-
geometry
:GeometryReturns the length/perimeter of this geometry (computed in Cartesian space)
- getGeometryN
-
collection
:GeometryCollection,n
:IntegerReturns the n-th geometry inside the collection
- getX
-
p
:PointReturns the
x
ordinate ofp
- getY
-
p
:PointReturns the
y
ordinate ofp
- getZ
-
p
:PointReturns the
z
ordinate ofp
- interiorPoint
-
geometry
:GeometryReturns a point that is either interior to the geometry, when possible, or sitting on its boundary, otherwise
- interiorRingN
-
polyg
:Polygon,n
:IntegerReturns the n-th interior ring of the polygon
- intersection
-
a
:Geometry,b
:GeometryReturns the intersection between
a
andb
. The intersection result can be anything including a geometry collection of heterogeneous, if the result is empty, it will be represented by an empty collection. - isClosed
-
line
: LineStringReturns true if
line
forms a closed ring, that is, if the first and last coordinates are equal - isEmpty
-
geometry
:GeometryReturns true if the geometry does not contain any point (typical case, an empty geometry collection)
- isometric
-
geometry
:Geometry,extrusion
:DoubleReturns a MultiPolygon containing the isometric extrusions of all components of the input geometry. The extrusion distance is
extrusion
, expressed in the same unit as the geometry coordinates. Can be used to get a pseudo-3d effect in a map - isRing
-
line
:LineStringReturns true if the
line
is actually a closed ring (equivalent toisRing(line) and isSimple(line)
) - isSimple
-
line
:LineStringReturns true if the geometry self intersects only at boundary points
- isValid
-
geometry
: GeometryReturns true if the geometry is topologically valid (rings are closed, holes are inside the hull, and so on)
- numGeometries
-
collection
: GeometryCollectionReturns the number of geometries contained in the geometry collection
- numInteriorRing
-
poly
: PolygonReturns the number of interior rings (holes) inside the specified polygon
- numPoint
-
geometry
: GeometryReturns the number of points (vertexes) contained in
geometry
- offset
-
geometry
: Geometry,offsetX
:Double,offsetY
:DoubleOffsets all points in a geometry by the specified X and Y offsets. Offsets are working in the same coordinate system as the geometry own coordinates.
- pointN
-
geometry
: Geometry,n
:IntegerReturns the n-th point inside the specified geometry
- startAngle
-
line
: LineStringReturns the angle of the starting segment of the input linestring
- startPoint
-
line
: LineStringReturns the starting point of the input linestring
- symDifference
-
a
: Geometry,b
:GeometryReturns the symmetrical difference between
a
andb
(all points that are insidea
orb
, but not both) - toWKT
-
geometry
: GeometryReturns the WKT representation of
geometry
- union
-
a
: Geometry,b
:GeometryReturns the union of
a
andb
(the result may be a geometry collection) - vertices
-
geom
: GeometryReturns a multi-point made with all the vertices of
geom
Math functions
Name | Arguments | Description |
abs | value :Integer |
The absolute value of the specified Integer value |
abs_2 | value :Long |
The absolute value of the specified Long value |
abs_3 | value :Float |
The absolute value of the specified Float value |
abs_4 | value :Double |
The absolute value of the specified Double value |
acos | angle :Double |
Returns the arc cosine of an angle in radians, in the range of 0.0 through PI |
asin | angle :Double |
Returns the arc sine of an angle in radians, in the range of -PI / 2 through PI / 2 |
atan | angle :Double |
Returns the arc tangent of an angle in radians, in the range of -PI/2 through PI/2 |
atan2 | x :Double, y :Double |
Converts a rectangular coordinate (x, y) to polar (r, theta) and returns theta. |
ceil | x : Double |
Returns the smallest (closest to negative infinity) double value that is greater than or equal to x and is equal to a mathematical integer. |
cos | angle : Double |
Returns the cosine of an angle expressed in radians |
double2bool | x : Double |
Returns true if x is zero, false otherwise |
exp | x : Double |
Returns Euler's number e raised to the power of x |
floor | x : Double |
Returns the largest (closest to positive infinity) value that is less than or equal to x and is equal to a mathematical integer |
IEEERemainder | x : Double, y :Double |
Computes the remainder of x divided by y as prescribed by the IEEE 754 standard |
int2bbool | x : Integer |
Returns true if x is zero, false otherwise |
int2ddouble | x : Integer |
Converts x to a Double |
log | x : Integer |
Returns the natural logarithm (base e ) of x |
max, max_3, max_4 | x1 : Double, x2 :Double, x3 :Double, x4 :Double |
Returns the maximum between x1 , ..., x4 |
min, min_3, min_4 | x1 : Double, x2 :Double, x3 :Double, x4 :Double |
Returns the minimum between x1 , ..., x4 |
pi | None | Returns an approximation of pi , the ratio of the circumference of a circle to its diameter |
pow | base :Double, exponent :Double |
Returns the value of base raised to the power of exponent |
random | None | Returns a Double value with a positive sign, greater than or equal to 0.0 and less than 1.0 . Returned values are chosen pseudo-randomly with (approximately) uniform distribution from that range. |
rint | x :Double |
Returns the Double value that is closest in value to the argument and is equal to a mathematical integer. If two double values that are mathematical integers are equally close, the result is the integer value that is even. |
round_2 | x :Double |
Same as round , but returns a Long |
round | x :Double |
Returns the closest Integer to x . The result is rounded to an integer by adding ½, taking the floor of the result, and casting the result to type Integer. In other words, the result is equal to the value of the expression (int)floor(a + 0.5) |
roundDouble | x :Double |
Returns the closest Long to x |
sin | angle : Double |
Returns the sine of an angle expressed in radians |
tan | angle :Double |
Returns the trigonometric tangent of angle expressed in radians |
toDegrees | angle :Double |
Converts an angle expressed in radians into degrees |
toRadians | angle :Double |
Converts an angle expressed in radians into degrees |
String functions
String functions generally will accept any type of value for String
arguments. Non-string values will be converted into a string representation automatically.
- Name
-
Arguments
Description
- Concatenate
-
s1
:String,s2
:String, ...Concatenates any number of strings. Non-string arguments are allowed.
- strAbbreviate
-
sentence
:String,lower
:Integer,upper
:Integer,append
:StringAbbreviates the sentence at first space beyond
lower
(or atupper
if no space). Appendsappend
if string is abbreviated. - strCapitalize
-
sentence
:StringFully capitalizes the sentence. For example, "HoW aRe YOU?" will be turned into "How Are You?"
- strConcat
-
a
:String,b
:StringConcatenates the two strings into one
- strDefaultIfBlank
-
str
:String,default
:Stringreturns
default
ifstr
is empty, blank or null - strEndsWith
-
string
:String,suffix
:StringReturns true if
string
ends withsuffix
- strEqualsIgnoreCase
-
a
:String,b
:StringReturns true if the two strings are equal ignoring case considerations
- strIndexOf
-
string
:String,substring
:StringReturns the index within this string of the first occurrence of the specified substring, or
-1
if not found - strLastIndexOf
-
string
:String,substring
:StringReturns the index within this string of the last occurrence of the specified substring, or
-1
if not found - strLength
-
string
:StringReturns the string length
- strMatches
-
string
:String,pattern
:StringReturns true if the string matches the specified regular expression. For the full syntax of the pattern specification see the Java Pattern class javadocs
- strReplace
-
string
:String,pattern
:String,replacement
:String,global
: booleanReturns the string with the pattern replaced with the given replacement text. If the
global
argument istrue
then all occurrences of the pattern will be replaced, otherwise only the first. For the full syntax of the pattern specification see the Java Pattern class javadocs - strStartsWith
-
string
:String,prefix
:StringReturns true if
string
starts withprefix
- strStripAccents
-
string
:StringRemoves diacritics (\~= accents) from a string. The case will not be altered.
- strSubstring
-
string
:String,begin
:Integer,end
:IntegerReturns a new string that is a substring of this string. The substring begins at the specified
begin
and extends to the character at indexendIndex - 1
(indexes are zero-based). - strSubstringStart
-
string
:String,begin
:IntegerReturns a new string that is a substring of this string. The substring begins at the specified
begin
and extends to the last character of the string - strToLowerCase
-
string
:StringReturns the lower case version of the string
- strToUpperCase
-
string
:StringReturns the upper case version of the string
- strTrim
-
string
:StringReturns a copy of the string, with leading and trailing blank-space omitted
Parsing and formatting functions
Name | Arguments | Description |
dateFormat | format :String, date :Timestamp |
Formats the specified date according to the provided format. The format syntax can be found in the Java SimpleDateFormat javadocs |
dateParse | format :String, dateString :String |
Parses a date from a dateString formatted according to the format specification. The format syntax can be found in the Java SimpleDateFormat javadocs |
numberFormat | format :String, number :Double, locale :String |
Formats the number according to the specified format using the default locale or the one provided as an optional argument. The format syntax can be found in the Java DecimalFormat javadocs |
parseBoolean | boolean :String |
Parses a string into a boolean. The empty string, f , 0.0 and 0 are considered false, everything else is considered true. |
parseDouble | number :String |
Parses a string into a double. The number can be expressed in normal or scientific form. |
parseInt | number :String |
Parses a string into an integer. |
parseLong | number :String |
Parses a string into a long integer |
Temporal functions
Name | Arguments | Description |
dateDifference | a :Date, b :Date, timeUnits :String |
Computes the difference between two date (as a-b) and return a result in a specific time units. timeUnits is optional, representing the desired time units result. Default as milliseconds. Possible values are s (seconds), m (minutes), h (hours), d (days). |
now | None | Returns the current time as a Date |
Transformation functions
Transformation functions transform values from one data space into another. These functions provide a concise way to compute styling parameters from feature attribute values. See also Styling using Transformation Functions.
- Name
-
Arguments
Description
- Recode
-
lookupValue
:Object,data
:Object,value
:Object, ...Transforms a
lookupValue
from a set of discrete data values into another set of values. Any number ofdata
/value
pairs may be specified. - Categorize
-
lookupValue
:Object,value
:Object,threshold
:Object, ...value
:Object,belongsTo
: StringTransforms a continuous-valued attribute value into a set of discrete values.
lookupValue
andvalue
must be an orderable type (typically numeric). The initialvalue
is required. Any number of additionalthreshold
/value
pairs may be specified.belongsTo
is optional, with the valuesucceeding
orpreceding
. It defines which interval to use when the lookup value equals a threshold value. - Interpolate
-
lookupValue
:Numeric,data
:Numeric,value
:Numeric or #RRGGBB, ...mode
:String,method
:StringTransforms a continuous-valued attribute value into another continuous range of values. Any number of
data
/value
pairs may be specified.mode
is optional, with the valuelinear
,cosine
orcubic
. It defines the interpolation algorithm to use.method
is optional, with the valuenumeric
orcolor
. It defines whether the target values are numeric or RGB color specifications.