分享

QGIS字段计算器常用函数详解

 风声之家 2022-07-19 发布于江苏

原创 西西艾尔 GIS二师兄 2022-07-18 21:00 发表于浙江

收录于合集#QGIS3个
GIS软件的字段计算器是一个非常强大的工具,通常他可让我们批量处理属性表数据,筛选、清洗、规范、整合各个字段数据。

对比行业标杆的ArcGIS,QGIS的字段计算器自带函数显然更全。这篇文章介绍常用的QGIS字段计算器函数,让你深入了解如何使用。

QGIS打开字段计算器方法如下图:

图片

一、String_to_array 函数

假设我们拥有地址数据的数组如下:
地址 = ['Street', 'Macho', '1']

如果我们想从这个数组中获取一个元素,我们将通过它的索引来访问它。也就是说,对于street值是address[0]
QGIS 有几个使用数组的表达式,输入array都会显示
图片

我们主要了解string_to_array函数。
举个例子。我们有一个字段(地址),它指示由连字符分隔的街道的交叉点。
  • Calle Plata 1 – Avenida Cervantes 12

  • Calle Marn 23 – Paseo Ángel Montilla

为了利用分隔地址,表达式如下:
string_to_array(地址,'-')

图片

应用函数时在 Preview 中看到结果
获取分割后的数组第一个数据:
string_to_array(地址,'-')[0]

图片

二、修剪功能

此函数从字符串中删除所有前导和尾随空格或制表符。
上一个例子数据就有空格,我们可以利用该函数去除他
图片

为上一个结果添加修剪功能,嵌套函数,这个空格将被删除。
图片


三 、带有正则表达式的函数

正则表达式是用于在文本字符串中查找特定字符组合的模式,广泛用于计算。
如取数字部分:
regexp_substr('Silver Street nº1 left','\\d+')

图片

同样通过regexp_replace函数使用正则表达式,我们可以替换“Avda”。通过“大道”
regexp_replace('Avda. Plata nº1', 'Avda.', 'Avenida')

图片

另一种可能性是切换字符串顺序,如下例所示,我们将文本“hao ma, ”更改为“ma hao”
regexp_replace('hao, ma','(.*),(.*)','\\2 of \\1')

四、合并字符串

有几个函数可以处理文本字符串。

将多个字符串连接为一个。我们可以使用它来获取完整邮政地址的文本。
concat('Paseo','de','Los Patios','nº','1')

图片


五、格式化

它比前一个功能更进一步。它允许我们使用参数格式化输出。
format('%1 of %2 nº %3', 'Paseo', 'Los Patios', '1')

图片

六、大小写

将字符串转换为大写或小写
upper('路')

图片

七、取给定字符

从给定位置向右或向左取字符。
right('Comarca road CO-234', 6)

图片

八、CASE 条件句

在以下示例中,已通过函数收集并规范了将道路指示为大道的可能方式。
CASE
WHEN “street” like 'Av %' THEN regexp_replace("street", 'Av', 'Avenue')

WHEN "street" like 'Avd %' THEN regexp_replace("street", 'Avd', 'Avenue')

WHEN “street”,like“Avd”。%' THEN regexp_replace("street", 'Avd.', 'Avenida')
ELSE "street"
END

图片

GIS二师兄

GIS杂烩

65篇原创内容

公众号

确定

  • 不看此公众号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多