QGIS修行记-如何使用QGIS进行换行标注

问题描述

QGIS根据指定的文字进行换行标注

项目的需要先描述一下:

  • 需要标注的字段太长,需要进行换行标注
  • 需要换行的数据不确定有多少(适用于批量数据的操作)
  • 我需要根据指定文字进行换行
    • 如:成山头海洋生态自然保护区,我想将自然保护区放在第二行显示,像这样显示:
      成山头海洋生态
自然保护区

环境说明

  • QGIS 3.28.7-Firenze

解决方法

方法1:在标注表达公式中直接设置

在QGIS中有这样一个直接进行换行标注的功能,具体的操作:

右键点击
点击
选中图层
属性
标注

依次点击
在这里插入图片描述
输入如下公式:在这里插入图片描述
代码如下所示(如匹配‘国家级自然保护区’ 在‘国’断开分行,根据需求修改)

CASE 
	WHEN regexp_match(name,'国家级自然保护区')   
		THEN substr( "name",1,regexp_match( "name",'国')-1)+ '\n' + substr( "name",regexp_match( "name",'国')) 
	WHEN regexp_match(name,'自然保护区') 
		THEN  substr( "name",1,regexp_match( "name",'自')-1)+ '\n' + substr( "name",regexp_match( "name",'自'))
	WHEN regexp_match(name,'海洋生态') 
		THEN  substr( "name",1,regexp_match( "name",'自')-1)+ '\n' + substr( "name",regexp_match( "name",'自'))
	ELSE substr( "name",1,regexp_match( "name",'生')-1)+ '\n' + substr( "name",regexp_match( "name",'生'))	
 END
  • CASE WHEN condition THEN result ELSE result END:对条件按顺序进行计算,如果条件为真,计算停止,并返回相应的结果。如果没有一个条件为真,返回ELSE子句中的值。此外,如果未设置ELSE子句且不满足任何条件,返回NULL。

WHEN condition: 待评估的条件表达式
THEN result: 如果条件 判断为真那么将返回结果。
ELSE result: 如果上面的所有条件都不满足,那么结果将会返回。

  • substr(string,start[,length]):返回字符串的一部分。

[ ] 标示可选的部分。
string:完整的输入字符串
start:整数,如果为从1开始的正整数则从起始位置开始提取; 如果为负数,则从尾部倒数计算位置,然后再正向提取。
length:表示要提取字符串长度的整数。如果length为负数,返回字符串将从字符串末尾省略给定的字符长度。

  • regexp_match(input_string,regex) 返回unicode字符串中与正则表达式匹配的第一个匹配位置,如果未找到子字符串,返回0。

input_string:对正则表达式进行测试的字符串
regex:待测试的正则表达式,反斜杠字符必须进行双重转义(例如,“\s"匹配空白字符或”\b"匹配单词边界)。

方法2:利用QGIS中的标注中的【格式】功能

将需要换行标注的字段做个换行处理,这种方法需要新建一个临时的字段,以【name2】为例:

在这里插入图片描述
在这里插入图片描述

公式根据需求修改,完成后点击添加字段图片中的位置1处,停止编辑,保存内容。

 CASE 
	WHEN regexp_match(name,'自然保护区') 
		THEN replace(name,'自然保护区','A自然保护区')
	ELSE replace(name,'生态系统','A生态系统')
 END

  • replace(string,before,after):替换字符串,返回一个字符串、数组或字符串映射替换后的字符串。返回一个字符串,其中所提供的字符串或字符串数组被一个字符串或字符串数组替换。

string:输入字符串
before:待替换的字符串或字符串数组
after:用作替换的字符串或字符串数组

执行结果如下所示:
在这里插入图片描述

然后再点击以执行如下操作:

右键点击
点击
点击
选中图层
属性
标注
格式

在这里插入图片描述【需要说明】

  • 在使用【按该字符换行】功能,这个字符可以是字符串(汉字也可以)
  • 对应的字符串会被删除,示例中的A会被省略掉,所以需要做临时的字段处理。

小结

示例中的情况,基本可以满足项目的需求,但是仍然会存在个例,可以自行修改属性表格,也可以进一步完善公式,使其一步到位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

激动的兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值