在pyqgis中注册自定义qgsfunction
我在独立应用程序中使用pyqgis。现在,我想创建一个自定义表达式,以根据的规则用作filterExpression ruleBasedRendererV2。(我之前尝试过使用现有功能的渲染器,并且一切正常!) 自定义qgisfunction(按位AND功能-由于尚无此功能)如下所示: from qgis.utils import qgsfunction @qgsfunction(args="auto", group='Python') def bitwise_and(value1, value2, feature, parent): return value1 & value2 我也尝试通过以下方式进行注册: from qgis.core import QgsExpression QgsExpression.registerFunction(bitwise_and) 通过以下方式测试表达式: expressionString = 'bitwise_and(2, 2) = 2' exp = QgsExpression(expressionString) if exp.hasParserError(): print(exp.parserErrorString()) (2=2始终给予True)在注册功能后有效,否则失败。但是,我仍然不能在规则内使用表达式... 现在,包含该功能的文件位于我的项目文件夹的顶部,该文件夹自动包含在PATH中,对吗?(根据Nathan Woodrow的说法,文件可以放在PATH中的任何位置-请参阅https://nathanw.net/2012/11/10/user-defined-expression-functions-for-qgis/)。 更新:到目前为止,函数的注册可以通过上面的代码进行-现在问题出在函数本身上。 更新#2: 很奇怪!do_nothing获得两个参数的简单函数在我的代码中运行良好: @qgsfunction(args="auto", group='Python') def do_nothing(value1, value2, feature, parent): …