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会被省略掉,所以需要做临时的字段处理。

小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492785.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指针的深入讲解

本章重点: 字符指针数组指针指针数组数组传参和指针传参函数指针函数指针数组指向函数指针数组的指针回调函数 我们在指针的初阶的时候主要讲了: 1.指针就是变量,用来存放地址,地址唯一标识一块内存空间 2.指针的大小是固定4个…

LWIP协议:三次握手和四次挥手、TCP/IP模型

一、三次握手:是客户端与服务器建立连接的方式; 1、客户端发送建立TCP连接的请求。seq序列号是由发送端随机生成的,SYN字段置为1表示需要建立TCP连接。(SYN1,seqx,x为随机生成数值);…

WEB开发: 全栈工程师起步 - Python Flask +SQLite的管理系统实现

一、前言 罗马不是一天建成的。 每个全栈工程师都是从HELLO WORLD 起步的。 之前我们分别用NODE.JS 、ASP.NET Core 这两个框架实现过基于WebServer的全栈工程师入门教程。 今天我们用更简单的来实现: Python。 我们将用Python来实现一个学生管理应用&#xff0…

WatchAlert - 开源多数据源告警引擎

概述 在现代 IT 环境中,监控和告警是确保系统稳定性和可靠性的关键环节。然而,随着业务规模的扩大和数据源的多样化,传统的单一数据源告警系统已经无法满足复杂的需求。为了解决这一问题,我开发了一个开源的多数据源告警引擎——…

ABAP SQL 取日期+时间最新的一条数据

我们在系统对接的时候,外部系统可能会推送多个数据给到我们。 我们 SAP 系统的表数据中日期和时间是作为主键的,那么如果通过 ABAP SQL 取到最新日期的最新时间呢。 解决方案: 方式 1:SELECT MAX 可以通过两个 SELECT MAX 来取…

Vue3 + Element-Plus + vue-draggable-plus 实现图片拖拽排序和图片上传到阿里云 OSS 父组件实现真正上传(最新保姆级)

Vue3 Element-Plus vue-draggable-plus 实现图片拖拽排序和图片上传到阿里云 OSS(最新保姆级)父组件实现真正上传 1、效果展示2、UploadImage.vue 组件封装3、相关请求封装4、SwiperConfig.vue 调用组件5、后端接口 1、效果展示 如果没有安装插件&…

容器化技术全面解析:Docker 与 Containerd 的深入解读

目录 Docker 简介 1. 什么是 Docker? 2. Docker 的核心组件 3. Docker 的主要功能 4. Docker 的优点 5. Docker 的使用场景 Containerd 简介 1. 什么是 Containerd? 2. Containerd 的核心特性 3. Containerd 的架构 4. Containerd 与 Docker 的…

LNMP+discuz论坛

0.准备 文章目录 0.准备1.nginx2.mysql2.1 mysql82.2 mysql5.7 3.php4.测试php访问mysql5.部署 Discuz6.其他 yum源: # 没有wget,用这个 # curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo[rootlocalhost ~]#…

Android Studio的笔记--BusyBox相关

BusyBox 相关 BusyBoxandroid上安装busybox和使用示例一、下载二、移动三、安装和设置环境变量四、使用 busybox源码下载和查看 BusyBox BUSYBOX BUSYBOX链接https://busybox.net/ 点击链接后如图 点击左边菜单栏的Get BusyBix中的Download Source 跳转到busybox 的下载源码…

LabVIEW与PLC点位控制及OPC通讯

在工业自动化中,PLC通过标准协议(如Modbus、Ethernet/IP等)与OPC Server进行数据交换,LabVIEW作为上位机通过OPC客户端读取PLC的数据并进行监控、控制与处理。通过这种方式,LabVIEW能够实现与PLC的实时通信&#xff0c…

C++ OpenGL学习笔记(1、Hello World空窗口程序)

终于抽出时间系统学习OpenGL 教程,同时也一步一步记录怎样利用openGL进行加速计算。 目录 1、环境准备1.1、库的下载1.2、库的选择及安装 2、OpenGL第一个项目,Hello World!2.1、新建hello world控制台项目2.2、配置openGL环境2.2.1 包含目录配置2.2.2 …

系统移植——Linux 内核顶层 Makefile 详解

一、概述 Linux Kernel网上下载的版本很多NXP等有自己对应的版本。需要从网上直接下载就可以。 二、Linux内核初次编译 编译内核之前需要先在 ubuntu 上安装 lzop 库 sudo apt-get install lzop 在 Ubuntu 中 新 建 名 为 “ alientek_linux ” 的 文 件夹 , …

ubuntu16.04ros-用海龟机器人仿真循线系统

下载安装sudo apt-get install ros-kinetic-turtlebot ros-kinetic-turtlebot-apps ros-kinetic-turtlebot-interactions ros-kinetic-turtlebot-simulator ros-kinetic-kobuki-ftdi sudo apt-get install ros-kinetic-rocon-*echo "source /opt/ros/kinetic/setup.bash…

Connection lease request time out 问题分析

Connection lease request time out 问题分析 问题背景 使用apache的HttpClient,我们知道可以通过setConnectionRequestTimeout()配置从连接池获取链接的超时时间,而Connection lease request time out正是从连接池获取链接超时的报错,这通常…

【文档搜索引擎】在内存中构造出索引结构(上)

文章目录 主要思路正排索引和倒排索引的表示1. 正排索引查询文档详细信息2. 倒排索引中查找关联词3. 新增文档正排索引倒排索引实现词频统计 主要思路 通过 Index 类,在内存中构造出索引结构。这个类要提供的方法: 给定一个 docId,在正排索…

单节点calico性能优化

在单节点上部署calicov3273后,发现资源占用 修改calico以下配置是资源消耗降低 1、因为是单节点,没有跨节点pod网段组网需要,禁用overlay方式网络(ipip,vxlan),使用route方式网络 配置calico-node的环境变量 CALICO_IPV4POOL_I…

tryhackme-Pre Security-HTTP in Detail(HTTP的详细内容)

任务一:What is HTTP(S)?(什么是http(s)) 1.What is HTTP? (HyperText Transfer Protocol)(什么是 HTTP?(超文本传输协议)) http是你查看网站的时候遵循的…

Javascript面试手撕常见题目(回顾一)

1.JS查找文章中出现频率最高的单词? 要在JavaScript中查找文章中出现频率最高的单词,你可以按照以下步骤进行操作: 将文章转换为小写:这可以确保单词的比较是大小写不敏感的。移除标点符号:标点符号会干扰单词的计数。将文章拆…

算法-Z-order算法

1、学习背景 激光雷达点云是无序的,Transformer只能对有序的数据进行处理,为了将Transformer用在点云处理中,需要将无序的点云转换成有序的数据,另外,由于Transformer会用到局部注意力机制,所以将无序的数据…

ElasticSearch 数据聚合与运算

1、数据聚合 聚合(aggregations)可以让我们极其方便的实现数据的统计、分析和运算。实现这些统计功能的比数据库的 SQL 要方便的多,而且查询速度非常快,可以实现近实时搜索效果。 注意: 参加聚合的字段必须是 keywor…