GeoServer 屬性查詢和空間查詢支持 CQL / ECQL過濾器語言

支持的過濾器語言

GeoServer中的數(shù)據(jù)過濾基于OGC過濾器編碼規(guī)范中的概念。

GeoServer接受以兩種不同語言編碼的過濾器過濾器編碼通用查詢語言。

過濾器編碼

過濾器編碼語言是用來定義過濾器的基于XML的方法。XML過濾器可用于GeoServer的以下位置:

·????????在WMS?GetMap請求中,使用filter參數(shù)

·????????在WFS?GetFeature請求中,使用filter參數(shù)

·????????在SLD規(guī)則中的Filter元素中

過濾器編碼語言由OGC過濾器編碼標(biāo)準(zhǔn)定義:

·????????過濾編碼1.0用于WFS 1.0和SLD 1.0

·????????過濾編碼1.1在WFS 1.1中使用

·????????過濾編碼2.0用于WFS 2.0

CQL /ECQL?

CQL(通用查詢語言)是為OGC目錄規(guī)范創(chuàng)建的純文本語言。GeoServer已將其調(diào)整為易于使用的過濾機(jī)制。GeoServer實際上實現(xiàn)了一個名為ECQL(Extended CQL)的功能更強(qiáng)大的擴(kuò)展,它允許表達(dá)OGC Filter1.1可以編碼的所有過濾器。ECQL在GeoServer的許多地方都被接受:

·????????在WMS?GetMap請求中,使用cql_filter參數(shù)

·????????在WFS?GetFeature請求中,使用cql_filter參數(shù)

·????????在SLD動態(tài)符號器中

ECQL參考描述ECQL語言的特點。的CQL和ECQL教程顯示定義過濾器的例子。

CQL和ECQL語言的定義如下:

·????????OpenGIS Catalog Services Specification包含CQL的標(biāo)準(zhǔn)定義

·????????ECQL語法是定義GeoTools ECQL實現(xiàn)的語法

?

過濾器編碼參考

這是GeoServer中實現(xiàn)的過濾編碼語言的參考。過濾編碼語言使用基于XML的語法。它由OGC濾波器編碼標(biāo)準(zhǔn)定義。

過濾器用于從評估它們的上下文中選擇要素或其他對象。它們在功能上與SQL“WHERE”子句類似。使用條件指定過濾器。

條件

條件是單個Predicate元素,或邏輯運算符的條件組合。

謂詞

謂詞是計算值之間關(guān)系的布爾值表達(dá)式。謂詞通過使用比較運算符空間運算符來指定。這些運算符用于比較要過濾的要素的屬性與其他要素屬性或文字?jǐn)?shù)據(jù)。

比較運算符

比較運算符用于指定非空間屬性的條件。

二進(jìn)制比較運算符

二進(jìn)制比較操作符是:

·????????<PropertyIsEqualTo>

·????????<PropertyIsNotEqualTo>

·????????<PropertyIsLessThan>

·????????<PropertyIsLessThanOrEqualTo>

·????????<PropertyIsGreaterThan>

·????????<PropertyIsGreaterThanOrEqualTo>

它們包含以下要素:

元件需要?描述

表達(dá)是第一個要比較的值。經(jīng)常是<PropertyName>。

表達(dá)是第二個值進(jìn)行比較

二進(jìn)制比較運算符元素可以包含一個可選matchCase屬性,其值為true或false。如果此屬性是true(默認(rèn)值),則字符串比較區(qū)分大小寫。如果屬性是false字符串比較,則不檢查大小寫。

PropertyIsLike操作

該<PropertyIsLike>運算符將字符串屬性值與文本模式進(jìn)行匹配。它包含以下要素:

元件需要?描述

<PropertyName>是包含指定要測試的屬性名稱的字符串

<Literal>是包含要匹配的模式字符串

該模式由一系列常規(guī)字符和三個特殊模式字符指定。模式字符由元素的以下必需屬性定義<PropertyIsLike>:

·????????wildCard?指定匹配零個或多個字符串字符的任何序列的模式字符

·????????singleChar?指定匹配任何單個字符串字符的模式字符

·????????escapeChar?指定可用于轉(zhuǎn)義模式字符的轉(zhuǎn)義字符

PropertyIsNull操作符

該<PropertyIsNull>運營商測試是否一個屬性值為null。它包含元素:

元件需要?描述

<PropertyName>是包含一個字符串,指定要測試的屬性的名稱

PropertyIsBetweeen操作符

所述<PropertyIsBetween>操作者測試是否表達(dá)值位于由上限和下限(含)給定的范圍內(nèi)。它包含以下要素:

元件需要?描述

表達(dá)是要測試的值

<LowerBoundary>是包含給出范圍下限的表達(dá)式

