gdal读取多波段tif和创建新的多波段tif

from osgeo import gdal
import gdal

# 读文件
YG_dataset = gdal.Open(r'G:\数据\原始分辨率图\jiuzhaigoujingxi.tif')  # 打开文件
print(YG_dataset)
YG_width = YG_dataset.RasterXSize  # 栅格矩阵的列数
print(YG_width)
YG_height = YG_dataset.RasterYSize  # 栅格矩阵的行数
print(YG_height)
YG_geotrans = YG_dataset.GetGeoTransform()  # 仿射矩阵
print(YG_geotrans)
YG_proj = YG_dataset.GetProjection()  # 地图投影信息
print(YG_proj)
YG_data = YG_dataset.ReadAsArray(0, 0, YG_width, YG_height)  # 将数据写成数组,对应栅格矩阵
print(YG_data)
print(YG_data.shape)
b1 = YG_data[0,0:YG_height,0:YG_width]#获取第1波段
print(b1)
print(b1.shape)
b2 = YG_data[1,0:YG_height,0:YG_width]#获取第2波段
b3 = YG_data[2,0:YG_height,0:YG_width]#获取第3波段
b4 = YG_data[3,0:YG_height,0:YG_width]#获取第4波段


# 创建tif文件
driver = gdal.GetDriverByName("GTiff")
# 这里的5,5就是创建一个5x5大小的tif,后面的5是波段数
# dataset_out = driver.Create(path, cols, rows, bands, dtype)
New_YG_dataset = driver.Create(r'F:\YG\result\综合夜间灯光强度.tif', 5, 5, 5, gdal.GDT_Float32)
New_YG_dataset.SetGeoTransform(YG_geotrans)
New_YG_dataset.SetProjection(YG_proj)
print(b1[0:5, 0:5] * 1.0)
band1 = New_YG_dataset.GetRasterBand(1)
band1.WriteArray(b1[0:5, 0:5] * 1.0 + 10) # 原图是整数,乘个0.1,与浮点数可以相加
band2 = New_YG_dataset.GetRasterBand(2)
band2.WriteArray(b2[0:5, 0:5] * 1.0 + 20)
band3 = New_YG_dataset.GetRasterBand(3)
band3.WriteArray(b3[0:5, 0:5] * 1.0 + 30)
band4 = New_YG_dataset.GetRasterBand(4)
band4.WriteArray(b3[0:5, 0:5] * 1.0 + 40)
band5 = New_YG_dataset.GetRasterBand(5)
band5.WriteArray(b3[0:5, 0:5] * 1.0 + 50)
print(New_YG_dataset)
New_YG_data = New_YG_dataset.ReadAsArray(0, 0, 3, 3)  # 将数据写成数组,对应栅格矩阵
print(New_YG_data)
print(New_YG_data.shape) # (5, 3, 3)

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据读写库。它可以读取和处理多种格式的地理空间数据,包括TIFF图像。TIFF(Tagged Image File Format)是一种常用的图像格式,它支持多种数据类型、多通道和元数据。GDAL通过使用TIFF库来读取TIFF文件中的数据。 在使用GDAL读取TIFF文件时,我们需要先安装GDAL库及相关依赖库。安装完成后,可以使用代码来读取TIFF文件中的数据。 使用GDAL读取TIFF文件的基本步骤如下: 1.导入GDAL库和相关依赖库 import gdal 2.打开TIFF文件 ds = gdal.Open('filename.tif') 其中,'filename.tif'是需要读取TIFF文件名。 3.获取TIFF文件的元数据 获取TIFF文件的元数据,包括文件的坐标系、分辨率、波段数等。 projection = ds.GetProjection() # 坐标系信息 geo_transform = ds.GetGeoTransform() # 分辨率等信息 band_nums = ds.RasterCount # 波段数 4.读取TIFF文件中的数据 读取TIFF文件中的数据,可以使用多种方式,包括读取整个文件,读取指定区域、指定波段等。例如,读取第一波段的整个数据: data = ds.GetRasterBand(1).ReadAsArray() 其中,data是一个二维数组,包含了TIFF文件中第一波段的全部数据。 5.关闭TIFF文件 使用完TIFF文件后记得关闭。 ds.Close() 以上就是使用GDAL读取TIFF文件的基本步骤。在实际应用中,还可以对TIFF文件进行裁剪、投影变换等操作,以满足不同的需求。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值