python實現使用GDAL實現矢量轉柵格

需求


現在有一個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()



## 結果

最終柵格化的結果如下圖所示

完成後


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章