本科大四,小白一枚,编程水平不好,但是现在我有一个大胆的想法,想未来在遥感算法方面有所突破,我要开始好好学了,祝我成功!也祝所有同行节节高升!如有不足,敬请指正!
在借助python读取遥感图像时,会用到一些第三方库,最典型的就是GDAL。GDAL是由开源地理空间基金会发布的一个栅格和矢量的地理空间数据转换库,它会创建一个栅格或矢量的抽象数据模型,通过这个抽象模型,可以对栅格或矢量数据进行读取。
1、导入相关模块
from osgeo import gdal
import cv2 #用于图像融合
import matplotlib.pyplot as plt #用于绘图显示
2、影像信息读取
ds=gdal.Open("F:\\python_rs\\LC08_L1TP_145032_20210205_20210304_01_T1.tif")#文件读取
gt=ds.GetGeoTransform() #获取相关坐标投影信息
运行结果:
gt:(531585.0, 30.0, 0.0, 4582215.0, 0.0, -30.0) 参数注记—>(左上角横坐标,像元宽度,行旋转,左上角纵坐标,列旋转,像元高度)
2.1 投影信息读取
prj=ds.GetProjection()
运行结果:
'PROJCS["WGS 84 / UTM zone 44N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",81],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32644"]]'
2.2 文件位置信息读取
info=ds.GetDescription()
运行结果:'F:\\python_rs\\LC08_L1TP_145032_20210205_20210304_01_T1.tif'
2.3 图像大小信息读取
cols=ds.RasterXSize #图像宽度
rows=ds.RasterYSize #图像高度
运行结果:(7651, 7771)
2.4 波段信息读取
bands=ds.RasterCount #波段数
运行结果:3
#分别读取3个波段并将其以数组形式赋值给RGB
band1=ds.GetRasterBand(1)
R=band1.ReadAsArray()
band2=ds.GetRasterBand(2)
G=band2.ReadAsArray()
band3=ds.GetRasterBand(3)
B=band3.ReadAsArray()
2.5 绘图显示
img2=cv2.merge([R,G,B])
plt.imshow(img2)
若不想显示坐标轴,可添加如下代码:
plt.xticks([]),plt.yticks([])