在QGIS中给矢量数据属性编号的一种方法

news2024/11/18 16:51:00

目录

写在文章前

一、给要素编号用哪些功能

二、实现一个最简单的编号

1.数据准备

2.编辑字段计算器表达式

3.查看编号结果

三、更加复杂的编号

1.使用UUID编号

2.根据单个属性排序后编号

3.根据多个属性排序后编号

4.拼接字符串进行编号

5.根据时间编号及实现


写在文章前

众所周知,在社会中存在着各种编号,如:邮政编码、订单编号、身份证号等,这些编号大多用于对事物进行科学地辨识。在地理空间数据中,空间数据不仅存在空间信息,还有属性及时间信息。对于矢量数据文件,其大多是以“表”的形式存在,也就是说矢量数据的每个要素(每行记录)都是可以被编号的。

本文将从怎么利用QGIS的功能对其所能管理的矢量数据进行编号,文中所列举的例子可能不太符合实际情况,但是例子中用到的方法是可以适用于各类与空间信息有关的调查项目中需要编号的场景。

一、给要素编号用哪些功能

给要素编号的本质是给要素的某一个属性赋值,所赋予要素的值是符合编号规则的字符串(数据类型是字符串型)。在QGIS中,常见的给属性赋值的功能为字段计算器,除此之外也有使用python脚本、工具箱、插件的方式来给要素的某一个属性赋值。QGIS的字段计算器提供了丰富的函数,利用好这些函数就可以生成各种各样的符合需求的编号。这使得QGIS在数据生产中有一定优势。

在读取常见的shapefile、kml、geojson、gml等常见矢量文件同时,QGIS也可以读取Excel、csv等格式的文件为“图层”,也就是说,无空间信息的纯属性数据也可以通过QGIS来编辑

二、实现一个最简单的编号

通常我们编号是根据事先规定好的编码规则进行的,所以编号前需要先根据编码规则分析一下使用哪些函数来实现编码规则。

在本节,我们使用最简单的编号规则(4位顺序号)来演示一下有关功能。

1.数据准备

单击主菜单【图层】【创建图层】【新建临时图层】,创建一个包含“ID”和“Name”属性的无几何图形临时图层文件。这里创建无几何图形的图层是为了简化操作,省去给空间数据赋值的过程。

数据创建入口

 无几何图形临时图层的配置

 使用添加要素按钮给10个要素,给Name填写十个随机名字,也可以不写。

2.编辑字段计算器表达式

在属性表单击字段计算器按钮,打开字段计算器。

在字段计算器表达式窗口输入以下表达式: 

lpad(@id,4,0)

注意不要勾选仅更新1个所选要素 

3.查看编号结果

 可以发现,已经将ID属性赋值为4位数字长度的顺序号。

三、更加复杂的编号

1.使用UUID编号

使用uuid编号实现比较简单,只需要打开字段计算器,在表达式框中输入以下表达式,运行即可。

 uuid( 'WithoutBraces' )

几种变式:

不带短横,如:c2f4bed53daf4498b7216ea155a08d2b

replace(  uuid( 'WithoutBraces' ),'-','') 

不带短横、大写,如:83397DED76A348838298C2351FEB9FC0

upper( replace(  uuid( 'WithoutBraces' ),'-','') )

2.根据单个属性排序后编号

由于字段计算器提供的函数无法直接给要素排序。但我们可以通过工具箱对属性排序,排序后,要素的“@id“变量会根据排序有所改变。下面还是使用上述数据,根据属性排序编号。

在主菜单找到:

【数据处理】【工具箱】【矢量通用工具】【按表达式排序(Order by expression)】

选中数据图层,表达式选择Name(即根据Name属性的排序),勾选升序排序(不勾选则为降序排序)。

打开字段计算器,使用第二节的表达式对ID字段进行更新。

从数据列表中可以看到ID已经修改为按照Name升序排序的4位序列号。 

上图是ID已经修改为按照Name倒序排序的4位序列号。

3.根据多个属性排序后编号

根据多个属性进行排序有多种方法。

方法一:

利用排序工具中的表达式,拼接多个字段,但这种方式的灵活性相对低一点,不能实现多个属性按各自的规则(升序、倒序)进行组合。

方法二:

