hcoord-1.0.0.0: Easily convert between latitude/longitude, UTM and OSGB.

Safe HaskellSafe
LanguageHaskell2010

OSRef

Description

To represent an Ordnance Survey of Great Britain (OSGB) grid reference.

British National Grid Projection: Transverse Mercator Reference ellipsoid: Airy 1830 Units: metres Origin: 49°N, 2°W False co-ordinates of origin: 400000m east, -100000m north

A full reference includes a two-character code identifying a particular 100,000m grid square. The table below shows how the two-character 100,000m grid squares are identified. The bottom left corner is at the false origin of the grid. Squares without values fall outside the boundaries of the British National Grid.

km 0 100 200 300 400 500 600 700

1200 HL HM HN HO HP JL JM

1100 HQ HR HS HT HU JQ JR

1000 HV HW HX HY HZ JV JW

900 NA NB NC ND NE OA OB

800 NF NG NH NJ NK OF OG OH

700 NL NM NN NO NP OL OM ON

600 NQ NR NS NT NU OQ OR OS

500

NW NX NY NZ OV OW OX

400

SB SC SD SE TA TB TC

300

SG SH SJ SK TF TG TH

200

SM SN SO SP TL TM TN

100 SQ SR SS ST SU TQ TR TS

0 SV SW SX SY SZ TV TW

Within each 100,000m square, the grid is further subdivided into 1000m squares. These 1km squares are shown on Ordnance Survey 1:25000 and 1:50000 mapping as the main grid. To reference a 1km square, give the easting and then the northing, e.g. TR2266. In this example, TR represents the 100,000m square, 22 represents the easting (in km) and 66 represents the northing (in km). This is commonly called a four-figure grid reference.

When providing local references, the 2 characters representing the 100,000m square are often omitted.

Synopsis

Documentation

data OSRef Source #

Constructors

OSRef 

Fields

  • easting :: Double

    The easting in metres relative to the origin of the British National Grid.

  • northing :: Double

    The northing in metres relative to the origin of the British National Grid.

  • datum :: Datum
     

Instances

Eq OSRef Source # 

Methods

(==) :: OSRef -> OSRef -> Bool #

(/=) :: OSRef -> OSRef -> Bool #

Show OSRef Source # 

Methods

showsPrec :: Int -> OSRef -> ShowS #

show :: OSRef -> String #

showList :: [OSRef] -> ShowS #

data Precision Source #

Constructors

SixDigits

A six-figure representation this OSGB grid reference i.e XY123456

EightDigits

A eight-figure representation this OSGB grid reference i.e XY12345678

mkOSRef Source #

Arguments

:: Double

The easting in metres. Must be greater than or equal to 0.0 and less than 800000.0.

-> Double

The northing in metres. Must be greater than or equal to 0.0 and less than 1400000.0.

-> Except String OSRef

Throws an exception if either the easting or the northing are invalid.

Create a new Ordnance Survey grid reference using a given easting and northing. The easting and northing must be in metres and must be relative to the origin of the British National Grid.

mkOSRef' Source #

Arguments

:: String

a String representing a six-figure Ordnance Survey grid reference in the form XY123456

-> Except String OSRef

Throws an exception if ref is not of the form XY123456.

Take a string formatted as a six-figure OS grid reference (e.g. TG514131) and create a new OSRef object that represents that grid reference. The first character must be H, N, S, O or T. The second character can be any uppercase character from A through Z excluding I.

toOSRef :: LatLng -> Except String OSRef Source #

Convert latitude and longitude into an OSGB (Ordnance Survey of Great Britain) grid reference.

toLatLng Source #

Arguments

:: OSRef 
-> Except String LatLng

To represent OSGB grid reference using the OSGB36 datum.

Convert this OSGB grid reference to a latitude/longitude pair using the OSGB36 datum. Note that, the LatLng object may need to be converted to the WGS84 datum depending on the application.

evalEasting Source #

Arguments

:: Double

The easting in metres. Must be greater than or equal to 0.0 and less than 800000.0.

-> Except String Double

Throws an Exception if the easting is invalid.

Validate the easting.

evalNorthing Source #

Arguments

:: Double

The northing in metres. Must be greater than or equal to 0.0 and less than 1400000.0.

-> Except String Double

Throws an Exception if the northing is invalid.

Validate the northing.