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文件中某字段的指定属性值的主要内容,如果未能解决你的问题,请参考以下文章