Re-visualising a long barrow near Old Sarum

A few weeks ago I was walking around the ramparts of Old Sarum hillfort when I spotted the cropmarks of a long barrow, and adjacent ring ditches, in one of the fields to the north of Old Sarum.  These cropmarks are shown in the photo below:

Long barrow and ring ditch crop marks, Old Sarum

I knew the long barrow had been surveyed back in 1978, and I found the original geophysics report on the Historic England website .  Unfortunately, the plot of the survey results was missing from the PDF report, and so I was unable to compare the crop marks with the geophysics results.  I contacted Historic England, and the Geophysics Manager Paul Linford kindly arranged for the original paper plot to be scanned and added to the PDF report.  Paul commented that the 1970s technology wasn’t up to displaying the results as well as modern computer visualisations, but that the ditch anomalies could still be seen on the plot.  Here is a copy of the plot as scanned:

Original scanned plot of magnetometer results. © Geophysics Team, Historic England

I found it difficult to draw my own conclusions from the plot due to the pencil annotation, so I spent a short time in a graphics package digitally rubbing out the pencil annotation, as shown below:

Scanned plot with pencil annotation removed. © Geophysics Team, Historic England

Now the annotation was removed, it was easier to draw my own conclusions from the results, but also it was obvious that some of the anomalies relating to the long barrow were far from clear.  In particular, the long barrow ditches were barely discernible.  I thought it was a pity we didn’t have the original survey readings, from which we could have generated modern day visualisations.  That gave me an idea; what if we could reverse engineer the readings from the scanned XY trace plot?  It was worth a try.

So I set out experimenting with the latest GIS software to see if this was possible.  Here is a high level summary of the steps I went through:

  • Extracted the trace plot as an image from the PDF report.
  • Converted the image to a 1 bit (black and white) image.
  • Georectified the plot so the survey squares were perfectly square.  This was required because the original paper scan was slightly warped.
  • Thinned all line work on the image to single pixel lines.
  • Converted the single pixel lines to line geometries (ie collections of XY points).
  • Tagged the lines with their y index in the plot.
  • Batch created lots of vertical lines at known locations along the x axis.
  • Intersected the vertical lines with the trace lines to get a ‘reading’ from the trace.
  • Standardised the readings for each trace line by transforming to a common axis.
  • Wrote out the XY values to an XYZ file.
  • Imported the XYZ file into Snuffler (a geophysics data software package) and used the visualisation tools to produce a greyscale plot.

When I opened the final file in Snuffler, I was amazed to see that the process had been successful.  I had managed to reverse engineer the relative readings from the trace plot, to produce this:

Reverse engineered greyscale plot of magnetometer results

As I now had a grid of readings, I could experiment with different visualisations, for example:

Relief plot

Although there is still some noise, and a few missing values, the ditches of the long barrow are clear, as well as the internal trapezoidal feature.  This latter feature invites comparison with the recently excavated Cat’s Brain long barrow by Jim Leary in the Vale of Pewsey.   It is also interesting that one of the long barrow ditches appears to have a causeway, with the terminal producing a strong anomaly, as described in the report.The ring ditches are also very clear, with distinct features within the large ring ditch.

This experiment has shown that even paper copies of early geophysics trace plots still encode the data for the original readings, which with a bit of GIS processing can be unlocked, re-hydrated and visualised in new ways.  Time to see what other trace plots are out there!  Thank you Historic England for scanning the original plot and making it available.

If you are interested in the technology behind this, a more detailed explanation of the steps follows:

  • The free image processing package Imagemagick was used to extract the image from the PDF using the following command:
  • Windows Paint was used to rub out the pencil from the image
  • ImageMagick was used to negate the image and then covert to black and white:

convert GEOPHYSICS_BOSCOMBEDOWNLONGBARROW_mag_results_negate.png -threshold 25% -colors 2 -depth 1 -type bilevel GEOPHYSICS_BOSCOMBEDOWNLONGBARROW_mag_results_negate_bw.bmp

In the free GIS package QGIS:

  • A grid of 30m squares was created using the ‘Vector Grid’ tool.
  • The QGIS ‘Georeferencer’ was used to warp the scanned image onto the vector grid created in the previous step.  A ‘Polynomial 3’ transformation was used with a ‘Nearest Neighbour’ resampling method.
  • The GRASS tool ‘r.thin’, available in the QGIS toolbox, was used to thin the linework in the image down to single pixel lines.
  • The GRASS tool ‘’, available in the QGIS toolbox, was used to convert the thinned raster image to line geometries, stored as a shapefile.

A spatial translation tool called FME (free for personal non-commercial use) was used to:

  • Recursively weed out short dangling lines and re-join connected (using a combination of the TopologyBuilder, SpatialFilter and LineCombiner transformers.

Then there was a manual step.  Using the QGIS edit tools on the shapefile:

  • any gaps in the trace lines (caused by gaps in the scanned image) were filled in.
  • for each trace line, all line segments making up that trace line were selected and given a y-index integer attribute (0, 1, 2 etc).

An automated workflow in FME was then used to:

  • Create a vertical line every 25 cm across the grid.
  • Intersect the vertical lines against the indexed trace lines to produce intersect points:
  • Intersect points between vertical lines and trace lines

  • Extract the y value for the intersected point
  • Translate the value to a common y-axis using the y-index attribute as a multiplier.
  • Output to an XYZ ascii file.  This is effectively a grid of XY points with a value at each point.

Snuffler was then used to import the XYZ file and visualise the data.

This entry was posted in Technical and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s