[QGIS]常用操作--字段增删与数据过滤
文章中使用的QGIS版本为:3.10.7-A Coruña
字段增删及数据过滤
- 字段增删
- 手动设置图层属性进行字段增删
- 新增
- 删除
- 使用python代码进行字段增删
- 数据过滤
- 手动进行filter设置进行过滤
- 使用python进行过滤
字段增删
手动设置图层属性进行字段增删
新增
- 选中需要操作的图层,点击鼠标右键,选择"属性",打开属性图层属性信息窗口
- 选中左侧"字段"栏,根据下图步骤,打开编辑,新增字段
删除
- 删除操作与新增操作都是在"字段"栏进行,如下图
注意:以上操作需要打开编辑,操作的结果在关闭编辑时才会同步到数据源
使用python代码进行字段增删
- QGIS支持使用python代码处理数据,如下图所示,使用python代码新增和删除字段,本文演示了新增字段,下方提供了删除字段的代码,感兴趣的读者可以自行测试
import os
import sys
from qgis.gui import *
from qgis.core import *
import qgis.utils
from qgis.core import QgsProjectmapCanvas = iface.mapCanvas()
curlayer = mapCanvas.currentLayer()if curlayer is None:print("%s:%s" % ("Error","图层不可用"))
else:print("%s:图层[%s]开始字段处理" % ("Info", curlayer.name()))curlayer.startEditing()# 新增字段# 判断字段是否存在,若不存在再创建for field in ["LineName", "RoadName"]:if curlayer.fields().indexFromName(field) < 0:# 字段不存在lineNameField = QgsField(field, QVariant.String)ret = curlayer.addAttribute(lineNameField)if ret is False:print("%s:图层[%s]添加字段[%s]失败!" % ("Error", curlayer.name(), field))else:print("%s:图层[%s]添加字段[%s]成功!" % ("Info", curlayer.name(), field))else:print("%s:图层[%s]不需要添加字段[%s]" % ("Info", curlayer.name(), field))# 删除字段# 判断字段是否存在,若存在再删除# del_field = "LineName"# idx = curlayer.fields().indexFromName(del_field)# if idx > 0:# # 字段存在# ret = curlayer.deleteAttribute(idx)# if ret is False:# print("%s:图层[%s]删除字段[%s]失败!" % ("Error", curlayer.name(), del_field))# else:# print("%s:图层[%s]删除字段[%s]成功!" % ("Info", curlayer.name(), del_field))# else:# print("%s:图层[%s]不需要删除字段[%s]" % ("Info", curlayer.name(), del_field))curlayer.commitChanges()print("%s:图层[%s]字段处理完成" % ("Info", curlayer.name()))
数据过滤
- 在查看数据时,我们有时候需要从大量数据中对某一字段为特定值的进行过滤,此时可以使用filter进行属性过滤得到想要的数据,类似数据库查询的where语句
手动进行filter设置进行过滤
- 在非编辑状态,右键选中的图层,选择"过滤"
- 在弹出的"查询构建器"中,点击字段列表中某个,在右侧点击全部,可以获得该字段在图层的所有取值
- 在过滤表达式区域,可以参照SQL的WHERE子句设置过滤表达式,支持精确查找,模糊查找等过滤方式,如下图所示
使用python进行过滤
- 对字段过滤查询,同样可以使用代码进行,这里使用python代码向大家演示下模糊查询,其它类型的查询大家可以根据自己需要,修改sql即可,代码如下
import os
import sys
from qgis.gui import *
from qgis.core import *
import qgis.utils
from qgis.core import QgsProjectmapCanvas = iface.mapCanvas()
curlayer = mapCanvas.currentLayer()if curlayer is None:print("%s:%s" % ("Error","图层不可用"))
else:field = "NAME"value = "%湖%"value2 = "%河%"print("%s:图层[%s]开始过滤" % ("Info", curlayer.name()))# 先要保证图层已取消编辑if curlayer.isEditable():curlayer.commitChanges()# 精确查找# sql = '''{} = \'{}\''''.format(field, value)# 模糊查找sql = '''{name} LIKE \'{v}\' OR {name} LIKE \'{v2}\''''.format(name=field, v=value, v2=value2)ret = curlayer.setSubsetString(sql)if ret:print("%s:对图层[%s]按照[%s]过滤完成." % ("Info", curlayer.name(), sql))else:print("%s:对图层[%s]按照[%s]过滤失败!" % ("Error", curlayer.name(), sql))print("%s:图层[%s]过滤结束" % ("Info", curlayer.name()))
以上就是关于qgis中图层字段增删及按照字段过滤要素的方法,希望能对您有所帮助,如对上述有疑问或者建议,欢迎私信~~
[QGIS]常用操作--字段增删与数据过滤相关推荐
- 数据库常用操作之删除重复数据且仅保留一条
数据库常用操作之删除重复数据且仅保留一条 单字段操作 查询全部重复的数据 MySQL实现 Oracle实现 查询表中重复数据(id最小除外) MySQL实现 删除表中多余重复数据并且只留1条 MySQ ...
- MongoDB聚合(aggregate)常用操作及示例
简介 MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果. 有点类似 SQL 语句中的 count(*). 常用操作 表达式 描述 $mat ...
- 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作
上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...
- MySQL第二讲 - 数据表简单操作 与 “增删查改的开头部分- 增”- 细节狂魔
文章目录 前文知识点回顾 SQL语句 >>操作指令 (不区分大小写) 1.显示数据库:show databases; 2.创建数据库:create database 数据库名; [如果 ...
- pandas 按字符串肚脐眼 读取数据_十分钟学习pandas! pandas常用操作总结!
学习Python, 当然少不了pandas,pandas是python数据科学中的必备工具,熟练使用pandas是从sql boy/girl 跨越到一名优秀的数据分析师傅的必备技能. 这篇pandas ...
- sql两个表查不同数据_产品操作MySQL第6篇 – 数据过滤-WHERE子句
MYSQL 本资料为产品岗位作为日常工作参考,语言口语化 At 2019/4/26 By David.Yang 如何使用限定条件来进行数据过滤? 在前问当中,我们已经学会到了SELECT查询, 在过程 ...
- dataframe 添加一行_R语言Data Frame数据框常用操作
来源 | R友舍 Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列 ...
- Mongodb数据库命令端常用操作
数据库基本命令操作 数据库常用命令 1.Help查看命令提示 help db.help(); db.yourColl.help(); db.youColl.find().help(); rs.help ...
- c#读取excel两列数据并绘制xy曲线_用Python轻松搞定Excel中的20个常用操作
来源 |早起Python(ID: zaoqi-python) Excel与Python都是数据分析中常用的工具,本文将使用动态图(Excel)+代码(Python)的方式来演示这两种工具是如何实现数据 ...
最新文章
- gdk_draw_arc这个函数
- Async await 异步编程说明
- [Qt入门]模态和非模态对话框创建
- 如何使antd中table表格不换行
- window.print 点击取消后再次打印无效_教程 | 图书馆自助复印打印机使用方法
- canvas笔记-canvas中用户与图形交互
- 域对象的引用,ActionContext 和ServletActionContext类的使用
- spring-boot子模块打包去掉BOOT-INF文件夹
- 使用opencv实现matlab中的imfill填充孔洞功能
- 利用ARCGIS制作MIKE21边界文件
- 你应该懂得的关于电脑配置冷知识
- html5页面蒙版原理,js如何实现蒙版效果
- 为自己选一个网络硬盘
- springMVC前后端数据交互
- iOS7设置状态栏颜色
- 受限玻尔兹曼机(RBM)学习笔记(四)对数似然函数
- python右键idel消失问题
- 【backtrader保姆级教学】日内区间突破型策略
- python apply lambda if_在Pandas中使用Apply Lambda函数和多个if语句
- 【JavaScript】关于[object Object]
热门文章
- Cheat—— 给Linux初学者和管理员一个终极命令行助手
- Python Wechaty 微信聊天机器人 padlocal协议搭建指南
- 8种用Python实现定时执行任务的方案,一定有你用得到的
- 在电脑浏览器网页上倍速观看视频
- 工作分析文献综述_文献综述的写作步骤和注意事项
- [Ting's笔记Day3]解决Git常见错误non-fast-forward问题
- C++中的各种“虚“-- 虚函数、纯虚函数、虚继承、虚基类、虚析构、纯虚析构、抽象类讲解
- js获取中文汉字首字母
- 中国科学院大学计算机录取比,2020-2021年中国科学院大学计算机软件与理论考研招生情况、分数线、...
- 可摇尾巴,可撸,一只无脸机器猫为什么这么火?