Allgemeines
CQL-Ausdrücke können Sie dazu verwenden um Linienbreiten, Farben, Symbolnamen, Drehwinkel usw. in Vektorlayerdefinitionen über Formeln abzuleiten.
Zugriff auf Attribute
Grundsätzlich können Sie in CQL auf den Wert eines jeden Attributes eines Datensatzes zugreifen. In diesem Fall ist einfach die Bezeichnung des Attributes des jeweiligen Features anzugeben:
... <width> <cql>width</cql> </width> ...
Im Beispiel wird auf das Featureattribut "width" zugegriffen. Alternativ könnten Sie stattdessen anlog zu Wert- und Farbangaben folgenden Ausdruck verwenden:
... <width> <featureValue> <attributeName>width</attributeName> </featureValue> </width> ...
Eine Übersicht über die verfügbaren Attribute einer GISX 2.x Datenbank finden Sie an dieser Stelle.
Bei SHAPE Daten sind die Attributnamen mit den Spaltenbezeichnungen der jeweiligen .dbf Datei identisch.
Arbeiten mit Konstanten
Natürlich können Sie in CQL auch Konstanten verwenden. Zahlen können Sie einfach schreiben:
... <width> <cql>10.0</cql> </width> ...
Im Beispiel würden alle Datensätze eines Layers mit der Linienstärke 10.0 dargestellt. Alternativ könnten Sie stattdessen anlog zu Wert- und Farbangaben folgenden Ausdruck verwenden:
... <width> <layerValue>10.0</layerValue> </width> ...
Textwerte sind hierzu in "'" anzugeben:
... <icon> <cql>'Schule'</cql> </icon> ...
Im Beispiel würden alle Datensätze eines Layers mit dem Symbol "Schule" dargestellt. Alternativ könnten Sie stattdessen anlog zu Wert- und Farbangaben folgenden Ausdruck verwenden:
... <icon> <layerValue>Schule</layerValue> </icon> ...
Arbeiten mit Funktionen
Ähnlich wie in SQL stehen Ihnen in CQL diverse Funktionen zur Verfügung. Alternativ können Sie auch sämtliche mathematischen Grundrechenoperationen durchführen:
... <width> <cql>width*0.1</cql> </width> ...
Im Beispiel wird ein Attribut "width" mit 0.1 multipliziert und das Ergebnis als Linienstärke verwendet.
Eingebaute Funktionen
Eine vollständige Liste mit verfügbaren Funktionen finden Sie unter http://docs.geoserver.org/stable/en/user/filter/function_reference.html#filter-function-reference
GEOGRAT Funktionen
Zusätzlich wurden von GEOGRAT einige weitere Funktionen definiert.
ConvertToColor
Beschreibung
Konvertiert einen beliebigen Wert (Auch Indexfarben) in eine gültige Farbe:
Syntax:
convertToColor(<Wert für Konvertierung>,[<Standardwert>])
Parameter
<Wert für Konvertierung> := Der Wert der konvertiert werden soll. Kann auch ein Farbindex sein.
<Standardwert> := Ein Wert der verwendet wird falls <Wert für Konvertierung> null oder ungültig ist:
Beispiel
<cql>convertToColor(colorAttribute,'#FF0000')</cql>
Im Beispiel wird die Farbe aus dem Attribut "colorAttribute" verwendet. Ist dort keine Farbe angegeben (oder die Farbe ist ungülitg), wird die Farbe rot verwendet.
HasValue
Prüft ob ein beliebiger Ausdruck einen Wert enthält und verwendet wenn nicht einen Standardwert
Syntax
hasValue(<Wert>,<Standardwert>)
Parameter
<Wert> := Wert der überprüft werden soll
<Standardwert> := Ein Wert (oder ein Ausdruck) der verwendet wird falls <Wert> null ist.
Beispiel
<cql>hasValue(attribute,'default')</cql>
Im Beispiel wird ein Wert aus dem Attribut "attribute" verwendet. Ist dort kein Wert angegeben, wird der Wert "default" verwendet.
Beispiele
Linienstärke aus GISX2 DN Angabe korrekt ableiten
... <lineStyle> ... <width> <cql>if_then_else(lessThan(hasValue(width,0),10),0.01,width*0.001)</cql> </width> <unit>m</unit> ... </lineStyle> ...
Folgende CQL Anweisung bedeuted:
- Wenn (if_then_else)
- der Wert aus dem Attribut "width" kleiner als 10 ist (DN werden immer als Millimeter angegeben) (
lessThan(hasValue(width,0),10)
)- Berücksichtige dabei aber dass Attribut "width" leer sein kann und nimm dafür 0 an (
hasValue(width,0)
)
- Berücksichtige dabei aber dass Attribut "width" leer sein kann und nimm dafür 0 an (
- der Wert aus dem Attribut "width" kleiner als 10 ist (DN werden immer als Millimeter angegeben) (
- dann gib einen Wert von
0.01
zurück - sonst multipliziere das Attribut "width" mit 0.001 (
width*0.001
)