我们可以使用【执行SQL语句】(executesql)工具对图层要素进行排序,这样可以实现多个属性按各自的规则(升序、倒序)进行组合。这种方式需要对SQL语句有一定了解。

这里我们介绍一下方法二:

首先准备数据,还是利用上述图层,在其基础上再加一个School属性。描述人物所属的学校

 打开工具箱,进行如下配置:

在附加输入的数据源选中需要处理的图层。

在SQL查询中输入以下SQL语句:

select * from input1 order by School desc,Name asc

以上SQL的意思为根据School排倒序,在根据School排序的基础上,School属性一样的要素再根据Name排升序。

 在几何图形类型选择没有几何图形。单击运行。

 上图是运行成果,可以看到排序效果。

在上述基础上,再次运行lpad(@id,4,0)表达式,得出以下结果。

如果需要对每个学校单独进行编号,可以用执行SQL的方式实现。

在执行SQL工具中,输入以下SQL语句,选择无几何图形,单击运行。

SELECT 
    CONCAT(School,LPAD((ROW_NUMBER() OVER(PARTITION BY School ORDER BY Name)),4,'0')) AS ID,
    Name,
    School
FROM 
    input1
ORDER BY 
    Name ASC;

 以下是执行结果:

4.拼接字符串进行编号

在实际情况中,对事物的编号,不仅只有序列号,还有特征码,组织机构信息等等,出于便于管理的需要,编号时通常会拼接一些字符串来生成编号。用QGIS实现拼接字符串编号通常不难。在业务不复杂的情况下,只需要使用字段计算器的拼接功能就可以实现,对于复杂一些的可以通过SQL语句、python脚本实现,第三小结的最后一个例子就是一种使用SQL的情况。

假设有这样一份数据:

stuffNo为员工编号,type为学校代码,School为学校名称,Name为姓名。

假设现在要生成一个全市学校职工的名单,那么可以拼接学校代码和员工代码实现最简单的全是学校职工编号。

在字段计算器中拼接字段即可,拼接符号为”||“

效果如下:

5.根据时间编号及实现

假如有这样一分外卖订单数据,拥有订单号、订单名称,下单时间等等属性信息,送货地址数据为空间信息,这样的数据就是一份典型的地理空间数据。

输入以下公式:

 format_date( "CreateTime",'yyyyMMdd')||lpad(@id,8,0)

 效果如下:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速学习微服务保护框架--Sentinel

学习一个框架最好的方式就是查看官方地址,sentinel是国内阿里巴巴公司的,官网更方便官网 官网 微服务保护框架 Sentinel 1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微…

VScode使用SSH去编辑远程文件

Visual Studio Code (VS Code) 是一款强大的文本编辑器,它支持使用 SSH 连接远程服务器进行开发。通过 SSH 连接远程服务器,您可以在本地编写程序,并将代码上传到远程服务器执行。 安装插件 需要安装这两个插件 安装完成之后,右…

ROS-PX4仿真笔记_1

offbord模式测试 rosrun offboard_pkg position stablelize模式 lqr控制器实验 roslaunch px4 fast_test.launch 无人机起飞1.5-2m sh mybot_gazebo.sh先点击mode,再点击cmd,才能打开offbord模式 minijerk实验 roslaunch px4 fast_test.launch sh …

KBU1510-ASEMI开关电源整流桥KBU1510

编辑:ll KBU1510-ASEMI开关电源整流桥KBU1510 型号:KBU1510 品牌:ASEMI 芯片个数:4 封装:KBU-4 恢复时间:>50ns 工作温度:-55C~150C 浪涌电流:200A 正向电流&am…

c++ 学习之 强制类型转换运算符 const_cast

