def array2raster(newRaster, RefRaster, array, noData, dataType):
#data type conversion
NP2GDAL_CONVERSION = { "uint8": 1, "int8": 1, "uint16": 2, "int16": 3,
"uint32": 4, "int32": 5, "float32": 6, "float64": 7,
"complex64": 10, "complex128": 11,
}
#get info from reference raster
rfRaster = gdal.Open(RefRaster)
geotransform = rfRaster.GetGeoTransform()
originX = geotransform[0]
originY = geotransform[3]
pixelWidth = geotransform[1]
pixelHeight = geotransform[5]
cols = array.shape[1]
rows = array.shape[0]
#create new raster
outRaster = gdal.GetDriverByName('GTiff').Create(newRaster, cols, rows,1, NP2GDAL_CONVERSION[dataType])
outRaster.SetGeoTransform((originX, pixelWidth, 0, originY, 0, pixelHeight))
#write array to band
outband = outRaster.GetRasterBand(1)
outband.SetNoDataValue(noData)
outband.WriteArray(array)
#define new raster projection
outRasterSRS = osr.SpatialReference()
outRasterSRS.ImportFromWkt(rfRaster.GetProjectionRef())
outRaster.SetProjection(outRasterSRS.ExportToWkt())
#write raster
outband.FlushCache()
del rfRaster
评论列表
文章目录