Shapefile属性操作之删

2024-05-02 14:08
文章标签 操作 属性 shapefile

本文主要是介绍Shapefile属性操作之删,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 开篇
  • 案例介绍
  • 代码展示
  • 方法总结


版权声明:本文为博主原创文章,转载请注明原文出处!

作者:阿振

写作时间:2020-06-13 又是一个周末


开篇

延续上篇的《Shapfile属性操作之增》,这篇我们来聊聊如何进行属性删除。使用的工具依旧是我们的GDAL库。

案例介绍

这里我们要处理的数据是中国地图分省的矢量Shapefile,是一个面状数据。在上篇中我们给该数据添加了一个属性字段Abbr用以表示省的简称。这篇我们再把该字段给删除掉。

删除的方法包括两部:首先,从属性表中找到该字段,然后删除该字段。

代码展示

Talk is cheap. Show me the code.

from osgeo import ogr
ogr.UseExceptions()# 从给定图层中读取字段的定义,根据给定字段名称找到该字段的索引编号
def get_field_index_by_name(layer: ogr.Layer, name: str):defs: ogr.FeatureDefn = layer.GetLayerDefn()for i in range(defs.GetFieldCount()):if name == defs.GetFieldDefn(i).GetName():return iraise ValueError(f'{name} not found')# 打开一个Shapefile文件
ds: ogr.DataSource = ogr.Open('../data/省级行政区.shp', update=True)
layer: ogr.Layer = ds.GetLayer()
# 删除Abbr字段
index = get_field_index_by_name(layer, 'Abbr_1')
layer.DeleteField(index)
ds = None

方法总结

  1. GDAL的图层ogr.Layer类提供了DeleteField()方法用于删除字段,但是该方法传入的参数必须是要删除字段的索引编号。
  2. 我们一般的业务需求是根据字段名称去进行删除操作,所以我自定义了一个get_field_index_by_name()函数用于从给定图层中查找给定字段名称对应的索引编号。该函数接受两个参数,第一个是图层变量,第二个是字段名称。该函数实现的逻辑是遍历传入的图层中的字段的定义,找到和给定名称相同的字段并返回其索引。有一种特殊情况是传入的字段名称在当前图层中并不存在,对于这种情况,我们直接抛出一个ValueError错误。
  3. 这样我们就可以采用layerDeleteField()方法进行删除了。

这篇关于Shapefile属性操作之删的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/954432

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化