[GIS] Which interpolation technique is suitable for a bathymetry of a small lake

bathymetryinterpolationlakesqgisraster

This is a lake of approximately 13 ha with 81 sampled depth points in about 10 transect lines:

Sampled points

Previously in ARCgis with a 50 ha lake and about a 100 depth sampling points, I got decent output with the TopotoRaster tool. However, no such exact equivalent seems to exist with QGIS or open source software.

In QGIS, I got the interpolated raster below, using the TIN method in the Raster Interpolation plugin. However, this seemed to be a lucky outcome, when I tried to repeat, I got different results (unsatisfactory) in spite of not really varying any parameter.

Interpolated raster

These are more urban (constructed) tanks than lakes, therefore, they are fairly regular in their bed profile, hence the low point sampling density. Some articles seemed to suggest Inverse Distance Weighting (IDW) as the most suitable technique, yet I seemed to get the worst results with that (possibly owing to low point density).

Are there any heuristics which can be employed here considering the size of the lake, its regular profile and the point sampling density to arrive at which interpolation method is apt? (between Kriging, IDW, Bilinear, Cubic convolution, TIN or spline)

Or is it always a bit of trial and error?

Best Answer

One alternative is spline interpolation as suggested in the related post: Interpolation of multibeam bathymetry.

From QGIS, use the GRASS tool v.surf.rst:

Performs surface interpolation from vector points map by splines.

Then, you can test different types of parameterization available within the tool. There is an option to apply a leave-one-out cross validation for parameter optimization, which will vary gradually the tension, smoothing, etc; in order to find the minimal predictive error.

As suggested by user30184, make sure the input dataset uses ground level points at the lake's boundaries, so to avoid extrapolation.