Simplest way to save array into raster file in Python
A tif raster could be considered as 'array+proj+geotransforms'. If you want to write a array to tif,you can refer to the following code
dst_filename = 'xxx.tiff'
x_pixels = 100 # number of pixels in x
y_pixels = 100 # number of pixels in y
driver = gdal.GetDriverByName('GTiff')
dataset = driver.Create(dst_filename,x_pixels, y_pixels, 1,gdal.GDT_Float32)
dataset.GetRasterBand(1).WriteArray(array)
# follow code is adding GeoTranform and Projection
geotrans=data0.GetGeoTransform() #get GeoTranform from existed 'data0'
proj=data0.GetProjection() #you can get from a exsited tif or import
dataset.SetGeoTransform(geotrans)
dataset.SetProjection(proj)
dataset.FlushCache()
dataset=None
Han Zhengzu
I am a researcher focusing on atmospheric environment with an interest in a deeper understanding on air pollution.
Updated on June 05, 2022Comments
-
Han Zhengzu almost 2 years
With one 2-d array in the shape of (100, 100), I want to save it into raster file in
.tiff
format.I can use
gdal
package to readtiff
files which are already exist. But I still can't find a simple way to transform the 2-d array into tiff file.Using
plt.imsave("xx.tif",array)
ordef array_to_raster(array): """Array > Raster Save a raster from a C order array. :param array: ndarray """ dst_filename = 'xxx.tiff' x_pixels = 100 # number of pixels in x y_pixels = 100 # number of pixels in y driver = gdal.GetDriverByName('GTiff') dataset = driver.Create( dst_filename, x_pixels, y_pixels, 1, gdal.GDT_Float32, ) dataset.GetRasterBand(1).WriteArray(array) dataset.FlushCache() # Write to disk. return dataset, dataset.GetRasterBand(1)
They all failed to achieve my target. The second method was adapted from here which can transform an array into a
geotiff
with a projection.Is there some simple way to save array into
.tiff
, so I can call it by import thetiff
file next time.Any advices would be appreciate.