Ordnance Survey Terrain 50 elevation model
UPDATE: Since writing this post I’ve had communication with the Ordnance Survey who have looked into the issues raised. The latest Terrain 50 data available supersedes this post and so I suspect the problems have been fixed. I now use Terrain 50 data for my broad brush national work. Please have a look at some of my newer posts for tips on working with GIS and raster data, especially this, which includes instructions for preparing the OS Terrain 50 data.
This is quite a technical post about (free) elevation data of Great Britain, analysed for Scotland.
I apologise for the screen shots, I wasn’t in the mood to make beautiful maps!
In spring 2010 the Ordnance Survey (OS) released a number of their mapping products for free under the brand OpenData with an attribution-only license. One part of the product suite was the Land-Form Panorama dataset, an elevation model available as either a grid (raster) or as contours. The model is based on the 1:50’000 contours from the 1980s (can’t find a ref for this on the web, but I remember reading it – so it must be true…). From the outset OS stated they would not update this dataset.
This spring (2013) OS released a new elevation model called Terrain 50 – which will be updated (annually)!
As I’ve been using Panorama for the past three years I thought it worth undertaking a quick analysis to see where the differences lay with Terrain 50, and how big they are. With two ‘perfect’ datasets this would show landscape changes of the past 20-30 years. In reality I was expecting Terrain 50 to highlight errors in the Panorama.
For this I used the open source GIS, GRASS. If you’d like to check my working you can, of course, use any GIS software of your choosing, or do it in a language like Python or R. Be warned, if you follow the steps below on a similar quantity of data you’ll need at least 4Gb of RAM.
GRASS is built up of many tools, those I’ve used I’ve included in brackets. Here are the steps I went through:
- Imported all the tiles from both datasets into my GRASS mapset (r.in.gdal)
- Then merged them (r.patch) into two sets: Panorama and Terrain 50
- Subtracted the Panorama data from the Terrain 50 (r.mapcalc)
- Exported the datasets (r.out.xyz) so I could analyse them in R, not having yet acquired the skill to use R inside GRASS…
- Loaded the data into R (takes a couple of minutes)
panorama=read.table("raw/OS_elevation/panorama", header=F, sep="|") terrain50=read.table("raw/OS_elevation/terrain50", header=F, sep="|")
- Plotted density curves (smoothed histograms) for both sets
png(file="smooth_hist.png") plot(density(terrain50$V3), main="Density plot of OS Terrain 50 (black) and Panorama (red)") lines(density(panorama$V3), col="red") dev.off()
- Discovered there’s very little difference between them…
Which isn’t a big surprise as the mountains of Scotland haven’t really changed much in the last 30 years. There is a small spike from the Terrain 50 around an elevation of 0 m AOD (Above Ordnance Datum). Most likely this is due to the inclusion of more small islands than the earlier dataset.
Fear not though, I didn’t stop there. Going back to GRASS I plotted up the difference layer I’d created in step 3, above. Generally there seemed to be little going on, but as I paid a little more attention the following differences stood out (map shows the Terrain 50 minus the Panorama):
- The Panorama data for the west of Scotland is generally east of the Terrain 50 data by approx 50 m
- This hasn’t really happened for the tile(s) over Inverness
- There are a couple of hot spots where a big difference is observed, I’ve picked two:
- Polla, Loch Eriboll has grown a 500 m high round hill. I’m 99.9% certain this is an error
- Near Loch Leven a large hole has been filled in! This is probably correct as there is/was opencast workings in these parts…
So, important question: should you switch to using Terrain 50 instead of Panorama?
I don’t know!! As a general rule, then probably: as it is supported and should improve over time. As to which data is in the right place (west-east shift), I also don’t know.
When I’ve a free bit of time and processing power I’ll do a comparison to the NextMap data, which should give us a much better idea.