import numpy as np
from osgeo import gdal
def writeTIF_1_int(arr, dataset, name):
gtif_driver = gdal.GetDriverByName("GTiff")
out_ds = gtif_driver.Create(name, arr.shape[1], arr.shape[0], 1,
gdal.GDT_UInt16)
# 创建tif文件,name是文件名,后面跟着tif的size,1是写入波段数,最后一个是tif的数据格式,LANDSAT8 为uint16格式
ori_transform = dataset.GetGeoTransform()
# 获取原图的原点坐标信息
out_ds.SetGeoTransform(ori_transform)
# 设置裁剪出来图的原点坐标
out_ds.SetProjection(dataset.GetProjection())
# 设置SRS属性(投影信息)
out_ds.GetRasterBand(1).WriteArray(arr)
# 写入目标文件
out_ds.FlushCache()
# 将缓存写入磁盘
del out_ds
#--------------------Read------------------------------
dataset = gdal.Open("./input.tif")
in_band = dataset.GetRasterBand(1).ReadAsArray()
# GetRasterBand(1) 是读取第一个波段,注意!这里是从1开始的!
#--------------------Write-----------------------------
writeTIF_1_int(in_band, dataset, "./output.tif")
# 这里输入dataset是为了读取dataset的投影参数
如代码所示,包含gdal的读写过程。