GDAL+Python实现栅格影像处理之重采样
程序员文章站
2024-03-24 22:13:46
...
由于项目需要,所以使用到了GDAL框架,项目中未使用到GDAL关于图像处理部分的算法接口,所以近期学习总结一下。GDAL支持Python、c++、c、c# 、java。其中接口大同小异,主要是学习其中思路和方法,此处采用Python编写代码实现该功能。
重采样概念
重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。
常用的方法有最邻近内插法、双线性内插法、三次卷积法等
使用方法
在python中我们可以使用gdal.ReprojectImage()进行重采样。其中官网地址如下,如图所示:
可以查看其具体用法,也可以在pycharm中查看具体参数设置。
参数说明(未列完):
参数 | 说明 |
---|---|
Dataset src_ds | 输入数据集 |
Dataset dst_ds | 输出文件 |
GDALResampleAlg eResampleAlg | 重采样方法(最邻近内插\双线性内插\三次卷积等) |
GDALProgressFunc | 回调函数 |
char const * src_wkt=None | 输入投影 |
char const * dst_wkt=None | 参考投影 |
代码实现
outputfilePath = 'G:/studyprojects/gdal/GdalStudy/Files/images/ReprojectImage.tif'
inputfilePath='G:/studyprojects/gdal/GdalStudy/Files/images/2016CHA.tif'
referencefilefilePath='G:/studyprojects/gdal/GdalStudy/Files/images/2018CHA.tif'
def ReprojectImages():
# 获取输出影像信息
inputrasfile = gdal.Open(inputfilePath, gdal.GA_ReadOnly)
inputProj = inputrasfile.GetProjection()
# 获取参考影像信息
referencefile = gdal.Open(referencefilefilePath, gdal.GA_ReadOnly)
referencefileProj = referencefile.GetProjection()
referencefileTrans = referencefile.GetGeoTransform()
bandreferencefile = referencefile.GetRasterBand(1)
Width= referencefile.RasterXSize
Height = referencefile.RasterYSize
nbands = referencefile.RasterCount
# 创建重采样输出文件(设置投影及六参数)
driver = gdal.GetDriverByName('GTiff')
output = driver.Create(outputfilePath, Width,Height, nbands, bandreferencefile.DataType)
output.SetGeoTransform(referencefileTrans)
output.SetProjection(referencefileProj)
# 参数说明 输入数据集、输出文件、输入投影、参考投影、重采样方法(最邻近内插\双线性内插\三次卷积等)、回调函数
gdal.ReprojectImage(inputrasfile, output, inputProj, referencefileProj, gdalconst.GRA_Bilinear,0.0,0.0,)
效果展示
图中可以看出我将16年分类影像经过重采样后跟18年影像一致。
下一篇: IDL文件读写(七)