def write_data(outname,im,GeoTransform,Projection):
'''
The function write the image on the hard drive.
Input:
outname: the name of the file to be written
im: the image cube
GeoTransform: the geotransform information
Projection: the projection information
Output:
Nothing --
'''
nl = im.shape[0]
nc = im.shape[1]
if im.ndim == 2:
d=1
else:
d = im.shape[2]
driver = gdal.GetDriverByName('GTiff')
dt = im.dtype.name
# Get the data type
if dt == 'bool' or dt == 'uint8':
gdal_dt=gdal.GDT_Byte
elif dt == 'int8' or dt == 'int16':
gdal_dt=gdal.GDT_Int16
elif dt == 'uint16':
gdal_dt=gdal.GDT_UInt16
elif dt == 'int32':
gdal_dt=gdal.GDT_Int32
elif dt == 'uint32':
gdal_dt=gdal.GDT_UInt32
elif dt == 'int64' or dt == 'uint64' or dt == 'float16' or dt == 'float32':
gdal_dt=gdal.GDT_Float32
elif dt == 'float64':
gdal_dt=gdal.GDT_Float64
elif dt == 'complex64':
gdal_dt=gdal.GDT_CFloat64
else:
print 'Data type non-suported'
exit()
dst_ds = driver.Create(outname,nc,nl, d, gdal_dt)
dst_ds.SetGeoTransform(GeoTransform)
dst_ds.SetProjection(Projection)
if d==1:
out = dst_ds.GetRasterBand(1)
out.WriteArray(im)
out.FlushCache()
else:
for i in range(d):
out = dst_ds.GetRasterBand(i+1)
out.WriteArray(im[:,:,i])
out.FlushCache()
dst_ds = None
评论列表
文章目录