<UpperBoundary>是包含給出范圍上限的表達(dá)式

空間操作符

空間運算符用于指定要素幾何屬性的條件。以下空間操作符可用:

拓?fù)洳僮鞣?/p>

這些運算符使用標(biāo)準(zhǔn)的OGC Simple Features謂詞測試拓?fù)淇臻g關(guān)系:

·????????<Intersects>-?測試兩個幾何是否相交

·????????<Disjoint>-?測試兩個幾何是否不相交

·????????<Contains>-?測試幾何是否包含另一個幾何

·????????<Within>-?測試幾何是否在另一個之內(nèi)

·????????<Touches>-?測試兩個幾何體是否接觸

·????????<Crosses>-?測試兩個幾何圖形是否交叉

·????????<Overlaps>-?測試兩個幾何圖形是否重疊

·????????<Equals>-?測試兩個幾何是否在拓?fù)渖舷嗟?/p>

這些包含以下要素:

元件需要?描述

<PropertyName>是包含一個字符串,指定要測試的幾何值屬性的名稱。

GML幾何是GML文字值,用于指定要測試的幾何圖形

距離運算符

這些運算符測試幾何屬性和幾何文字之間的距離關(guān)系:

·????????<DWithin>

·????????<Beyond>

它們包含以下要素:

元件需要?描述

<PropertyName>是包含一個字符串,指定要測試的屬性的名稱。如果省略,則假定默認(rèn)幾何屬性。

GML幾何是一個文字值,用于指定計算距離的幾何圖形。這可能是GML 3格式的幾何圖形或信封

<Distance>是包含距離容差的數(shù)值。該元素可能包含一個可選units屬性。

邊界框運算符

該<BBOX>運營商測試一個幾何值屬性是否相交的固定邊框。它包含以下要素:

元件需要?描述

<PropertyName>沒有包含一個字符串,指定要測試的屬性的名稱。如果省略,則假定默認(rèn)幾何屬性。

<gml:Box>是指定要對其進(jìn)行測試的邊界框的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>-?計算操作數(shù)的邏輯連接點

·????????<Or>-?計算操作數(shù)的邏輯分離

內(nèi)容為<And>和件元素<Or>給出的兩個操作數(shù)。

·????????<Not>-?計算操作數(shù)的邏輯否定

內(nèi)容<Not>是Condition元素給出的單個操作數(shù)。

示例

·????????此過濾器用于<And>組合比較謂詞和空間謂詞:

<

??Properties

?????> 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>

表達(dá)

過濾器表達(dá)式指定常量,變量或計算的數(shù)據(jù)值。表達(dá)式由以下元素之一形成(其中一些包含子表達(dá)式,這意味著表達(dá)式可以具有任意深度):

算術(shù)運算符

算術(shù)運算單元計算的數(shù)值運算。

·????????<Add>-?增加了兩個操作數(shù)

·????????<Sub>-?從第一個操作數(shù)中減去第二個操作數(shù)

·????????<Mul>-?將兩個操作數(shù)相乘

·????????<Div>-?將第一個操作數(shù)除以第二個操作數(shù)

每個算術(shù)運算符元素都包含兩個提供操作數(shù)的表達(dá)式元素。

函數(shù)

的<Function>元素指定要被評估的濾波器功能。必需的name屬性給出了函數(shù)名稱。該元素包含一系列零個或多個表達(dá)式元素,用于提供函數(shù)參數(shù)的值。

有關(guān)GeoServer提供的功能的詳細(xì)信息,請參閱過濾器功能參考。

屬性值

的<PropertyName>元件是指一種特征屬性的值。它包含一個字符串或一個指定屬性名稱的XPath表達(dá)式

文字

該<Literal>元素指定的恒定值。它包含以下類型之一的數(shù)據(jù):

類型描述

數(shù)字表示數(shù)值(整數(shù)或小數(shù))的字符串。

布爾trueor?的布爾值false。

串一個字符串值??梢酝ㄟ^使用字符實體或分隔符來包含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語言語法的參考。完整的語言語法記錄在GeoToolsECQL BNF定義中

語法注釋

下面的部分描述了主要的語言結(jié)構(gòu)。每個構(gòu)造都列出了它的所有語法選項。每個選項被定義為一系列其他結(jié)構(gòu),或者按照其自身遞歸的方式定義。

·????????顯示ECQL語言一部分的符號。所有其他符號都是語法描述的一部分。codefont

·????????ECQL關(guān)鍵字不區(qū)分大小寫。

·????????豎線符號'?|?'表示可以選擇關(guān)鍵字。

·????????括號“?[?...?]?”劃定語法是可選的。

·????????大括號'?{?...?}?'分隔可能出現(xiàn)零次或多次的語法。

條件

