图像重采样就是从高分辨率遥感影像中提取出低分辨率影像,或者从低分辨率影像中提取高分辨率影像的过程。常用的方法有最邻近内插法、双线性内插法、三次卷积法等。很多时候,我们下载到的数据精度是不一致,因而,将数据进行重采样就非常重要了。在ArcGIS中使用该工具,需要点击很多次,比较麻烦。因此使用Python+GDAL实现了该功能,后续也可以将其改为批量重采样。避免了繁琐的操作。

代码注释比较详细,也比较简单,直接看代码就可以,代码如下:

from osgeo import gdal
def resample_images(referencefilePath, inputfilePath, outputfilePath):  # 影像重采样
   :param referencefilePath: 重采样参考文件路径
   :param inputfilePath: 输入路径
   :param outputfilePath: 输出路径
   # 获取参考影像信息, 其实可以自定义这些信息,有参考的话就不用查这些参数了
   referencefile = gdal.Open(referencefilePath, gdal.GA_ReadOnly)
   referencefileProj = referencefile.GetProjection()
   referencefiletrans = referencefile.GetGeoTransform()
   bandreferencefile = referencefile.GetRasterBand(1)
   width = referencefile.RasterXSize
   height = referencefile.RasterYSize
   bands = referencefile.RasterCount
   # 获取输入影像信息
   inputrasfile = gdal.Open(inputfilePath, gdal.GA_ReadOnly)  # 打开输入影像
   inputProj = inputrasfile.GetProjection()  # 获取输入影像的坐标系
   # 创建重采样输出文件(设置投影及六参数)
   driver = gdal.GetDriverByName('GTiff')  # 这里需要定义,如果不定义自己运算会大大增加运算时间
   output = driver.Create(outputfilePath, width, height, bands, bandreferencefile.DataType)  # 创建重采样影像
   output.SetGeoTransform(referencefiletrans)  # 设置重采样影像的仿射矩阵为参考面的仿射矩阵
   output.SetProjection(referencefileProj)  # 设置重采样影像的坐标系为参考面的坐标系
   # 参数说明 输入数据集、输出文件、输入投影、参考投影、重采样方法(最邻近内插\双线性内插\三次卷积等)、回调函数
   gdal.ReprojectImage(inputrasfile, output, inputProj, referencefileProj, gdal.GRA_Bilinear, 0.0, 0.0, )
if __name__ == "__main__":
   inputfilePath = 'D:\RS_Toolbox\DJKS_dem_12.5m.tif'  # 输入文件
   outputfilePath = 'D:\RS_Toolbox\DJKS_dem_2m.tif'  # 输出文件
   referencePath = 'D:\RS_Toolbox\image.tif'  # 重采样参考文件
   resample_images(referencePath, inputfilePath, outputfilePath)

代码运行结果

重采样前后对比如下: