赞
踩
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):
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。