基于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')
参考链接:
自己的学习记录,如有问题,欢迎交流学习!