python gdal.RasterizeLayer根据shp、geojson矢量创建栅格

python gdal.RasterizeLayer根据矢量创建栅格实现如下,RasterizeLayer支持shp、geojson等获取的矢量图层。

注意:burn_values=[1] 参数一定是序列[1],不能是1,否则报错:TypeError: not a sequence

import gdal
from osgeo import ogr

fg = 'polygon.geojson'  # polygon.shp
fi = 'input.tif'
fl = 'output.tif'

# open origin image
data = gdal.Open(fi, gdal.GA_ReadOnly)
geo_transform = data.GetGeoTransform()
x_res = data.RasterXSize
y_res = data.RasterYSize

# set out iamge
y_ds = gdal.GetDriverByName('GTiff').Create(fl, x_res, y_res, 1, gdal.GDT_Byte,
                                            options=['COMPRESS=LZW', 'BIGTIFF=YES'])
y_ds.SetGeoTransform(geo_transform)  
# set out memory
target_ds = gdal.GetDriverByName('MEM').Create('', x_res, y_res, 1, gdal.GDT_Byte)
target_ds.SetGeoTransform(geo_transform)
band = target_ds.GetRasterBand(1)
band.SetNoDataValue(0)

# open vector
mb_v = ogr.Open(fg)
mb_l = mb_v.GetLayer()
if len(mb_l) > 0:
    gdal.RasterizeLayer(target_ds, [1], mb_l, burn_values=[1])
y_buffer = band.ReadAsArray()
y_ds.WriteRaster(0, 0, x_res, y_res, y_buffer.tostring())
target_ds = None
y_ds = None

gdal

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值