版权声明:本文为博主原创文章,转载请注明原文出处!
作者:阿振
写作时间:2020-06-13 又是一个周末
开篇
延续上篇的《Shapfile属性操作之增》,这篇我们来聊聊如何进行属性删除。使用的工具依旧是我们的GDAL库。
案例介绍
这里我们要处理的数据是中国地图分省的矢量Shapefile,是一个面状数据。在上篇中我们给该数据添加了一个属性字段Abbr
用以表示省的简称。这篇我们再把该字段给删除掉。
删除的方法包括两部:首先,从属性表中找到该字段,然后删除该字段。
代码展示
Talk is cheap. Show me the code.
1 | from osgeo import ogr |
方法总结
- GDAL的图层
ogr.Layer
类提供了DeleteField()
方法用于删除字段,但是该方法传入的参数必须是要删除字段的索引编号。 - 我们一般的业务需求是根据字段名称去进行删除操作,所以我自定义了一个
get_field_index_by_name()
函数用于从给定图层中查找给定字段名称对应的索引编号。该函数接受两个参数,第一个是图层变量,第二个是字段名称。该函数实现的逻辑是遍历传入的图层中的字段的定义,找到和给定名称相同的字段并返回其索引。有一种特殊情况是传入的字段名称在当前图层中并不存在,对于这种情况,我们直接抛出一个ValueError
错误。 - 这样我们就可以采用
layer
的DeleteField()
方法进行删除了。