python实现使用GDAL实现矢量转栅格

8 篇文章 5 订阅

需求


现在有一个shp文件和栅格数据,需要将shp转换成和栅格数据空间位置一致且像元大小一致的栅格数据。ArcGIS速度比较慢,使用GDAL将shp文件转为和目标栅格同样大小的栅格
 

转换前
转换前

 

目标影像

 

代码

from osgeo import gdal, gdalconst
from osgeo import ogr

rasterFile = 'F:/**0416.dat'  # 原影像
shpFile = 'F:/**小麦.shp'  # 裁剪矩形

dataset = gdal.Open(rasterFile, gdalconst.GA_ReadOnly)

geo_transform = dataset.GetGeoTransform()
cols = dataset.RasterXSize  # 列数
rows = dataset.RasterYSize  # 行数

x_min = geo_transform[0]
y_min = geo_transform[3]
pixel_width = geo_transform[1]

shp = ogr.Open(shpFile, 0)
m_layer = shp.GetLayerByIndex(0)
target_ds = gdal.GetDriverByName('GTiff').Create("F:/小麦test.dat", xsize=cols, ysize=rows, bands=1,
                                                 eType=gdal.GDT_Byte)
target_ds.SetGeoTransform(geo_transform)
target_ds.SetProjection(dataset.GetProjection())

band = target_ds.GetRasterBand(1)
band.SetNoDataValue(0)
band.FlushCache()
gdal.RasterizeLayer(target_ds, [1], m_layer, options=["ATTRIBUTE=val"]) # 跟shp字段给栅格像元赋值
# gdal.RasterizeLayer(target_ds, [1], m_layer) # 多边形内像元值的全是255
del dataset
del target_ds
shp.Release()



## 结果

最终栅格化的结果如下图所示

完成后


 

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
您好!要使用GDAL库在Python中进行栅格矢量操作,您可以按照以下步骤进行: 1. 安装GDAL库:在Python环境中安装GDAL库,可以使用pip命令来安装,如下所示: ``` pip install gdal ``` 2. 导入GDAL库:在Python脚本中导入GDAL库,可以使用以下代码: ``` from osgeo import gdal, ogr ``` 3. 打开栅格文件:使用GDAL库的Open函数打开栅格文件,如下所示: ``` raster_ds = gdal.Open('path/to/raster/file.tif') ``` 4. 获取栅格图层:使用GDAL库的GetRasterBand函数获取栅格图层,如下所示: ``` band = raster_ds.GetRasterBand(1) ``` 5. 创建矢量数据源:使用GDAL库的CreateDataSource函数创建矢量数据源,如下所示: ``` driver = ogr.GetDriverByName('ESRI Shapefile') vector_ds = driver.CreateDataSource('path/to/vector/file.shp') ``` 6. 创建矢量图层:使用矢量数据源的CreateLayer函数创建矢量图层,如下所示: ``` layer = vector_ds.CreateLayer('layer_name', geom_type=ogr.wkbPolygon) ``` 7. 定义矢量属性:使用图层的CreateField函数定义矢量属性,如下所示: ``` field_defn = ogr.FieldDefn('attribute_name', ogr.OFTString) layer.CreateField(field_defn) ``` 8. 栅格矢量使用GDAL库的Polygonize函数将栅格换为矢量,如下所示: ``` gdal.Polygonize(band, None, layer, 0, [], callback=None) ``` 9. 保存矢量文件:使用矢量数据源的SyncToDisk函数保存矢量文件,如下所示: ``` vector_ds.SyncToDisk() ``` 这些是使用GDAL库在Python中进行栅格矢量的基本步骤。您可以根据自己的需求对代码进行进一步的调整和优。希望对您有所帮助!如果有任何问题,请随时提问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值