看例子怎么用 int main() {int a 1;int* p a;// 会发生报错// 如果学着 c的风格类型转换int* pp (int*)a;*pp 1; // 编译不报错,但是运行报错// const_castconst int n 5;const std::string s "lalal";// const cast 只针对指针,引用&…

HTTPS 加密全过程

加密协议以前是SSL,现在都是TLS, 而证书现在大多数都是SSL证书 抓包流程: TCP三次握手过后, 客户端发送Client Hello 服务器相应Server Hello 服务器再次响应发送证书: 服务器再发送公钥:

Java线程池原理解析

目录 一、为什么引入线程池技术?二、Executor框架2.1 Runnable、Callable与Future接口2.2 Executor接口2.2.1 Executor2.2.2 ExecutorService 三、Java中线程池的工作原理3.1 ThreadPoolExecutor中核心的变量及常量3.2 线程池的任务调度逻辑3.2.1 addWorker方法3.2.…

Pycharm远程debug代码,一直进入remote_sources

最近debug发现代码一直跳转到 AppData\Local\JetBrains\PyCharm2022.2\remote_sources\xxx这样的目录下,查找百度也没有找到解决的方法。 最后发现,在Run的配置这,有一个Path mappings是空的,把这里的映射填成本地项目和远程项目…

Springboot+vue4S店车辆管理系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue4S店车辆管理系统(有报告),Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的4S店车辆管理系统,采用M&#xff08…

Java子类继承父类私有方法属性问题讲解

Java子类继承父类私有方法属性问题讲解 结论一、案例准备二、测试方法:使用反射获取子类私有方法和私有属性具体操作(获取私有方法)具体操作(获取私有属性) 结论 Java 父类私有方法和私有属性不能被子类继承。 一、案…

IDEA 2023.2.2图文安装教程及下载

IDE 系列的第二个年度更新现已发布,涵盖 IntelliJ IDEA、WebStorm、PyCharm、DataGrip、GoLand、DataSpell 以及 All Products Pack 订阅中包含的其他工具。该版本还包括多项用户体验增强功能,例如 Search Everywhere(随处搜索)中…

Layer 2:百倍利润无限可能的首选赛道

截至 2023 年 9 月,以太坊在过去一年中上涨了 22%,表现优于大多数大型智能合约区块链。第 2 层 (L2) 在推动以太坊价值方面发挥了重要作用。 Layer 2 可以增强以太坊的可扩展性,使用户的网络成本降低 100 倍。 Coinbase 于 8 月推出了 BASE…

彻底弄懂Java中的MultipartFile接口和File类

前言 不管是在项目中还是日常需求,我们总是有操作文件数据的需求,Java中操作文件不可避免就要使用File类,而Spring中为我们提供了一个操作文件的接口,通过该接口我们可以获取用户上传的文件对象并写入文件系统中。 文章目录 前言…

【基础篇】二、Flink的批处理和流处理API

文章目录 0、demo模块创建1、批处理有界流2、流处理有界流3、流处理无界流4、The generic type parameters of Collector are missing 0、demo模块创建 创建个纯Maven工程来做演示,引入Flink的依赖:(注意不同本版需要导入的依赖不一样&#…

【ComfyUI】MacBook Pro 安装(Intel 集成显卡)

文章目录 环境概述配置pip镜像配置pip代理git配置(选配)下载comfyUI代码创建、激活虚拟环境下载依赖安装torchvision启动comfyUI为什么Mac不支持CUDA,即英伟达的显卡?安装Intel工具包 环境 显卡:Intel Iris Plus Grap…

自定义步骤条setup

自定义步骤条 话不多说 先上效果 <div class"process_more"><!-- 步骤条 --><divclass"set-2":key"index"v-for"(item, index) in recordsList"><div class"set-3"><div class"content_b…

pytorch的基本运算,是不是共享了内存,有没有维度变化

可以把PyTorch简单看成是Python的深度学习第三方库&#xff0c;在PyTorch中定义了适用于深度学习的基本数据结构——张量&#xff0c;以及张量的各类计算。其实也就相当于NumPy中定义的Array和对应的科学计算方法&#xff0c;正是这些基本数据类型和对应的方法函数&#xff0c;…

并购交易:Truist Financial正在商谈以100亿美元将保险经纪业务出售

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;纽交所上市公司Truist Financial(TFC)正在商谈以100亿美元将保险经纪业务出售给Stone Point Capital。 这笔交易可能会加强Truist Financial的资本状况&#xff0c;在监管机构试图提高大型银行的资…

AAPT2简介

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、使用介绍3.3 编译3.2 链接3.3 dump…

[CISCN 2019初赛]Love Math - RCE(异或绕过)

[CISCN 2019初赛]Love Math 1 解题流程1.1 分析1.2 解题题目代码: <?php //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET[c]))