IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> [QGIS]常用操作--字段增删与数据过滤 -> 正文阅读

[Python知识库][QGIS]常用操作--字段增删与数据过滤

文章中使用的QGIS版本为:3.10.7-A Coru?a

字段增删

手动设置图层属性进行字段增删

新增

  • 选中需要操作的图层,点击鼠标右键,选择"属性",打开属性图层属性信息窗口
    attribute_info
  • 选中左侧"字段"栏,根据下图步骤,打开编辑,新增字段
    add_field

删除

  • 删除操作与新增操作都是在"字段"栏进行,如下图
    delete_field
    注意:以上操作需要打开编辑,操作的结果在关闭编辑时才会同步到数据源

使用python代码进行字段增删

  • QGIS支持使用python代码处理数据,如下图所示,使用python代码新增和删除字段,本文演示了新增字段,下方提供了删除字段的代码,感兴趣的读者可以自行测试
    code
import os
import sys
from qgis.gui import *
from qgis.core import *
import qgis.utils
from qgis.core import QgsProject

mapCanvas = 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子句设置过滤表达式,支持精确查找,模糊查找等过滤方式,如下图所示
    filter

使用python进行过滤

  • 对字段过滤查询,同样可以使用代码进行,这里使用python代码向大家演示下模糊查询,其它类型的查询大家可以根据自己需要,修改sql即可,代码如下
import os
import sys
from qgis.gui import *
from qgis.core import *
import qgis.utils
from qgis.core import QgsProject

mapCanvas = 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()))

code_filter
以上就是关于qgis中图层字段增删及按照字段过滤要素的方法,希望能对您有所帮助,如对上述有疑问或者建议,欢迎私信~~

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:36:07  更:2021-07-11 16:36:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 17:13:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码