QGIS表达式中的函数

本文介绍了QGIS表达式中的内置和自定义函数,包括它们的分类、使用方法、常见函数及其应用。QGIS内置函数分为多个分组,自定义函数允许用户通过Python进行定制。文中还讲解了如何查找和使用函数,以及一些常用函数的功能,如darker、maximum、buffer和date转换函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编程语言中的函数,与数学函数的定义大不相同。在计算机领域,函数是指一段可以直接被另一段程序或代码引用的程序或代码,也叫做子程序(subroutine)、过程(procedure)、方法(method)。

函数在QGIS表达式构建过程中起到重要作用,表达式实际上是函数作用于常量与变量后得到的结果,可以说,函数是表达式的灵魂。

内置函数与自定义函数

QGIS表达式中的函数分为内置函数自定义函数两大类。

内置函数是QGIS系统自带的函数,用户可以在表达式构建过程中调用内置函数,但是不能修改其中的代码。

自定义函数是由用户通过Python语言编写的代码片段,可以根据个性化需求对函数功能进行设计与修改,为用户提供更强大而灵活的定制能力。

  • 系统内置函数

QGIS内置函数分成约20个分组,包括地图、地图图层、记录和属性、时间和日期、数学、数组、条件等。每个分组下所包含的函数数量如下:
在这里插入图片描述

  • 自定义函数

在表达式构造器中切换到【函数编辑器】标签,可以看到自定义函数编辑区由左边的函数列表、右上的函数代码编辑器和右下的帮助区域组成。

默认情况下,函数列表只有一个default函数,是系统提供的自定义函数模版。右侧函数代码编辑器给出了样例代码,提供了导入QGIS模块、自定义函数存储的分组以及函数体代码的参考。
在这里插入图片描述

点击左下角的【+】按钮,在弹出的对话框输入存储的文件名,即可新增自定义函数。

在这里插入图片描述

通常情况下,自定义函数首先需要使用import语句导入引用的Python库,然后设计和编写函数实现代码,例如在函数代码编辑器输入下面的代码:

import math
from qgis.core import *
from qgis.gui import *

@qgsfunction(args=0, group='Custom', usesgeometry
### QGIS 属性表中使用多个表达式的示例 在QGIS中,可以利用字段计算器来创建新的字段或更新现有字段,并通过组合多个表达式实现复杂的数据处理逻辑。下面是一个具体的例子,展示如何在一个操作中应用多个表达式。 #### 创建新字段并计算面积和周长 假设有一个多边形矢量图层,在该图层的属性表里想要增加两个字段分别存储每个多边形要素的实际面积和边界长度: 1. 打开目标图层的属性表; 2. 启动编辑模式; 3. 进入“字段计算器”,勾选“创建虚拟字段”以便于随时更新这些值而不影响原始数据结构; 对于面积字段(命名为`area`),可使用如下表达式: ```sql $area ``` 对于周长字段(命名为`perimeter`),则采用此表达式: ```sql $perimeter ``` 这两个表达式可以直接获取几何对象对应的测量结果[^1]。 #### 组合条件判断与字符串操作 如果希望基于某些特定条件下修改文本型字段的内容,则可以通过嵌套if语句和其他函数完成更复杂的转换工作。例如,当某列中的数值大于某个阈值时改变另一列表项的文字描述: 设有一列名为`value`表示某种指标得分,现在要根据这个分数给定等级标签到新建立的一栏叫作`grade`: ```sql CASE WHEN "value" >= 90 THEN 'Excellent' WHEN "value" BETWEEN 70 AND 89 THEN 'Good' ELSE 'Needs Improvement' END ``` 这里不仅实现了简单的比较运算还加入了范围界定功能[^2]。 #### 文件路径解析及重命名 针对批量导入后的文件可能带有冗余信息的情况,可以运用正则表达式提取有用部分作为最终保存的名字。比如有这样一批来自不同地区的地理空间数据集其全名格式类似:“地区名称_具体项目_mygeodata.shp”。为了去除前缀只保留核心内容可以用以下方式定义输出文件名模板: ```sql regexp_replace( @layer_name , '^.*_(.*)\.shp$', '\\1') ``` 上述命令会匹配整个字符串直到最后一个下划线之后的部分为止,并将其替换为捕获组内的子串即原文件的核心标识[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值