I have to create a heatmap of water temperatures inside a lake for which I have sample points. The map should look much like the climate maps generated by climate change models. I have the temperature points and they were attached as attributes to a lat/long point shapefile layer.

I would like to interpolate these points using temperature as an interpolation attribute, but I'd like to contain the values within the lake.

I would prefer not to do an interpolation with the lake area polygon as a masking/clipping layer, but rather the interpolation should take in account the boundaries much in the way ANUDEM seems to do it for hydrological maps, if my understanding is correct. That is borders should influence the value of the interpolated value.

Please let me know if such interpolation is possible in one of: QGIS, GRASS, SAGA.

If ArcGIS can provide such functionality while the others don't I can get a temporary license to do this.

Edit: After doing more research I think that what I need is called interpolation with fault lines or barriers. I found an Open Source program surfit, which apparently does that. I am curios if in any of the software mentioned above there is something that does that?

  • I can't add a comment yet, but notice that both solutions here are a bit wrong. the mask option is a post-processing tool. meaning, the interpolation is done for the entire area, and then the mask cuts out the blocked areas. it's a clip function. I'm desperately looking for a barriers function in QGIS or similar. it seems only arcgis has it for now.
    – Ohad
    Commented Apr 3, 2019 at 7:01
  • @Ohad I believe that you are wrong, v.surf.icw which is the accepted solution is using interpolation with barriers, which means it accounts for the boundary effect. How did you draw that conclusion that it is using a mask to clip? The mask is used to draw the boundaries that are used as barrier so that the interpolation does not go beyond that. Please read carefully the documentation of the function.
    – Bogdan
    Commented Apr 13, 2019 at 14:45

2 Answers 2


GRASS GIS can do that directly with the splines interpolation module v.surf.rst. It offers a "mask" parameter which is an existing raster map used as mask. See also http://grasswiki.osgeo.org/wiki/RST_Spline_Surfaces

  • This would be a good solution if it worked. I'm using grass7 and it is unable to use a mask. The error I am getting is :"ERROR: Input window changed while maps are open for read. Map name <>". It does the job without the mask but it is not what I need.
    – Bogdan
    Commented Feb 20, 2014 at 23:33
  • I found a bug report that is 1.5 years old that documents that this feature does not work in grass7. @markusN the bug report is here 1775
    – Bogdan
    Commented Feb 21, 2014 at 0:53

It looks like a lot of people are trying to find a decent tool for interpolation within boundaries. After looking at several options including the one suggested by Markus and at IDW with barriers in ArcGIS my best results were given by the v.surf.icw addon. An interpolation result can be seen in this image:

Toronto Harbour mean temperatures

The algorithm is not very fast. It needed 3 hours to finish the interpolation for 50 data points, but it works. Probably the spline algorithm would have given smoother results, but unfortunately the mask option does not work.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.