How Much National Trust Or Open Access Land Is Near Railway Stations?

metadata

Recently, I posted about How Much National Trust Or Open Access Land Is Nearby? The purpose of the previous blog post was to see if I could rank different locations by how much open land there was within a given radius, as I had realised that simply asking “how far away is some open land?” is a silly question.

This blog post is a generalisation of the previous one: I have downloaded the National Public Transport Access Node (NaPTAN) dataset and repeated the same survey for every single railway station in the UK. The new script is also available in How Much Land (HML). Unfortunately, the results for Scottish railway stations are pointless as the open land datasets do not extend north of the border.

§1 Railway Stations

Below is a simple map showing all of the railway stations in the National Public Transport Access Node (NaPTAN) dataset that exist within the open land dataset (merged by How Much Land (HML)). I like the fact that the railway stations are so frequent that it is possible to infer the railway lines themselves.

Download:
  1. 512 px × 323 px (0.2 Mpx; 123.1 KiB)
  2. 1,024 px × 647 px (0.7 Mpx; 332.1 KiB)
  3. 2,048 px × 1,293 px (2.6 Mpx; 884.2 KiB)
  4. 2,152 px × 1,359 px (2.9 Mpx; 592.6 KiB)

§2 Open Land Within A 10km Radius

Looping over all of the railway stations it is possible to find out how much land is within 10km. The plot below shows the railway stations coloured according to this metric and the table below that shows the Top 10 (you can also download data as a CSV)

Download:
  1. 512 px × 482 px (0.2 Mpx; 217.3 KiB)
  2. 1,024 px × 964 px (1.0 Mpx; 684.6 KiB)
  3. 2,048 px × 1,928 px (3.9 Mpx; 1.9 MiB)
  4. 2,069 px × 1,948 px (4.0 Mpx; 1.6 MiB)
Railway Station Open Land Within 10km [%]
Garsdale Rail Station 73.60
Dent Rail Station 71.57
Alston Rail Station 71.07
Gilderdale 70.78
Slaggyford Rail Station 69.77
Kirkhaugh Rail Station 69.33
Lintley Rail Station 68.49
Ribblehead Rail Station 68.47
Stanhope Rail Station 60.60
Horton-in-Ribblesdale Rail Station 55.09

§3 Open Land Within A 20km Radius

Looping over all of the railway stations it is possible to find out how much land is within 20km. The plot below shows the railway stations coloured according to this metric and the table below that shows the Top 10 (you can also download data as a CSV)

Download:
  1. 512 px × 482 px (0.2 Mpx; 217.5 KiB)
  2. 1,024 px × 964 px (1.0 Mpx; 686.8 KiB)
  3. 2,048 px × 1,928 px (3.9 Mpx; 1.9 MiB)
  4. 2,069 px × 1,948 px (4.0 Mpx; 1.6 MiB)
Railway Station Open Land Within 20km [%]
Garsdale Rail Station 66.31
Dent Rail Station 60.29
Alston Rail Station 55.45
Kirkby Stephen Rail Station 54.50
Ribblehead Rail Station 54.17
Windermere Rail Station 53.53
Horton-in-Ribblesdale Rail Station 51.83
Gilderdale 51.78
Kirkhaugh Rail Station 49.07
Haltwhistle Rail Station 47.56

§4 Open Land Within A 30km Radius

Looping over all of the railway stations it is possible to find out how much land is within 30km. The plot below shows the railway stations coloured according to this metric and the table below that shows the Top 10 (you can also download data as a CSV)

Download:
  1. 512 px × 482 px (0.2 Mpx; 217.6 KiB)
  2. 1,024 px × 964 px (1.0 Mpx; 687.7 KiB)
  3. 2,048 px × 1,928 px (3.9 Mpx; 1.9 MiB)
  4. 2,069 px × 1,948 px (4.0 Mpx; 1.6 MiB)
Railway Station Open Land Within 30km [%]
Garsdale Rail Station 52.98
Kirkby Stephen Rail Station 52.62
Windermere Rail Station 51.45
Appleby Rail Station 50.41
Dent Rail Station 50.25
Staveley Rail Station 48.06
Ribblehead Rail Station 47.68
Horton-in-Ribblesdale Rail Station 46.46
Burneside (Cumbria) Rail Station 43.83
Bardon Mill Rail Station 43.19

