1. 自定义函数
数据类型:datatype = gdal.GDT_CFloat32
文件类型:driver = gdal.GetDriverByName("ENVI")
def readTiff(inputfile):
dataset = gdal.Open(inputfile)
if dataset == None:
print(inputfile+" can't open !!!")
width = dataset.RasterXSize
height = dataset.RasterYSize
bands = dataset.RasterCount
data = dataset.ReadAsArray(0,0,width,height)
geotrans = dataset.GetGeoTransform()
proj = dataset.GetProjection()
return data, geotrans, proj
#保存tif文件函数
def writeTiffEnvi(data,geotrans,proj,path):
if 'int8' in data.dtype.name:
datatype = gdal.GDT_Byte
elif 'float16' in data.dtype.name:
datatype = gdal.GDT_Float32#GDT_Ufloat16
elif 'complex64' in data.dtype.name:
datatype = gdal.GDT_CFloat32
else:
datatype = gdal.GDT_Float32
if len(data.shape) == 3:
bands, height, width = data.shape
elif len(data.shape) == 2:
data = np.array([data])
bands, height, width = data.shape
#创建文件
driver = gdal.GetDriverByName("ENVI")
dataset = driver.Create(path, int(width), int(height), int(bands), datatype)
if(dataset!= None):
dataset.SetGeoTransform(geotrans) #写入仿射变换参数
dataset.SetProjection(proj) #写入投影
for i in range(bands):
dataset.GetRasterBand(i+1).WriteArray(data[i])
del dataset
2. 输出结果
- envi格式的影像及其头文件
- envi中打开效果
- 文件metadata信息