# tlohde

deep thoughts

20:09 30/03/2026
1752 words
contents

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?

An excerpt of an Ordnance Survey Landranger Map (Sheet 42). The maps shows the topography and inclues Loch Ossian and the southern end of Loch Treig. Loch Ossian features bathymetric contours, Loch Treig does not...
⛶↗  Fig 0: Loch Treig and Loch Ossian from OS Landranger 42
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.

a dramatic view over a long narrow loch. The hill in the foreground is in shade, the far side of loch is a steep sunlight brown hillside.
⛶↗  Fig 1: South West (ish) over Loch Treig from Stob Coire Sgriodain (979 m) on 6th April 2025.

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...

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:

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).

A (low-res) excerpt of a topo-bathy map. The terrain is shown in earth brown-ish tones. The water is shown in calm blues
⛶↗  Fig 2: Look at those blues and browns. Note Stob Coire Sgriodain (where Fig 1 was taken from) towards the bottom right of frame. North is to the right. Apologies for the low quality. This has been exported from the above link as a .pdf then converted to .jpg. High-resolution exports come at a price.
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.

contours contours

objective

Liberate the data contained within the Bathymetrical Survey of Fresh-Water Lochs (1897-1909).

What data?

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]

3d view of a topographic map
⛶↗  Fig 3: Loch Treig from Murray & Pullar's Bathymetrical Survey of Fresh-Water Lochs (1897-1909) draped over the topo-bathy surface created from their soundings, and surface topography from Copernicus Global DEM. View is looking north-west ish towards where Fig 1 was taken from. Apologies for it being so dark.
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?

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


  1. can't remember what ↩︎

  2. there's my trademark lack of confidence ↩︎

  3. or below, looking at you Loch Morar ↩︎

  4. right? ↩︎

  5. couldn't not squeeze that word in here ↩︎

  6. not sorry ↩︎

  7. and after starting my own digitizing efforts I found this conference talk by Phil Taylor which details his (& his students') methodology ↩︎

  8. granted is technically a derived quantity, since these are based on the the shoreline and the individual soundings ↩︎

  9. or Polygon if filled contours are your thing ↩︎

  10. this seemed like a sensible-ish value ↩︎

  11. 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 ↩︎

  12. for reasons that I might explain later ↩︎

  13. mtri.CubicTriInterpolator is also an option ↩︎

  14. because I struggle to use Blender ↩︎

  15. because my laptop kept crashing when using QGIS' 3d view ↩︎