過濾條件是單個謂詞或其他條件的邏輯組合。

句法描述

謂詞單一謂詞表達(dá)式

條件AND?|?OR條件條件的結(jié)合或分離

NOT條件否定條件

(|?[條件]?|)包圍(或[控制評估訂單

謂詞

謂詞是指定值之間關(guān)系的布爾值表達(dá)式。

句法描述

表達(dá)式=?|?<>|?<|?<=|?>|?>=表達(dá)比較操作

表達(dá)式[?NOT]?BETWEEN表達(dá)式AND表達(dá)式測試一個值是在一個范圍內(nèi)還是在一個范圍之外(包括)

表達(dá)[?NOT]LIKE?|?ILIKE像模式簡單的模式匹配。like-pattern使用%角色作為任意數(shù)量角色的通配符。?ILIKE不區(qū)分大小寫的匹配。

表達(dá)式[?NOT]?表達(dá)式?{?表達(dá)式?}IN?(?,?)測試表達(dá)式值是否在一組值中(不)

表達(dá)文字LiteralIN?(?,?)測試特征ID值是否在給定集合中。ID值是整數(shù)或字符串文字

表達(dá)式IS[?NOT]NULL測試值是否(非)為空

屬性EXISTS|DOES-NOT-EXIST測試featuretype是否(不)具有給定的屬性

INCLUDE?|?EXCLUDE始終包括(排除)應(yīng)用此過濾器的功能

時間謂詞

時間謂詞指定時間表達(dá)式與時間或時間段的關(guān)系。

句法描述

表達(dá)BEFORE時間測試時間值是否在某個時間點之前

表達(dá)時間段BEFORE?OR?DURING測試時間值是在一段時間之前還是在一段時間內(nèi)

表達(dá)DURING時間段測試時間值是否在一段時間內(nèi)

表達(dá)時間段DURING?OR?AFTER測試時間值是在一段時間內(nèi)還是之后

表達(dá)AFTER時間測試時間值是否在某個時間點之后

空間謂詞

空間謂詞指定幾何值之間的關(guān)系。拓?fù)淇臻g謂詞(INTERSECTS,DISJOINT,CONTAINS,WITHIN,TOUCHES?CROSSES,OVERLAPS和RELATE)以在OGC描述的DE-9IM模型來定義的簡單特征為SQL規(guī)范。

句法描述

INTERSECTS(表達(dá)式,表達(dá))測試兩個幾何是否相交。與之相反的DISJOINT

DISJOINT(表達(dá)式,表達(dá))測試兩個幾何是否不相交。與之相反的INTERSECTS

CONTAINS(表達(dá)式,表達(dá))測試第一個幾何拓?fù)涫欠癜诙€幾何。與之相反的?WITHIN

WITHIN(表達(dá)式,表達(dá))測試第一個幾何圖形是否在第二個拓?fù)鋱D中。與之相反的CONTAINS

TOUCHES(表達(dá)式,表達(dá))測試兩個幾何體是否接觸。如果幾何圖形至少有一個共同點,但它們的內(nèi)部不相交,則會觸摸幾何圖形。

CROSSES(表達(dá)式,表達(dá))測試兩個幾何圖形是否交叉。如果幾何圖形有一些但不是全部的內(nèi)部點,那么幾何圖形就會交叉

OVERLAPS(表達(dá)式,表達(dá))測試兩個幾何圖形是否重疊。幾何圖形重疊如果它們具有相同的尺寸,至少有一個點不被另一個共享,并且兩個幾何圖形的內(nèi)部交點具有與幾何圖形本身相同的尺寸

EQUALS(表達(dá)式,表達(dá))測試兩個幾何是否在拓?fù)渖舷嗟?/p>

RELATE(表達(dá),的表達(dá),模式)測試幾何是否具有由DE-9IM矩陣模式指定的空間關(guān)系。DE-9IM模式是使用字符指定的長度為9的字符串*TF012。例:'1*T***T**'

DWITHIN(表達(dá)式,表達(dá),距離,單位)測試兩個幾何體之間的距離是否不超過指定的距離。距離是距離容差的無符號數(shù)值。單元是下列之一feet,meters,,,statute?milesnautical?mileskilometers

BEYOND(表達(dá)式,表達(dá),距離,單位)類似于DWITHIN但測試兩個幾何體之間的距離是否大于給定距離。

BBOX?(表達(dá),數(shù),數(shù),數(shù),數(shù)[,CRS])測試幾何是否與由其最小值和最大值X和Y值指定的邊界框相交??蛇xCRS是一個包含SRS代碼的字符串(例如,'EPSG:1234'默認(rèn)情況下使用查詢圖層的CRS)

表達(dá)

