Safe Haskell | None |
---|

Distinguished coordinate systems for the United Kingdom.

- data OSGB36 = OSGB36
- data UkNationalGrid = UkNationalGrid
- ukGrid :: GridTM OSGB36
- fromUkGridReference :: String -> Maybe (GridPoint UkNationalGrid, GridOffset)
- toUkGridReference :: Int -> GridPoint UkNationalGrid -> Maybe String

# Documentation

Ellipsoid definition for Great Britain. Airy 1830 offset from the centre of the Earth and rotated slightly.

The Helmert parameters are from the Ordnance Survey document "A Guide to Coordinate Systems in Great Britain", which notes that it can be in error by as much as 5 meters and should not be used in applications requiring greater accuracy. A more precise conversion requires a large table of corrections for historical inaccuracies in the triangulation of the UK.

data UkNationalGrid Source

The UK National Grid is a Transverse Mercator projection with a true origin at
49 degrees North, 2 degrees West on OSGB36, and a false origin 400km West and 100 km North of
the true origin. The scale factor is defined as `10**(0.9998268 - 1)`

.

fromUkGridReference :: String -> Maybe (GridPoint UkNationalGrid, GridOffset)Source

Convert a grid reference to a position, if the reference is valid. This returns the position of the south-west corner of the nominated grid square and an offset to its centre. Altitude is set to zero.

toUkGridReference :: Int -> GridPoint UkNationalGrid -> Maybe StringSource

Find the nearest UK grid reference point to a specified position. The Int argument is the number of
digits precision, so 2 for a 4-figure reference and 3 for a 6-figure reference, although any value
between 0 and 5 can be used (giving a 1 meter precision).
Altitude is ignored. If the result is outside the area defined by the two letter grid codes then
`Nothing`

is returned.