在遥感影像处理中,栅格数据往往以数组的形式存储。同理,数组也可以在添加参考系之后以栅格影像的形式表示。这里介绍一种将数组写入栅格tiff文件的方法
import gdal
import numpy as np
def arr2raster(arr, raster_file, prj=None, trans=None):
"""
将数组转成栅格文件写入硬盘
:param arr: 输入的mask数组 ReadAsArray()
:param raster_file: 输出的栅格文件路径
:param prj: gdal读取的投影信息 GetProjection(),默认为空
:param trans: gdal读取的几何信息 GetGeoTransform(),默认为空
:return:
"""
driver = gdal.GetDriverByName('GTiff')
dst_ds = driver.Create(raster_file, arr.shape[1], arr.shape[0], 1, gdal.GDT_Byte)
if prj:
dst_ds.SetProjection(prj)
if trans:
dst_ds.SetGeoTransform(trans)
# 将数组的各通道写入图片
dst_ds.GetRasterBand(1).WriteArray(arr)
dst_ds.FlushCache()
dst_ds = None
print("successfully convert array to raster")
if __name__ == '__main__':
arr = np.random.randint(0, 255, size=(200, 200, 1))
raster_file = './arr2ras.tif' # 输出的栅格文件路径
src_ras_file = './raster_prj.tif' # 提供地理坐标信息和几何信息的栅格底图
dataset = gdal.Open(src_ras_file)
projection = dataset.GetProjection()
transform = dataset.GetGeoTransform()
arr2raster(arr, raster_file, prj=projection, trans=transform)