表達(dá)式指定屬性,文字或計算值。值的類型由表達(dá)式的性質(zhì)決定。使用標(biāo)準(zhǔn)的PEMDAS評估順序。

句法描述

屬性要素屬性的名稱

文字字面值

表達(dá)式+?|?-|?*|?/表達(dá)算術(shù)運算

函數(shù)(?[Expression{?,Expression}])通過評估?具有零個或多個參數(shù)的過濾函數(shù)計算出的值。

(|?[表達(dá)式]?|)包圍(或[控制評估訂單

屬性

屬性名稱表示要素屬性的值。

·????????簡單的屬性名稱是字母和數(shù)字的序列,

·????????用雙引號引用的屬性名稱可以是任何字符序列。

文字

文字指定各種類型的常量值。

類型描述

數(shù)整數(shù)或浮點數(shù)??茖W(xué)記數(shù)法得到支持。

布爾TRUE?要么?FALSE

由單引號分隔的字符串文字。要在字符串中包含單引號,請使用兩個單引號:''

幾何WKT格式的幾何圖形。WKT在OGCSimple規(guī)范中定義。所有標(biāo)準(zhǔn)的幾何類型的支持:POINT,LINESTRING,POLYGON,MULTIPOINT,MULTILINESTRING,MULTIPOLYGON,GEOMETRYCOLLECTION。語法x1?x2?y1?y2也支持自定義類型的Envelope?。ENVELOPE?(?)

時間格式中的UTC日期/時間值yyyy-mm-hhThh:mm:ss。秒值可能有一個小數(shù)部分。時區(qū)可以被指定為Z或+/-hh:mm。例:2006-11-30T00:30:00Z

持續(xù)時間持續(xù)時間指定為P[y?Ym?Md?D]?T[h?Hm?Ms?S]。持續(xù)時間可以通過僅包括所需的年,月,日,小時,分鐘和秒分量來指定為任何期望的精度。例如:?P1Y2M,P4Y2M20D,?P4Y2M1DT20H3M36S

時間周期

以幾種不同的格式指定一段時間。

句法描述

時間/時間開始和結(jié)束時間指定的時段

持續(xù)/時間期限由給定時間之前的持續(xù)時間指定

時間/期限按給定時間之后的持續(xù)時間指定的時間段

過濾功能

OGC過濾器編碼規(guī)范提供了過濾器功能的通用概念。過濾器函數(shù)是具有任意數(shù)量參數(shù)的命名函數(shù),它們可以用于過濾器表達(dá)式中以執(zhí)行特定的計算。這為定義過濾器提供了更豐富的表現(xiàn)力。過濾器函數(shù)可以用XML過濾器編碼語言和文本ECQL語言使用適合于該語言的語法。

GeoServer提供了許多不同類型的過濾功能,涵蓋了廣泛的功能,包括數(shù)學(xué),字符串格式化和幾何操作。過濾器功能參考中提供了完整的列表。

注意


過濾器編碼規(guī)范為過濾器函數(shù)提供了一種標(biāo)準(zhǔn)語法,但不要求特定的一組函數(shù)。服務(wù)器可以自由地提供他們想要的任何功能,所以某些函數(shù)表達(dá)式可能只適用于特定的軟件。

示例

以下示例顯示了如何使用過濾器功能。第一個顯示使用該geometryType功能的增強(qiáng)型WFS過濾。第二部分展示了如何使用SLD中的函數(shù)來獲得改進(jìn)的標(biāo)簽渲染。

WFS過濾

假設(shè)我們有一個要素類型,其幾何字段geom可以包含任何種類的幾何。對于某個應(yīng)用程序,我們只需要提取其幾何結(jié)構(gòu)是簡單點或多點的特征。這可以使用名為GeoServer特定的過濾器函數(shù)完成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是強(qiáng)制性的上GML 3.2幾何元素 - >

???????????????????<gml:Polygon

???????????????????????????gml:id = “polygon.1”

???????????????????????????srsName = 'http : //www.opengis.net/def/crs/EPSG/0/26713' >

???????????????????????<gml:exterior>

???????????????????????????<gml:LinearRing >

???????????????????????????????<! - 對必須形成一個閉環(huán) - >

???????????????????????????????<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格式化

我們想在等高線圖中顯示高程標(biāo)簽。海拔高度存儲為浮點值,因此原始數(shù)值可能會顯示不需要的小數(shù)位(例如“150.0”或“149.999999”)。我們希望確保數(shù)字適當(dāng)舍入(即顯示“150”)。要實現(xiàn)此目的,numberFormat可以在SLD標(biāo)簽內(nèi)容表達(dá)式中使用濾鏡功能:

...

<TextSymbolizer>

?<Label>

???<ogc:Function ?name = “numberFormat” >

?????<ogc:Literal> ## </ ogc:Literal>

?????<ogc:PropertyName> ELEVATION </ ogc:PropertyName>

???</ ogc:Function>

?</標(biāo)簽>

? ...

</ TextSymbolizer>

...

性能影響

在SLD符號表達(dá)式中使用過濾函數(shù)不會產(chǎn)生很大的開銷,除非函數(shù)執(zhí)行的計算量非常大。

但是,在某些情況下,使用WFS篩選或SLD規(guī)則表達(dá)式中的函數(shù)可能會導(dǎo)致性能問題。這通常是因為特定的過濾器函數(shù)不被本機(jī)數(shù)據(jù)存儲過濾器編碼器識別,因此GeoServer必須執(zhí)行內(nèi)存中的函數(shù)。

例如,像大多數(shù)數(shù)據(jù)存儲一樣,過濾器會將過濾器分成兩個獨立的部分。邊界框過濾器將被編碼為主要過濾器并在SQL中執(zhí)行,而函數(shù)將在內(nèi)存中執(zhí)行來自主過濾器的結(jié)果。BBOX(geom,-10,30,20,45)andgeometryType(geom)='Point'geometryType

?

過濾函數(shù)參考

該參考描述了可用于WFS / WMS過濾或SLD表達(dá)式中的所有過濾器功能。

可以通過瀏覽到http:// localhost:8080/ geoserver / wfs?request = GetCapabilities并在ogc:FunctionNames返回的XML中搜索來確定GeoServer實例上可用的函數(shù)列表。如果功能描述在功能文檔中,但不在此參考文獻(xiàn)中,則可能意味著該功能不能用于過濾,或者它是新的并且沒有記錄。詢問用戶郵件列表中的詳細(xì)信息。

除非另有說明,否則本參考文獻(xiàn)中的所有過濾功能都不會被數(shù)據(jù)存儲本機(jī)理解,因此使用它們的表達(dá)式將在內(nèi)存中進(jìn)行評估。

函數(shù)參數(shù)類型參考

類型描述

雙浮點數(shù),8字節(jié),IEEE 754.范圍從4.94065645841246544e-324d到1.79769313486231570e + 308d

浮動浮點數(shù),4字節(jié),IEEE 754.范圍從1.40129846432481707e-45到3.40282346638528860e + 38。范圍較小,精度低于Double。

整數(shù)整數(shù),范圍從-2,147,483,648到2,147,483,647

長整數(shù),范圍從-9,223,372,036,854,775,808到+9,223,372,036,854,775,807

數(shù)任何類型的數(shù)值

目的任何類型的值

串字符序列

時間戳日期和時間信息

比較函數(shù)

名稱參數(shù)描述

之間num:號碼,low:號碼,high:號碼如果low<=?num<=,則返回truehigh

等于a:對象,b:對象可用于比較兩個數(shù)字,兩個字符串,兩個日期等等

greaterEqualThanx:對象,y:對象如果x> =,則返回true?y。參數(shù)可以是數(shù)字或字符串(在第二種情況下,使用詞典排序)

比...更棒x:對象,y:對象如果x>,則返回true?y。參數(shù)可以是數(shù)字或字符串(在第二種情況下,使用詞典排序)

in2,in3,in4,in5,in6,in7,in8,in9,in10candidate:Object,v1:Object,...,v9:Object如果candidate等于其中一個v1,...?v9值,則返回true?。使用匹配指定參數(shù)數(shù)目的函數(shù)名稱。

在candidate:Object,v1:Object,v2:Object,...與上面介紹的in2,...,in10函數(shù)完全相同,但是可以將任意數(shù)量的值作為輸入。

就好像string:String,pattern:String如果字符串匹配指定的模式,則返回true。有關(guān)模式規(guī)范的完整語法,請參閱Java Pattern類javadocs

一片空白o(hù)bj:目的返回true傳遞的參數(shù)是null,否則返回false

少于x:對象,y:對象如果x<,則返回true?y。參數(shù)可以是數(shù)字或字符串(在第二種情況下,使用詞典排序

lessEqualThanx:對象,y:對象如果x<=,則返回true?y。參數(shù)可以是數(shù)字或字符串(在第二種情況下,使用詞典排序

不bool:布爾返回的否定?bool

notEqualx:對象,y:對象如果x和y相等則返回true?,否則返回false

控制功能

名稱參數(shù)描述

if_then_elsecondition:布爾值,x:對象,y:對象x如果條件為真,y則返回;?否則返回

環(huán)境功能

該函數(shù)返回在各種上下文中定義的環(huán)境變量的值。定義環(huán)境變量的上下文包括SLD渲染和WMS Animator。

名稱參數(shù)描述

ENVvariable:串返回環(huán)境變量的值variable。

特征函數(shù)

名稱參數(shù)描述

IDfeature:特征返回該特征的標(biāo)識符

PropertyExistsf:功能,propertyName:字符串true如果f具有名為的屬性,則返回propertyName

屬性f:功能,propertyName:字符串返回屬性的值propertyName。允許通過SLD中變量替換來計算或指定屬性名稱?。

空間關(guān)系函數(shù)

有關(guān)空間關(guān)系的精確含義的更多信息,請參閱OGC簡單特征規(guī)范SQL

名稱參數(shù)描述

包含a:幾何,b:幾何如果幾何體a包含,則返回trueb

十字架a:幾何,b:幾何如果a十字架返回trueb

不相交的a:幾何,b:幾何如果兩個幾何不相交,則返回true,否則返回false

equalsExacta:幾何,b:幾何如果兩個幾何圖形完全相同,則返回true,相同坐標(biāo)的順序相同

equalsExactTolerancea:幾何,b:幾何,tol:雙如果兩個幾何圖形完全相等,則返回true,相同坐標(biāo)的順序相同,允許tol相應(yīng)點的距離

相交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:幾何如果根據(jù)SQL簡單功能規(guī)范規(guī)則進(jìn)行a觸摸b,則返回true

中a:幾何,b:幾何返回true被完全包含在里面?b

幾何函數(shù)

名稱參數(shù)描述

區(qū)geometry:幾何指定幾何體的面積。在笛卡爾平面中工作時,結(jié)果將與幾何坐標(biāo)具有相同的度量單位(這也意味著結(jié)果對地理數(shù)據(jù)沒有任何意義)

邊界geometry:幾何返回幾何的邊界

boundaryDimensiongeometry:幾何返回幾何邊界的維數(shù)

緩沖geometry:幾何,distance:雙使用指定的距離返回幾何圖形周圍的緩沖區(qū)域

bufferWithSegmentsgeometry:幾何,distance:雙精度,segments:整數(shù)使用指定的距離返回幾何圖形周圍的緩沖區(qū)域,并使用指定數(shù)量的線段表示圓的象限。

形心geometry:幾何返回幾何體的質(zhì)心??梢越?jīng)常用作多邊形的標(biāo)簽點,但不能保證它實際位于幾何體內(nèi)

凸形輪廓geometry:幾何返回指定幾何體的凸包

區(qū)別a:幾何,b:幾何返回所有坐下a但不在的點b

尺寸a:幾何返回指定幾何體的尺寸

距離a:幾何,b:幾何返回兩個幾何體之間的歐氏距離

endAngleline:線段形式返回線串的結(jié)束段的角度

端點line:線段形式返回線串的結(jié)束點

信封geometry:幾何返回表示幾何的包絡(luò)的多邊形,即具有與包含它的軸平行的邊的最小矩形

exteriorRingpoly:多邊形返回指定多邊形的外部環(huán)

geometryTypegeometry:幾何以字符串形式返回幾何圖形的類型。也許是Point,MultiPoint,LineString,LinearRing,MultiLineString,Polygon,MultiPolygon,GeometryCollection

geomFromWKTwkt:串返回參數(shù)中Geometry包含的已知文本格式的表示形式wkt

geomLengthgeometry:幾何返回此幾何體的長度/周長(在笛卡爾空間中計算)

getGeometryNcollection:GeometryCollection,:n整數(shù)返回集合中的第n個幾何圖形

的getXp:點返回的x縱坐標(biāo)p

的getYp:點返回的y縱坐標(biāo)p

蓋茨p:點返回的z縱坐標(biāo)p

內(nèi)點geometry:幾何返回幾何體內(nèi)部的點,如果可能,或者坐在其邊界上,否則返回

interiorRingNpolyg:多邊形,n:整數(shù)返回多邊形的第n個內(nèi)環(huán)

路口a:幾何,b:幾何返回之間的交叉a和b。交集結(jié)果可以是任何東西,包括異構(gòu)的幾何集合,如果結(jié)果為空,它將由空集合表示。

關(guān)閉了line:LineString如果line形成一個閉環(huán),也就是說,如果第一個和最后一個坐標(biāo)相等,則返回true

是空的geometry:幾何如果幾何體不包含任何點(通常情況下為空幾何集合),則返回true

等距geometry:幾何,extrusion:雙返回一個MultiPolygon,其中包含輸入幾何圖元所有組件的等距突出部分。擠出距離extrusion以與幾何坐標(biāo)相同的單位表示??梢杂脕碓诘貓D中獲得偽3D效果

isRingline:線段形式如果line實際上是一個閉環(huán)(等于),則返回trueisRing(line)?and?isSimple(line)

isSimpleline:線段形式如果幾何圖形只在邊界點相交,則返回true

已驗證geometry:幾何如果幾何拓?fù)溆行?,則返回true(環(huán)關(guān)閉,孔位于船體內(nèi),等等)

numGeometriescollection:GeometryCollection返回幾何集合中包含的幾何圖形的數(shù)量

numInteriorRingpoly:多邊形返回指定多邊形內(nèi)的內(nèi)部環(huán)(孔)的數(shù)量

numPointgeometry:幾何返回包含在中的點(頂點)的數(shù)量?geometry

抵消geometry:幾何,offsetX:雙,offsetY:雙用指定的X和Y偏移量偏移幾何圖形中的所有點。偏移量與幾何自身坐標(biāo)在同一坐標(biāo)系中工作。

焦點Ngeometry:幾何,n:整數(shù)返回指定幾何體內(nèi)的第n個點

由startAngleline:LineString返回輸入線串的起始段的角度

起點line:LineString返回輸入線串的起始點

symDifferencea:幾何,b:幾何返回a和之間的對稱差異b(內(nèi)部a或所有點b,但不是兩者)

toWKTgeometry:幾何返回WKT表示?geometry

聯(lián)盟a:幾何,b:幾何返回的工會a和b(結(jié)果可能是一個幾何集合)

頂點geom:幾何返回由所有頂點組成的多點?geom

數(shù)學(xué)函數(shù)

名稱參數(shù)描述

ABSvalue:整數(shù)指定的Integer的絕對值?value

abs_2value:長指定Long的絕對值?value

abs_3value:浮動指定Float的絕對值?value

abs_4value:雙指定Double的絕對值?value

ACOSangle:雙angle以弧度為單位返回弧的余弦值,范圍為0.0到PI

ASINangle:雙返回angle以弧度表示的弧的正弦值,范圍為through-PI?/?2PI?/?2

曬黑angle:雙以弧度返回角度的反正切,范圍為-PI/2throughPI/2

ATAN2x:雙,y:雙將直角坐標(biāo)轉(zhuǎn)換為極坐標(biāo)(r,theta)并返回theta。(x,?y)

小區(qū)x:雙返回大于或等于x且等于數(shù)學(xué)整數(shù)的最?。ㄗ罱咏?fù)無窮大)double值。

