Monday, 1 November 2021

Nav practice: generating randomly selected spots on access land

Lately we've been trying to get more nav practice. We're looking at doing more O events next year, and also just want to be better at navigation for fell racing.
We've been doing a bit of orienteering but I thought some extra practice would be useful, and being able to head out in the dark and/or clag over winter even more so.

Practising nav locally tends to mean you already know the features you're looking for, so it's a bit too easy. I thought we could make it tougher by selecting random spots on access land then navigating to them. Since they tend not to be identifiable features that means some pacing practice to land as exactly as possible in the right spot.

Making maps

First of all I installed QGis. This is an open source GIS system with very sophisticated tooling, and in several years of occasional use I've hardly even started to explore what it's capable of.
Next I downloaded the data files I needed. I live near the boundary between the SD and SE squares, so I downloaded the data for both. The datasets I got (from OS OpenData) were:
  • OpenMap Local
  • OS Terrain 50
I also needed the access land areas as a shapefile, which came from here:

https://data.gov.uk/dataset/05fa192a-06ba-4b2b-b98c-5b6bec5ff638/crow-act-2000-access-layer

Next I put those layers together in a project using 'add vector layer'. You need to unzip the individual tiles for your area from the OS Terrain 50 dataset.

The resulting map looks like this:



I've rearranged the layers so that the access land is at the top, and the mapping layers are at the bottom. The mapping layer and contours are just for orienting your location so you can see which bits of access land to select (next step), you don't actually need them.

Next step was to select the area of access land I was interested in. This was the Midgley Moor area, just north east of Hebden Bridge. By default QGIS opens with the hand tool selected, which moves the map around. You need to select the 'selection' tool, which is a mouse pointer off to the left on the tool bar.

Shift-select and shift-click (or click drag) allow you to select the bits of the access layer polygon you want (the access layer is made up of thousands of little shapes denoting individual pieces of land - we don't care about that, we just want to select large areas of it). Once selected it looks like this:


The next step is a bit fiddly:

  • switch on 'edit mode'
  • in the edit menu select 'edit geometry' and 'merge features'







(you don't need to change anything in the dialogue that comes up for merging features).


Once merged it looks like this:



The next step is to copy the selection then paste it into a separate vector layer:



You'll need to provide a filename for this new layer (which of course means you have it permanently). This then appears on your map (the new layer is purple):




OK, so now we have a vector layer which contains just the feature that we want our locations to be in.

(Note: I've created a layer with just the access land around here, and merged individual tiny parcels of land into larger ones. That way I can select one block of access land and generate locations on it)

In this picture I've zoomed in, changed the colour of the new vector layer to make it easier to see the points we're going to plot, and switched off the main access land layer:


The next step is to actually create the random locations. For this we use the built in research tools (intended for sampling locations e.g. soil samples, water samples etc).


The option you want is 'random points inside polygons'.

In the options dialogue, choose how many points you want, how far apart you want them (minimum) and make sure the source layer is the new layer you created earlier. If you have a layer with multiple areas, you can choose to only generate points on the individual area you've selected.


Click 'ok' and QGIS will create your list of locations.


Here's the map with the locations shown:


At this point we now have a temporary layer in our project, containing a series of random points plotted on the map. The next thing we need to do is convert that to a set of OSGRs.

First of all, we need to export the points as a csv, with their coordinates. The easiest system to use for this is XY.


make sure you include XY under 'Geometry', or your resulting csv will only contain the IDs.


Open the resulting text file, select the entire contents and 'copy'.



I used this website to do the conversion.

Paste the contents of your csv into the box on the website:



Ensure that you've selected XY as the input type, and OSGR as the output, then hit 'convert'.


And there in the bottom box is your list of controls, with OSGRs.

Finally, you might want to save your temporary layer as a permanent file, so you can check your route against your controls later (there's a qgis plugin that allows you to import gpx files - I'll write about that another time).









Update

I've been tinkering with this for a few weeks, and working on nice O inspired maps as well. Using Qgis styles, the result looks a bit like this:


(This was a map I generated to replace day 1 of the cancelled OMM).

I've also discovered that by installing the FSC plugins, you can get an OSGR by hovering over a point, which speeds things up a bit instead of batch converting them.


Lessons from actually trying this

  • Inaccuracies in estimating distance and in pacing can compound each other.
  • Rounding grid refs down instead of to the nearest number is stupid.
  • Finding an arbitrary place with no associated feature on moorland is extremely difficult
  • I'm not very good at drawing circles on maps
  • Permanent marker rubs off lamfold maps fairly easily, especially when you don't want it to

Further Improvement

By using the tool in FSC to assign grid refs to a layer, and twiddling my styles somewhat, I now have 6 fig grid refs printed directly on the controls.