QGIS может выполнять разбор и анализ SQL-подобных выражений. Поддерживается ограниченное подмножество языка SQL. Выражения могут рассматриваться как логические предикаты (возвращающие True или False) или как функции (возвращающие скалярное значение).
Поддерживается три основных типа данных:
Доступны следующие операции:
Поддерживаются предикаты:
Примечание по совместимости: математические и геометрические функции, функции преобразования типа и оператор возведения в степень ^ доступны начиная с QGIS 1.4.
Примеры предикатов:
Примеры скалярных выражений:
TODO: parsing, error handling
>>> s = QgsSearchString()
>>> s.setString("1 + 1 = 2")
True
>>> s.setString("1 + 1 =")
False
>>> s.parserErrorMsg()
PyQt4.QtCore.QString(u'syntax error, unexpected $end')
TODO: working with the tree, evaluation as a predicate, as a function, error handling
st = ss.tree()
if not st:
raise ValueError, "empty expression was used"
print st.makeSearchString()
res = st.checkAgainst(fields, feature.attributeMap())
res, value = st.getValue(st, fields, feature.attributeMap(), feature.geometry())
print st.errorMsg()