COSangle:雙返回angle以弧度表示的余弦

double2boolx:雙返回trueif?x為零,false否則返回

EXPx:雙返回歐拉數(shù)e增加的力量x

地板x:雙返回小于或等于x且等于數(shù)學(xué)整數(shù)的最大(最接近正無窮大)值

IEEERemainderx:雙,y:雙計算IEEE 754標(biāo)準(zhǔn)規(guī)定的x除以余數(shù)y

int2bboolx: 整數(shù)如果x為零則返回true?,否則返回false

int2ddoublex: 整數(shù)轉(zhuǎn)換x為雙精度

日志x: 整數(shù)返回的自然對數(shù)(基數(shù)e)x

max,max_3,max_4x1:雙倍,x2:雙倍,x3:雙倍,x4:雙倍返回最大值x1,...,x4

min,min_3,min_4x1:雙倍,x2:雙倍,x3:雙倍,x4:雙倍返回最小值x1,...,x4

PI沒有返回pi一個圓的周長與其直徑的比值的近似值

POWbase:雙,exponent:雙返回base提升到權(quán)力的值exponent

隨機(jī)沒有返回帶有正號,大于或等于0.0和小于的Double值1.0。返回值是從該范圍內(nèi)以近似均勻分布偽隨機(jī)選擇的。

