Smoothing/reinterpolating raster with GDAL?

1) The hard way: With a bit of coding it's (relatively) easy to implement bilinear interpolation to accomplish decent resampling.

2) The easy way: use GDAL as explained in this previous GISSE post, but in reverse (decreasing the pixel size).


Use GDALReprojectImage, which is exposed in Python:

from osgeo import gdal
help(gdal.ReprojectImage)

For the smooth interpolation, use bilinear or cubic methods. This function is awkward, since it doesn't take keyword arguments, thus you need to find the position:

gdal.ReprojectImage(src_ds, dst_ds, None, None, gdal.GRA_Bilinear)

Probably the tricky part is setting up dst_ds, which needs to have a geotransform similar to src_ds, but with modified cell sizes.