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

相关文章

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务