多光谱遥感读取的代码
读取前先安装GDAL包,然后通过下面代码运行。
from osgeo import gdal
import numpy as np
np.set_printoptions(threshold=np.inf)#使print大量数据不用符号...代替而显示所有
dataset = gdal.Open("H:\LiaoNingLandsatOILL2\2015Mar_Aug-Nocloud119031\LC081190312015031901T1-SC20210518022016\layer\LC08_L1TP_119031_20150319_GDALtest.tif")
print(dataset.GetDescription())#数据描述
print(dataset.RasterCount)#波段数
cols=dataset.RasterXSize#图像长度
rows=(dataset.RasterYSize)#图像宽度
xoffset=cols/2
yoffset=rows/2
band = dataset.GetRasterBand(4)#取第三波段
r=band.ReadAsArray(xoffset,yoffset,1000,1000)#从数据的中心位置位置开始,取1000行1000列数据
band = dataset.GetRasterBand(3)
g=band.ReadAsArray(xoffset,yoffset,1000,1000)
band = dataset.GetRasterBand(2)
b=band.ReadAsArray(xoffset,yoffset,1000,1000)
import cv2
import matplotlib.pyplot as plt
img2=cv2.merge([r,g,b])
plt.imshow(img2)
plt.xticks([]),plt.yticks([]) # 不显示坐标轴
plt.show()
在读过程中,发现
问题出现在第七行,数据无法描述
同时发现dataset=<None Type>None,说明该数据并没有被读进来,也就是说在dataset = gdal.Open()的时候已经出现错误了,一开始我以为是文格读取路径出了问题,通过改变路径也没能改变数据None的问题。
最后,发现是路径和文件名过长导致数据无法读取,将文件改为更简洁的名称dataset = gdal.Open(“F:\GDALtest.tif”),放在更少字段的文件夹中,最后文件读取成功。
但是显示:用RGB数据将输入数据裁剪到imshow的有效范围([0..1]表示浮点或[0..255]对于整数),就是格式出现了问题,暂时还未解决,后续在学习解决该问题。
最后结果为