gdal:矢量裁剪栅格数据

#!usr/bin/python
# -*- coding: utf-8 -*-
from osgeo import gdal
from osgeo import ogr
from osgeo.gdalconst import GDT_Byte, GDT_Float32, GDT_UInt16
import os
from tqdm import tqdm

shp_path = '/media/dell/CH3/fishnet/fishnet.shp'
img_path ='/media/dell/CH3/imges.tif'
save_path ='/media/dell/CH3/savepath/'
#field_paths = os.chdir(field_path)

os.chdir("/media/dell/CH3/savepath/")
driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open(shp_path, 0)
layer = ds.GetLayer()
numFeatures = layer.GetFeatureCount()

for i in tqdm(range(numFeatures)):
    feature = layer.GetNextFeature()
    id = feature.GetField('Name')
    save_name=save_path+id+'.tif'  
    select= "Name=" + "'"+ str(id)+ "'"
    result = gdal.Warp(
                save_name,
                img_path,
                format = 'GTiff',
                cutlineDSName = shp_path,
                cutlineWhere=select, # 用于裁剪的矢量
                cropToCutline = True, # 是否使用cutlineDSName的extent作为输出的界线
                dstNodata = 255 # 输出数据的nodata值
            )
    reclass=result.GetRasterBand(1).ReadAsArray().astype(int) #重分类过程
    '''
    '''   
    band=result.GetRasterBand(1)
    gtiff_driver =gdal.GetDriverByName('GTiff')
    result1 = gtiff_driver.Create(save_name,band.XSize, band.YSize, 1, GDT_Byte)
    result1.SetProjection(result.GetProjection())  
    result1.SetGeoTransform(result.GetGeoTransform())  
    result1.WriteArray(reclass) #也可直接result
    result1.FlushCache()

    del result, reclass
print("finish!!!!")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值