python使用gdal将二维numpy数组转换为单波段tiff格式

import gdal
import numpy as np 

filename = 'LST_250_202108'
data = np.load(filename + '.npy')
print(data.shape)

# 创建tif文件
driver = gdal.GetDriverByName('GTiff')
# 维度和numpy数组相反
new_dataset = driver.Create(filename + '.tif', data.shape[1], data.shape[0], 1, gdal.GDT_Float32) 

# 读取之前的tif信息,为新生成的tif添加地理信息
# 如果不增加这一步,则生成的图片没有经纬度坐标、投影的信息
origin_dataset = gdal.Open('2019193_WGS.tif')
# 获取投影信息
origin_proj = origin_dataset.GetProjection()
new_dataset.SetProjection(origin_proj)
# 仿射矩阵
origin_geotrans = origin_dataset.GetGeoTransform()
new_dataset.SetGeoTransform(origin_geotrans)

band = new_dataset.GetRasterBand(1)
band.WriteArray(data)
print(new_dataset)
new_data = new_dataset.ReadAsArray()
print(new_data)

ReadAsArray()针对dataset和band有两种方式:
针对dataset:

ReadAsArray(xoff=0, yoff=0, xsize=None, ysize=None, buf_obj=None, buf_xsize=None, buf_ysize=None, buf_type=None, resample_alg=0, callback=None, callback_data=None, interleave='band')
# method of osgeo.gdal.Dataset instance
# Reading a chunk of a GDAL band into a numpy array.
# The optional (buf_xsize,buf_ysize,buf_type)
# parameters should generally not be specified if buf_obj is specified.

其中:
xoff, yoff: 指定想要读取的部分原点位置在整张图像中距离全图原点的位置(以像元为单位)
xsize, ysize: 指定要读取部分图像的矩形的长和宽(以像元为单位)
buf_xsize, buf_ysize: 可以在读取出一部分图像后进行缩放。那么就用这两个参数来定义缩放后图像最终的宽和高,gdal将帮你缩放到这个大小。
buf_type: 可以对读出的数据的类型进行转换(比如原图数据类型是short,你要把它们缩小成byte)。
band_list: 适应多波段的情况。可以指定要读取的波段。

针对band:

# Reading a chunk of a GDAL band into a numpy array.

ReadAsArray(self, xoff=0, yoff=0, win_xsize=None, win_ysize=None, buf_xsize=None, buf_ysize=None, buf_type=None, buf_obj=None, resample_alg = GRIORA_NearestNeighbour, callback = None, callback_data = None):
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值