RINTx:雙返回與參數(shù)值最接近的Double值,等于一個數(shù)學(xué)整數(shù)。如果兩個數(shù)學(xué)整數(shù)的double值相等,則結(jié)果是整數(shù)值是偶數(shù)。

round_2x:雙相同round,但返回Long

回合x:雙返回最接近的整數(shù)x。結(jié)果通過加1/2來舍入到一個整數(shù),取結(jié)果的底部,并將結(jié)果轉(zhuǎn)換為Integer類型。換句話說,結(jié)果等于表達(dá)式的值(int)floor(a?+?0.5)

roundDoublex:雙返回距離最近的Long?x

罪angle:雙返回angle以弧度表示的正弦值

黃褐色angle:雙返回angle以弧度表示的三角正切

toDegreesangle:雙將以弧度表示的角度轉(zhuǎn)換為度數(shù)

toRadiansangle:雙將以弧度表示的角度轉(zhuǎn)換為度數(shù)

字符串函數(shù)

字符串函數(shù)通常會接受任何類型的String參數(shù)值。非字符串值將自動轉(zhuǎn)換為字符串表示形式。

名稱參數(shù)描述

CONCATENATEs1:String,s2:String,...連接任意數(shù)量的字符串。非字符串參數(shù)是允許的。

strCapitalizesentence:串充分利用句子。例如,“你是誰?”將變成“你好嗎?”

