gdal shp属性过滤并生成新文件

6 篇文章 0 订阅

从shp中用属性过滤要素,并保持到新数据中

# -*- coding: utf-8 -*-
# @Time : 2022/7/26 9:59
# @Author : xll

from osgeo import gdal, ogr, osr


if __name__ == '__main__':
    tif_grid_file = r"E:\data\14-17切图\p8shp\p8_new.shp"
    todo_file = r'E:\data\bc16\p8检查\mx5-23-12.txt'
    out_file = r'E:\data\bc16\p8检查\mx5-23-12.gpkg'

    tif_lst = []
    with open(todo_file, 'r') as fp:
        for line in fp.readlines():
            line = line.strip()
            tif_name = line
            tif_lst.append("name='{tif_name}'".format(tif_name=tif_name))

    outDriver = ogr.GetDriverByName("GPKG")
    outDataSource = outDriver.CreateDataSource(out_file)

    inDriver = ogr.GetDriverByName("ESRI Shapefile")
    inDataSource = inDriver.Open(tif_grid_file, 0)
    inLayer = inDataSource.GetLayer()

    inLayer.SetAttributeFilter(' or '.join(tif_lst))
    # inLayer.SetAttributeFilter("name='{tif_name}'".format(tif_name=tif_name))
    print(inLayer.GetFeatureCount())

    outDataSource.CopyLayer(inLayer, "p8")
    inLayer.SetAttributeFilter(None)

    inDataSource = None

    # Save and close DataSource
    outDataSource = None
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值