您的当前位置:首页正文

GDAL读取遥感影像转化为数组,并储存为文件

2024-11-25 来源:个人技术集锦

基于Python的GDAL库,将遥感影像的TIFF文件,转换为数组形式,并储存为文件。
其中对整个栅格数据的转换,其输出的数组形式为三维数组,储存文件的格式为NPY格式;对栅格数据的某一波段进行转换,可以转换成二维数组,储存为CSV文件。

import numpy as np
from osgeo import gdal, gdalconst

import pandas as pd

def read_img(img_path):
        """读取遥感数据信息"""
        dataset = gdal.Open(img_path, gdalconst.GA_ReadOnly)
        img_width = dataset.RasterXSize    #读取栅格数据集的X方向像素数、或者是栅格矩阵的列数
        img_height = dataset.RasterYSize   #读取栅格数据集的Y方向像素数、或者是栅格矩阵的行数
        img_bands=dataset.RasterCount      #读取栅格数据集的波段数
        band=dataset.GetRasterBand(1)      #读取波段1
        adf_GeoTransform = dataset.GetGeoTransform()   #仿射矩阵/地图地理坐标参考信息
        im_Proj = dataset.GetProjection()              #地图投影信息
        # 将数据写成数组,对应栅格矩阵   注意这两个的区别
        img_data = np.array(dataset.ReadAsArray()) #这是对整个栅格数据转成数组,转出的结果是三维数组  
        data=np.array(band.ReadAsArray())#这是对栅格数据的某一个波段转成数组,转出的结果是二维数组
        del dataset
        return  img_data,data,img_width,img_height,img_bands,adf_GeoTransform, im_Proj

if __name__ == "__main__":

    img_width, img_height,img_bands, adf_GeoTransform, im_Proj, img_data,data= read_img('E:\\file\\test.tif')        #读数据
    #三维数据的储存,文件后缀是npy
    np.save(file="a.npy",arr=img_data) 
    #二维数据的储存,文件可以储存为CSV文件
    data1 = pd.DataFrame(np.array(data))
    data1.to_csv('a.csv')
    

参考链接:


自己的学习记录,如有问题,欢迎交流学习!

显示全文