Python+GDAL 将数组写入栅格tiff文件

在遥感影像处理中,栅格数据往往以数组的形式存储。同理,数组也可以在添加参考系之后以栅格影像的形式表示。这里介绍一种将数组写入栅格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)

Guess you like

Origin blog.csdn.net/MLH7M/article/details/121049719