QGIS API Documentation
2.10.1-Pisa
|
Class for parsing and evaluation of expressions (formerly called "search strings"). More...
#include <qgsexpression.h>
Classes | |
class | Function |
A abstract base class for defining QgsExpression functions. More... | |
class | Interval |
class | Node |
class | NodeBinaryOperator |
class | NodeColumnRef |
class | NodeCondition |
class | NodeFunction |
class | NodeInOperator |
class | NodeList |
class | NodeLiteral |
class | NodeUnaryOperator |
class | StaticFunction |
class | Visitor |
support for visitor pattern - algorithms dealing with the expressions may be implemented without modifying the Node classes More... | |
class | WhenThen |
Public Types | |
enum | BinaryOperator { boOr, boAnd, boEQ, boNE, boLE, boGE, boLT, boGT, boRegexp, boLike, boNotLike, boILike, boNotILike, boIs, boIsNot, boPlus, boMinus, boMul, boDiv, boIntDiv, boMod, boPow, boConcat } |
list of binary operators More... | |
typedef QVariant(* | FcnEval )(const QVariantList &values, const QgsFeature *f, QgsExpression *parent) |
enum | NodeType { ntUnaryOperator, ntBinaryOperator, ntInOperator, ntFunction, ntLiteral, ntColumnRef, ntCondition } |
enum | SpatialOperator { soBbox, soIntersects, soContains, soCrosses, soEquals, soDisjoint, soOverlaps, soTouches, soWithin } |
enum | UnaryOperator { uoNot, uoMinus } |
list of unary operators More... | |
typedef QList< WhenThen * > | WhenThenList |
Public Member Functions | |
QgsExpression (const QString &expr) | |
~QgsExpression () | |
void | acceptVisitor (Visitor &v) const |
entry function for the visitor pattern More... | |
int | currentRowNumber () |
Return the number used for $rownum special column. More... | |
QString | dump () const |
Return the expression string that represents this QgsExpression. More... | |
QString | evalErrorString () const |
Returns evaluation error. More... | |
QVariant | evaluate (const QgsFeature *f=NULL) |
Evaluate the feature and return the result. More... | |
QVariant | evaluate (const QgsFeature &f) |
Evaluate the feature and return the result. More... | |
QVariant | evaluate (const QgsFeature *f, const QgsFields &fields) |
Evaluate the feature and return the result. More... | |
QVariant | evaluate (const QgsFeature &f, const QgsFields &fields) |
Evaluate the feature and return the result. More... | |
const QString | expression () const |
Alias for dump() More... | |
QgsDistanceArea * | geomCalculator () |
Return calculator used for distance and area calculations (used by internal functions) More... | |
bool | hasEvalError () const |
Returns true if an error occurred when evaluating last input. More... | |
bool | hasParserError () const |
Returns true if an error occurred when parsing the input expression. More... | |
bool | isField () const |
Checks whether an expression consists only of a single field reference. More... | |
bool | needsGeometry () const |
Returns true if the expression uses feature geometry for some computation. More... | |
QString | parserErrorString () const |
Returns parser error. More... | |
bool | prepare (const QgsFields &fields) |
Get the expression ready for evaluation - find out column indexes. More... | |
QStringList | referencedColumns () const |
Get list of columns referenced by the expression. More... | |
const Node * | rootNode () const |
Returns root node of the expression. Root node is null is parsing has failed. More... | |
double | scale () |
void | setCurrentRowNumber (int rowNumber) |
Set the number for $rownum special column. More... | |
void | setEvalErrorString (QString str) |
Set evaluation error (used internally by evaluation functions) More... | |
void | setGeomCalculator (const QgsDistanceArea &calc) |
Sets the geometry calculator used in evaluation of expressions,. More... | |
void | setScale (double scale) |
Static Public Member Functions | |
static const QStringList & | BuiltinFunctions () |
static double | evaluateToDouble (const QString &text, const double fallbackValue) |
Attempts to evaluate a text string as an expression to a resultant double value. More... | |
static int | functionCount () |
Returns the number of functions defined in the parser. More... | |
static int | functionIndex (const QString &name) |
static const QList< Function * > & | Functions () |
static QString | group (QString group) |
static bool | hasSpecialColumn (const QString &name) |
Check whether a special column exists. More... | |
static QString | helptext (QString name) |
static bool | isFunctionName (QString name) |
static bool | isValid (const QString &text, const QgsFields &fields, QString &errorMessage) |
static QString | quotedColumnRef (QString name) |
return quoted column reference (in double quotes) More... | |
static QString | quotedString (QString text) |
return quoted string (in single quotes) More... | |
static bool | registerFunction (Function *function) |
static QString | replaceExpressionText (const QString &action, const QgsFeature *feat, QgsVectorLayer *layer, const QMap< QString, QVariant > *substitutionMap=0, const QgsDistanceArea *distanceArea=0) |
This function currently replaces each expression between [% and %] in the string with the result of its evaluation on the feature passed as argument. More... | |
static void | setSpecialColumn (const QString &name, QVariant value) |
Assign a special column. More... | |
static QVariant | specialColumn (const QString &name) |
Return the value of the given special column or a null QVariant if undefined. More... | |
static QList< Function * > | specialColumns () |
Returns a list of special Column definitions. More... | |
static bool | unregisterFunction (QString name) |
static void | unsetSpecialColumn (const QString &name) |
Unset a special column. More... | |
Static Public Attributes | |
static const char * | BinaryOperatorText [] |
static QStringList | gmBuiltinFunctions |
static QList< Function * > | gmFunctions |
static const char * | UnaryOperatorText [] |
Protected Member Functions | |
QgsExpression () | |
Used by QgsOgcUtils to create an empty. More... | |
void | initGeomCalculator () |
Static Protected Member Functions | |
static void | initFunctionHelp () |
Protected Attributes | |
QgsDistanceArea * | mCalc |
QString | mEvalErrorString |
QString | mExp |
QString | mParserErrorString |
Node * | mRootNode |
int | mRowNumber |
double | mScale |
Static Protected Attributes | |
static QHash< QString, QString > | gFunctionHelpTexts |
static QHash< QString, QString > | gGroups |
static QMap< QString, QString > | gmSpecialColumnGroups |
static QMap< QString, QVariant > | gmSpecialColumns |
Friends | |
class | QgsOgcUtils |
Class for parsing and evaluation of expressions (formerly called "search strings").
The expressions try to follow both syntax and semantics of SQL expressions.
Usage:
Possible QVariant value types:
Similarly to SQL, this class supports three-value logic: true/false/unknown. Unknown value may be a result of operations with missing data (NULL). Please note that NULL is different value than zero or an empty string. For example 3 > NULL returns unknown.
There is no special (three-value) 'boolean' type: true/false is represented as 1/0 integer, unknown value is represented the same way as NULL values: invalid QVariant.
For better performance with many evaluations you may first call prepare(fields) function to find out indices of columns and then repeatedly call evaluate(feature).
Type conversion: operators and functions that expect arguments to be of particular type automatically convert the arguments to that type, e.g. sin('2.1') will convert the argument to a double, length(123) will first convert the number to a string. Explicit conversion can be achieved with toint, toreal, tostring functions. If implicit or explicit conversion is invalid, the evaluation returns an error. Comparison operators do numeric comparison in case both operators are numeric (int/double) or they can be converted to numeric types.
Arithmetic operators do integer arithmetics if both operands are integer. That is 2+2 yields integer 4, but 2.0+2 returns real number 4.0. There are also two versions of division and modulo operators: 1.0/2 returns 0.5 while 1/2 returns 0.
Definition at line 86 of file qgsexpression.h.
typedef QVariant( * QgsExpression::FcnEval)(const QVariantList &values, const QgsFeature *f, QgsExpression *parent) |
Definition at line 280 of file qgsexpression.h.
typedef QList<WhenThen*> QgsExpression::WhenThenList |
Definition at line 661 of file qgsexpression.h.
list of binary operators
Enumerator | |
---|---|
boOr | |
boAnd | |
boEQ | |
boNE | |
boLE | |
boGE | |
boLT | |
boGT | |
boRegexp | |
boLike | |
boNotLike | |
boILike | |
boNotILike | |
boIs | |
boIsNot | |
boPlus | |
boMinus | |
boMul | |
boDiv | |
boIntDiv | |
boMod | |
boPow | |
boConcat |
Definition at line 231 of file qgsexpression.h.
Enumerator | |
---|---|
ntUnaryOperator | |
ntBinaryOperator | |
ntInOperator | |
ntFunction | |
ntLiteral | |
ntColumnRef | |
ntCondition |
Definition at line 424 of file qgsexpression.h.
Enumerator | |
---|---|
soBbox | |
soIntersects | |
soContains | |
soCrosses | |
soEquals | |
soDisjoint | |
soOverlaps | |
soTouches | |
soWithin |
Definition at line 264 of file qgsexpression.h.
list of unary operators
Enumerator | |
---|---|
uoNot | |
uoMinus |
Definition at line 221 of file qgsexpression.h.
QgsExpression::QgsExpression | ( | const QString & | expr | ) |
Definition at line 1980 of file qgsexpression.cpp.
QgsExpression::~QgsExpression | ( | ) |
Definition at line 1992 of file qgsexpression.cpp.
|
inlineprotected |
Used by QgsOgcUtils to create an empty.
Definition at line 710 of file qgsexpression.h.
void QgsExpression::acceptVisitor | ( | QgsExpression::Visitor & | v | ) | const |
entry function for the visitor pattern
Definition at line 2088 of file qgsexpression.cpp.
|
static |
Definition at line 1671 of file qgsexpression.cpp.
|
inline |
Return the number used for $rownum special column.
Definition at line 146 of file qgsexpression.h.
QString QgsExpression::dump | ( | ) | const |
Return the expression string that represents this QgsExpression.
Definition at line 2080 of file qgsexpression.cpp.
|
inline |
Returns evaluation error.
Definition at line 139 of file qgsexpression.h.
QVariant QgsExpression::evaluate | ( | const QgsFeature * | f = NULL | ) |
Evaluate the feature and return the result.
Definition at line 2057 of file qgsexpression.cpp.
|
inline |
Evaluate the feature and return the result.
Definition at line 125 of file qgsexpression.h.
QVariant QgsExpression::evaluate | ( | const QgsFeature * | f, |
const QgsFields & | fields | ||
) |
Evaluate the feature and return the result.
Definition at line 2069 of file qgsexpression.cpp.
|
inline |
Evaluate the feature and return the result.
Definition at line 134 of file qgsexpression.h.
|
static |
Attempts to evaluate a text string as an expression to a resultant double value.
text | text to evaluate as expression |
fallbackValue | value to return if text can not be evaluated as a double |
Definition at line 2174 of file qgsexpression.cpp.
|
inline |
Alias for dump()
Definition at line 170 of file qgsexpression.h.
|
static |
Returns the number of functions defined in the parser.
Definition at line 1974 of file qgsexpression.cpp.
|
static |
Definition at line 1958 of file qgsexpression.cpp.
|
static |
Definition at line 1714 of file qgsexpression.cpp.
|
inline |
Return calculator used for distance and area calculations (used by internal functions)
Definition at line 183 of file qgsexpression.h.
Definition at line 2904 of file qgsexpression.cpp.
|
inline |
Returns true if an error occurred when evaluating last input.
Definition at line 137 of file qgsexpression.h.
|
inline |
Returns true if an error occurred when parsing the input expression.
Definition at line 93 of file qgsexpression.h.
|
static |
Check whether a special column exists.
Definition at line 1884 of file qgsexpression.cpp.
Definition at line 2896 of file qgsexpression.cpp.
|
staticprotected |
Definition at line 6 of file qgsexpression_texts.cpp.
|
protected |
Definition at line 2029 of file qgsexpression.cpp.
|
inline |
Checks whether an expression consists only of a single field reference.
Definition at line 161 of file qgsexpression.h.
|
static |
Definition at line 1953 of file qgsexpression.cpp.
|
static |
Definition at line 1919 of file qgsexpression.cpp.
bool QgsExpression::needsGeometry | ( | ) | const |
Returns true if the expression uses feature geometry for some computation.
Definition at line 2022 of file qgsexpression.cpp.
|
inline |
Returns parser error.
Definition at line 95 of file qgsexpression.h.
bool QgsExpression::prepare | ( | const QgsFields & | fields | ) |
Get the expression ready for evaluation - find out column indexes.
Definition at line 2045 of file qgsexpression.cpp.
return quoted column reference (in double quotes)
Definition at line 1939 of file qgsexpression.cpp.
return quoted string (in single quotes)
Definition at line 1944 of file qgsexpression.cpp.
QStringList QgsExpression::referencedColumns | ( | ) | const |
Get list of columns referenced by the expression.
Definition at line 1998 of file qgsexpression.cpp.
|
static |
Definition at line 1640 of file qgsexpression.cpp.
|
static |
This function currently replaces each expression between [% and %] in the string with the result of its evaluation on the feature passed as argument.
Additional substitutions can be passed through the substitutionMap parameter
action | |
feat | |
layer | |
substitutionMap | |
distanceArea | optional QgsDistanceArea. If specified, the QgsDistanceArea is used for distance and area conversion |
Definition at line 2094 of file qgsexpression.cpp.
|
inline |
Returns root node of the expression. Root node is null is parsing has failed.
Definition at line 100 of file qgsexpression.h.
|
inline |
Definition at line 167 of file qgsexpression.h.
|
inline |
Set the number for $rownum special column.
Definition at line 144 of file qgsexpression.h.
|
inline |
Set evaluation error (used internally by evaluation functions)
Definition at line 141 of file qgsexpression.h.
void QgsExpression::setGeomCalculator | ( | const QgsDistanceArea & | calc | ) |
Sets the geometry calculator used in evaluation of expressions,.
Definition at line 2039 of file qgsexpression.cpp.
|
inline |
Definition at line 165 of file qgsexpression.h.
Assign a special column.
Definition at line 1848 of file qgsexpression.cpp.
Return the value of the given special column or a null QVariant if undefined.
Definition at line 1868 of file qgsexpression.cpp.
|
static |
Returns a list of special Column definitions.
Definition at line 1927 of file qgsexpression.cpp.
|
static |
Definition at line 1651 of file qgsexpression.cpp.
|
static |
Unset a special column.
Definition at line 1859 of file qgsexpression.cpp.
|
friend |
Definition at line 733 of file qgsexpression.h.
|
static |
Definition at line 277 of file qgsexpression.h.
Definition at line 728 of file qgsexpression.h.
Definition at line 729 of file qgsexpression.h.
|
static |
Definition at line 393 of file qgsexpression.h.
|
static |
Definition at line 390 of file qgsexpression.h.
Definition at line 726 of file qgsexpression.h.
Definition at line 725 of file qgsexpression.h.
|
protected |
Definition at line 723 of file qgsexpression.h.
|
protected |
Definition at line 717 of file qgsexpression.h.
|
protected |
Definition at line 721 of file qgsexpression.h.
|
protected |
Definition at line 716 of file qgsexpression.h.
|
protected |
Definition at line 714 of file qgsexpression.h.
|
protected |
Definition at line 719 of file qgsexpression.h.
|
protected |
Definition at line 720 of file qgsexpression.h.
|
static |
Definition at line 278 of file qgsexpression.h.