§5 Open Land Within A 40km Radius

Looping over all of the railway stations it is possible to find out how much land is within 40km. The plot below shows the railway stations coloured according to this metric and the table below that shows the Top 10 (you can also download data as a CSV)

Download:
  1. 512 px × 482 px (0.2 Mpx; 217.7 KiB)
  2. 1,024 px × 964 px (1.0 Mpx; 687.7 KiB)
  3. 2,048 px × 1,928 px (3.9 Mpx; 1.9 MiB)
  4. 2,069 px × 1,948 px (4.0 Mpx; 1.6 MiB)
Railway Station Open Land Within 40km [%]
Appleby Rail Station 49.56
Kirkby Stephen Rail Station 47.07
Burneside (Cumbria) Rail Station 44.84
Staveley Rail Station 44.75
Garsdale Rail Station 44.02
Kendal Rail Station 43.99
Dent Rail Station 43.45
Oxenholme Lake District Rail Station 43.14
Oxenholme Railway Station 43.14
Penrith North Lakes Rail Station 42.82

§6 Open Land Within A 50km Radius

Looping over all of the railway stations it is possible to find out how much land is within 50km. The plot below shows the railway stations coloured according to this metric and the table below that shows the Top 10 (you can also download data as a CSV)

Download:
  1. 512 px × 482 px (0.2 Mpx; 217.7 KiB)
  2. 1,024 px × 964 px (1.0 Mpx; 687.3 KiB)
  3. 2,048 px × 1,928 px (3.9 Mpx; 1.9 MiB)
  4. 2,069 px × 1,948 px (4.0 Mpx; 1.6 MiB)
Railway Station Open Land Within 50km [%]
Kirkby Stephen Rail Station 44.34
Appleby Rail Station 44.13
Langwathby Rail Station 43.35
Kendal Rail Station 43.22
Burneside (Cumbria) Rail Station 42.76
Oxenholme Lake District Rail Station 42.31
Oxenholme Railway Station 42.30
Penrith North Lakes Rail Station 42.29
Lazonby 40.64
Lazonby Railway Station 40.62

§7 Summary

To me, there are a few interesting observations to make from the above datasets.

§8 Appendix

There is a tiny little companion script to generate downsized background images of open land for use in Python scripts.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

#!/usr/bin/env python3

# Use the proper idiom in the main module ...
# NOTE: See https://docs.python.org/3.11/library/multiprocessing.html#the-spawn-and-forkserver-start-methods
if __name__ == "__main__":
    # NOTE: The four PNGs that are used here are the output from my GitHub
    #       repository "hml", see:
    #         * https://github.com/Guymer/hml

    # Import standard modules ...
    import os

    # Import my modules ...
    try:
        import pyguymer3
        import pyguymer3.image
    except:
        raise Exception("\"pyguymer3\" is not installed; you need to have the Python module from https://github.com/Guymer/PyGuymer3 located somewhere in your $PYTHONPATH") from None

    # Define constants ...
    datasets = [
        "alwaysOpen",
        "limitedAccess",
        "merged",
        "openAccess",
    ]

    # Loop over datasets ...
    for dataset in datasets:
        # Deduce PNG name ...
        pfile1 = f"{dataset}.png"

        # Loop over downscaled sizes ...
        for width in [512, 1024, 2048, 4096]:
            # Deduce downscaled PNG file name ...
            pfile2 = f"{dataset}{width:04d}px.png"

            # Skip if downscaled PNG already exists
            if os.path.exists(pfile2):
                continue

            print(f"Creating \"{pfile2}\" ...")

            # Convert PNG to downscaled PNG ...
            pyguymer3.image.image2png(pfile1, pfile2, screenHeight = width, screenWidth = width, strip = True)

              
You may also download “background-open-land-images.py” directly or view “background-open-land-images.py” on GitHub Gist (you may need to manually checkout the “main” branch).