I was thinking about something else[1] when the small matter of the volume of water in a lake came
to mind. I looked at a map and waded into some murky waters. Of unknown depth.
os
What can you see in Fig 0?

OS Crown copyright 2016.
Aside from the handful of Munros, the West Highland Railway and the Youth Hostel?
Well, there's the beautiful, glacially carved, Loch Treig (Fig 1) and its sibling Loch Ossian.

But why does Loch Ossian get the all bathymetric contours and the bigger, deeper, Loch Treig gets none?
dam
Loch Treig was dammed in 1929 (dam not shown in Fig 0). After a quick glance at a few other OS map sheets I think I can say with some confidence[2] that the Ordnance Survey have chosen not to put bathymetric contours on bodies of water that have a dam.
this makes sense
Water levels in dammed lakes—reservoirs—are liable to fluctuate.
The depth changes.
On a whim.
End. Of.
but
A given point on the lake bed has an elevation above[3] sea level.
Yes, there is probably some infilling go on, but, the bathymetry isn't changing that quickly.[4]
The lake shore was plotted at the elevation it was surveyed at.
Bathymetric contours are just offsets.
If the lake surface elevation at the time the depths were measured is known, the elevation (above sea level) of the sublacustrine[5] terrain is also known.
Therefore, the bathymetric contours, or offsets, can be readily plotted whatever the lake level.
So. Why aren't they?
I don't know.
And I would like to know.
working hypotheses
No wrong answers, no silly suggestions, just some ideas as to why...
- Cartographic clarity?
- ditch the contours on reservoirs to minimise visual clutter
- To discourage recreation?
- don't want any fishin'-swimmin'-sailin'-paddlin'-divin' in case a hydro-engineer spontaneously opens the dam
- Rates of infill are HUGE?
- any depth measurement will be out of date before you can say sublacustrine sedimentation[6]
- Because reservoirs aren't natural?
- and only natural things are deserving of contours
- OS Style guide?
- a style guide written in 19-something says "we don't do that" and nobody remembers the why
If YOU know, please, let me know.
data
In the process of trying to understand this mystery I went hunting for some data.
oh, ess
I can't seem to find any reference to bathymetry in the documentation of OS Terrain 5, OS Terrain 50, or OS Water Features.
The closest I could get to the bathymetry shown on the above map is on the legend where bathymetric contours are described...
Contour values in lakes are in metres
...They aren't deserving enough of being displayed visually.
the lakes portal
The UK Lakes Portal don't include any detailed bathymetric data, but do include a few summary statistics:
- Surface area
- Mean depth
- Maximum depth
- Catchment area
- Elevation
Now we are getting somewhere.
In many cases the source cited for mean and maximum depth is "Murray and Pullar". Furthermore, they include a link, such as this one, that take you a scan of Murray & Pullar's map of the lake. And what beautiful things they are (Fig 2).

Reproduced with the permission of the National Library of Scotland (CC-BY).
The Bathymetrical Survey of Fresh-Water Lochs (1897-1909) is searchable via the National Library of Scotland's map page. And whilst they have all been scanned and are viewable online, only 33 have been georeferenced and are visible on their interactive Georeferenced Maps page.
Murray and Pullar, and their team, surveyed 562.
I did, however, find this website. Which has just for four lochs.[7]
conclusion?
Does the lake bathymetry shown on OS maps come from the Bathymetrical Survey of Fresh-Water Lochs (1897-1909)?
I don't know. Maybe?
Is the underlying data available?
Assuming "yes" is the answer to the previous question, then, sort of.
The Bathymetrical Survey of Fresh-Water Lochs (1897-1909) is available, but the data are trapped in a raster.
What does that mean?
It means I'm very tempted to start a large digitisation project.


objective
Liberate the data contained within the Bathymetrical Survey of Fresh-Water Lochs (1897-1909).
What data?
- The shoreline
LineStringwith the associated "Height of Surface of Water above Sea Level (feet)"
- The individual soundings (~60,000 of them).
Pointwith a depth measurement (in feet)
- The contours[8]
LineString[9] with depth (in feet)
method
digitize
Handily, for the 33 georeferenced sheets the NLS have made a publicly accessible xyz tile available. This was added to QGIS.
Once in QGIS a new point layer with a single attribute field: depth_ft was created and points were added at each depth sounding and the associated reading input. A new polygon layer, again with a depth_ft attribute, was similarly created and the shoreline (depth: 0 ft) digitized, followed by each of the contours.
The soundings point layer was supplemented with points taken every ~150 m[10][11] from the shoreline, and optionally[12] points from the contour lines.
grid
A 5 m (25 or 50 m would have been sufficient) grid was created covering the area of the lake. All of the points were first passed into matplotlib's mtri.Triangulation to create a Delaunay triangulation. This triangulatuion was then used to interpolate the depths across the grid with the mtri.LinearTriInterpolator[13]. The output of this is then masked with the shoreline, as some triangles and grid points fall outside of the lake.
Bingo. Gridded depths.
subtract
Elevations for the surrounding terrain were taken from the Copernicus DEM (GLO-30), because it's easy to access. The gridded bathymetry values were converted from feet to metres, reprojected onto the same grid as the DEM, and then subtracted from the DEM. Because they're just offsets.
Bingo. ✨Topography & bathymetry✨
result
Here is Loch Treig. Poorly rendered[14] in Blender[15]

Reproduced with the permission of the National Library of Scotland (CC-BY) & Produced using Copernicus WorldDEM-30, ESA.
discussion grumble
The contour lines aren't straight. Why?
- they were hand drawn
- the gridded bathymetry (and the copernicus DEM) would put them somewhere else
This discrepency means wiggly contours.
This is the reason why the soundings were supplemented with artificial soundings along the contour lines, in the hope that this would pin the lines to the "correct" elevation in the generated grid.
It helped, but not enough.
next
My "workflow" is semi-optimized, and I should really just start clicking away and digitize the remaining georeferenced maps. I've already done the two sheets covering Loch Ericht.
Get more comfortable in blender. Fig 3 was generated using Viewport Render Image, because I could not translate, scale, rotate, zoom, focus or otherwise manipulate and coerce the camera into position.
Nor could I make the sunrise.
footnotes
can't remember what ↩︎
there's my trademark lack of confidence ↩︎
or below, looking at you Loch Morar ↩︎
right? ↩︎
couldn't not squeeze that word in here ↩︎
not sorry ↩︎
and after starting my own digitizing efforts I found this conference talk by Phil Taylor which details his (& his students') methodology ↩︎
granted is technically a derived quantity, since these are based on the the shoreline and the individual soundings ↩︎
or
Polygonif filled contours are your thing ↩︎this seemed like a sensible-ish value ↩︎
the quality—the general "yeah, that seems about right"-ness—of the output is quite sensitive to this value, for example, at Loch Ericht, the spacing of some of the original transects means that during triangulation some triangles are formed from two adjacent points on the shore, and a third point across the loch on the far shore. This manifests itself as a non-existant land-bridge in the final gridded output ↩︎
for reasons that I might explain later ↩︎
mtri.CubicTriInterpolatoris also an option ↩︎because I struggle to use Blender ↩︎
because my laptop kept crashing when using QGIS' 3d view ↩︎