How to interpolate temperature correctly?

I tried to interpolate the mean average annual temperature to produce a "realistic" surface. In QGIS I used Raster-Interpolation-Interpolation. Both methods TIN and IDW did not deliver a "realistic" surface (e.g. compared to a good map in an atlas).

IDW (factor 3):

TIN (also showing the interpolation points):

Any hints how to get a "better, more realistic" interpolation?

• Especially for the mountainous area I'd expect that you have to consider elevation to get something remotely realistic. Commented Aug 4, 2012 at 17:13
• @underdark: can you point me to a web-page, forum, tutorial, literature how this can be done? thanks!!
– Kurt
Commented Aug 4, 2012 at 17:26
• This seems a reasonable source: ncgia.ucsb.edu/conf/SANTA_FE_CD-ROM/sf_papers/collins_fred/…. But climate data is not my specialty. Commented Aug 4, 2012 at 19:43
• Are you looking to make a map where the temperatures are grouped into classes Kurt? Say, something like this, perambulations.files.wordpress.com/2012/02/usda-zone-map1.jpg. N. Commented Aug 5, 2012 at 8:42
• @nhopton: my primary intention was to make a continuous surface, which is at least "remotely realistic". There are only a few hundered data-points and interpolation in the moutain areas is beyond my scope. so perhaps I should consider trying to make a "grouped" temperature surface . But: Doesnt such a "grouped" surface need enough correectly interpolated data-points as a first step?? Do you have instructions / a tutorial for this? This would be very welcomed! thanks
– Kurt
Commented Aug 10, 2012 at 7:19

You may take the elevation-temperature relationship into account, especially in mountainous areas. Co-kriging or splines interpolation (e.g., 3D splines as supported by GRASS GIS) can be used for this. For larger areas further variables may play a role: distance from the sea, latitude, etc.

Update: a reasonable method may also be multiple regression, for GRASS 7 there is a new Addon: r.regression.multi

Interpolating climate data, you have two options (i see you need ready to use tutorials, I will give reference, but also some theoretical aspects you have here):

1. simple interpolation using a kriging approach is the best option, cause you will have a statistical sounding relation. You can use this tutorial: In Romanian, but you can use Google Translate (use SAGA).

2. covariate interolation, kriging or other method, supplementing temperature data with elevation or other data. You can use these tutorials: Mitasova spline with tension (use GRASS) or Tom Hengl book example (using R)

Are you atmospherically correcting the temperature data? That would account for surface elevation above sea-level and atmosphere. NCEP provides an abundance of atmospheric data for North America.

Also, a linear interpolation wouldn't be that good because temperature has diurnal variation throughout each day.

Kurt, you can group the temperature values in your raster to classes and export the results to a new raster using v.reclass from the Sextante toolbox.

I guess the minimum value of your interpolated raster might be (say) -5 and the maximum value (say) 30.

Using GRASS v.reclass from the Sextante toolbox would allow the values to be grouped into seven classes using this 'rules' text file (you could call it 'rules.txt'):

-5 thru 0 = 1
1 thru 5 = 2
6 thru 10 = 3
11 thru 15 = 4
16 thru 20 = 5
21 thru 25 = 6
26 thru 30 = 7

The output would be a new raster having a value of 1 for all of the values of between -5 and zero in the original raster, of 2 for all of the values between 1 and 5 in the original raster, and so on.

The procedure is very simple, all you need is the interpolated raster and the 'rules' text file. See also the Man page for v.reclass here: Link

Once classified, the new raster could also be polygonised to produce a polygon shapefile, to put hard edges on the colour-rendered image. Or you could colour style the shapefile and forget about the raster.

Just a quick note. Interpolation is one of those things that makes what's left of my hair stand on end because it can produce very convincing-looking results from very thin data. What's more the results are usually impossible to check because you've used all of the data you have to do the interpolation, so it's in the nature of things that you can't carry out meaningful checks on the areas for which you don't have data.

In your case, the data for the area outside of the borders of Austria is thin and you might consider clipping the final map image to show just Austria. Or maybe leave the points in. For example, I might have a graph with a shotgun splatter of points through which I draw a straight line. The dishonesty starts when I then remove the points :)

Nick.