strConcata:String,b:String將兩個字符串連接成一個

strEndsWithstring:String,suffix:String如果string以。結(jié)尾,則返回truesuffix

strEqualsIgnoreCasea:String,b:String如果兩個字符串相等,則忽略大小寫注意事項返回true

strIndexOfstring:String,substring:String返回指定子字符串第一次出現(xiàn)的此字符串中的索引,或者-1如果未找到

strLastIndexOfstring:String,substring:String返回指定子字符串最后一次出現(xiàn)的字符串中的索引,或者-1如果找不到

strLengthstring:串返回字符串長度

strMatchesstring:String,pattern:String如果字符串與指定的正則表達(dá)式匹配,則返回true。有關(guān)模式規(guī)范的完整語法,請參閱Java Pattern類javadocs

strReplacestring:字符串,pattern:字符串,replacement:字符串,global:布爾值返回替換為給定替換文本的模式的字符串。如果global參數(shù)是true那么所有的模式將被替換,否則只有第一個。有關(guān)模式規(guī)范的完整語法,請參閱Java Pattern類javadocs

strStartsWithstring:String,prefix:String如果string以。開頭,則返回trueprefix

strSubstringstring:字符串,begin:整數(shù),end整數(shù)返回一個新字符串,該字符串是此字符串的子字符串。子字符串從指定的位置開始begin并延伸到索引處的字符處(索引從零開始)。endIndex?-?1

