python批处理栅格转矢量_python 矢量数据转栅格数据

from osgeo import gdal,osr,ogr

#定义投影

sr = osr.SpatialReference('LOCAL_CS["arbitrary"]')

#在内存中创建一个shape文件的图层,含有两个多边形

source_ds = ogr.GetDriverByName('Memory').CreateDataSource( 'shapefile' )

source_lyr = source_ds.CreateLayer('poly', srs=sr, geom_type=ogr.wkbPolygon )

source_lyr.CreateField(ogr.FieldDefn('TCODE',ogr.OFTReal))

wkt_geom = ['POLYGON((1020 1030 40,1020 1045 30,1050 1045 20,1050 1030 35,1020 1030 40))',

'POLYGON((1010 1046 85,1015 1055 35,1055 1060 26,1054 1048 35,1010 1046 85))']

#栅格值

celsius_field_values = [50,200]

for i in range(len(wkt_geom)):

feat = ogr.Feature(source_lyr.GetLayerDefn())

feat.SetGeometryDirectly(ogr.Geometry(wkt=wkt_geom[i]))

feat.SetField('TCODE', celsius_field_values[i])

source_lyr.CreateFeature(feat)

#在内存中,创建一个 100*100 大小的1波段的空白图像

#‘’代表不往磁盘上写的话,文件名可以是空

target_ds = gdal.GetDriverByName('MEM').Create('', 100, 100, 1, gdal.GDT_Byte )

target_ds.SetGeoTransform( (1000,1,0,1100,0,-1) )

target_ds.SetProjection( sr.ExportToWkt())

#调用栅格化函数。RasterizeLayer函数有四个参数,分别有栅格对象,波段,矢量对象,TCODE的属性值将为栅格值

err = gdal.RasterizeLayer( target_ds, [1], source_lyr,options= ["ATTRIBUTE=TCODE"])

#将内存中的图像,存储到硬盘文件上

gdal.GetDriverByName('GTiff').CreateCopy('rasterized_poly.tif', target_ds)

del target_ds

del source_ds

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值