python批量删除shapefile文件中某字段的指定属性值

Posted 空中旋转篮球

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python批量删除shapefile文件中某字段的指定属性值相关的知识,希望对你有一定的参考价值。

一、实现目标

删除shapefile文件某个字段中满足特定条件的要素,主要用于数据筛选。

使用到的python库为gdal,比如本文中删除testdata.shp文件中ANGLE字段属性=strValue的要素,属性表中每一行记录即为一个要素。

strFilter = "ANGLE = '" + str(strValue) + "'"

Python具体实现代码如下:

from osgeo import gdal
#打开是矢量文件
#注册所有驱动
from osgeo import ogr

gdal.AllRegister()
#解决中文路径乱码问题
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "NO")
driver = ogr.GetDriverByName('ESRI Shapefile')
pFeatureDataset = driver.Open(r'C:/Users/administrator/Desktop/testdata.shp',1)  #英文路径
pFeaturelayer = pFeatureDataset.GetLayer(0)

#按条件查询空间要素,本例查询字段名为Value,字段值为0的所有要素。
strValue = 1
strFilter = "ANGLE = '" + str(strValue) + "'"
pFeaturelayer.SetAttributeFilter(strFilter)

#删除第二部查询到的矢量要素,注意,此时获取到的Feature皆为选择的Feature.
pFeatureDef = pFeaturelayer.GetLayerDefn()
pLayerName = pFeaturelayer.GetName()
pFieldName = "ANGLE"
pFieldIndex = pFeatureDef.GetFieldIndex(pFieldName)
for pFeature in pFeaturelayer:
    pFeatureFID = pFeature.GetFID()
    pFeaturelayer.DeleteFeature(int(pFeatureFID))
strSQL = "REPACK " + str(pFeaturelayer.GetName())
pFeatureDataset.ExecuteSQL(strSQL, None, "");
pFeatureLayer = None
pFeatureDataset = None

以上是关于python批量删除shapefile文件中某字段的指定属性值的主要内容,如果未能解决你的问题,请参考以下文章

ArcGIS批量拆分属性表中某一字段

Python-工具-批量替换EXCLE文件中某列的值

ArcGis Python脚本——批量删除字段

PHP怎样批量更新数据表中某字段的值?

如何将mysql数据库中某表某字段的数据批量导入到另外一个数据库指定表指定字段中

mysql 怎么通过sql语句批量去掉某一个表中某一个字段的多余字符