strSubstringStartstring:字符串,begin:整數(shù)返回一個新字符串,該字符串是此字符串的子字符串。子字符串從指定的位置開始begin并延伸到字符串的最后一個字符

strToLowerCasestring:串返回字符串的小寫版本

strToUpperCasestring:串返回字符串的大寫版本

strTrimstring:串返回字符串的副本,省略前導(dǎo)和尾隨空白

解析和格式化函數(shù)

名稱參數(shù)描述

日期格式format:字符串,date:時間戳根據(jù)提供的格式格式化指定的日期。格式語法可以在Java SimpleDateFormat javadocs中找到

dateParseformat:String,dateString:StringdateString根據(jù)format規(guī)范解析格式化的日期。格式語法可以在Java SimpleDateFormat javadocs中找到

NUMBERFORMATformat:字符串,number:雙根據(jù)指定的格式編號format。格式語法可以在Java DecimalFormat javadocs中找到

parseBooleanboolean:串將字符串解析為布爾值??兆址?,f,0.0并且0被認(rèn)為是假的,否則一切都被認(rèn)為是真實的。

parseDoublenumber:串將字符串解析為雙精度型。數(shù)字可以用正?;蚩茖W(xué)的形式表示。

parseInt函數(shù)number:串將一個字符串解析為一個整數(shù)。

parseLongnumber:串將字符串分析為長整數(shù)

轉(zhuǎn)換函數(shù)

轉(zhuǎn)換函數(shù)將值從一個數(shù)據(jù)空間轉(zhuǎn)換為另一個?這些函數(shù)提供了從特征屬性值計算樣式參數(shù)的簡潔方法。另請參見使用轉(zhuǎn)換函數(shù)的樣式。

名稱參數(shù)描述

重新編碼lookupValue:目的,

data:對象,?value:對象,...

將一lookupValue組離散數(shù)據(jù)值轉(zhuǎn)換為另一組值。可以指定任意數(shù)量的data/?value對。

分類lookupValue:對象,value:對象,

threshold:對象,...value:對象,

belongsTo?:字符串

將連續(xù)值屬性值轉(zhuǎn)換為一組離散值。?lookupValue并且value必須是可訂購類型(通常是數(shù)字)。最初value是必需的??梢灾付ㄈ我鈹?shù)量的附加threshold/?value配對。?belongsTo是可選的,具有值succeeding或preceding。它定義了當(dāng)查找值等于閾值時使用哪個間隔。

插lookupValue:數(shù)字,

data:數(shù)字,?value:數(shù)字#RRGGBB,...

mode:String,method:String

將連續(xù)值屬性值轉(zhuǎn)換為另一個連續(xù)的值范圍??梢灾付ㄈ我鈹?shù)量的data/?value對。?mode是可選的,值linear是cosine或cubic。它定義要使用的插值算法。?method是可選的,具有值numeric或color。它定義目標(biāo)值是數(shù)字還是RGB顏色規(guī)格。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,936評論 0 9
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,701評論 0 5
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,667評論 0 4
  • 原文鏈接:http://cloud.spring.io/spring-cloud-static/spring-cl...
    周靖峰閱讀 2,215評論 0 4
  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,487評論 0 20

友情鏈接更多精彩內(nèi)容