Click or drag to resize
DotNetCoords Namespace
doogal.co.uk Home



Namespace containing classes for converting between various geographical coordinate systems
Classes
  ClassDescription
Public classCoordinateSystem
Base class for classes defining co-ordinate systems.
Public classECEFRef
ECEF (earth-centred, earth-fixed) Cartesian co-ordinates are used to define a point in three-dimensional space. ECEF co-ordinates are defined relative to an x-axis (the intersection of the equatorial plane and the plane defined by the prime meridian), a y-axis (at 90° to the x-axis and its intersection with the equator) and a z-axis (intersecting the North Pole). All the axes intersect at the point defined by the centre of mass of the Earth.
Public classIrishRef
Class to represent an Irish National Grid reference.

Irish National Grid

  • Projection: Transverse Mercator
  • Reference ellipsoid: Modified Airy
  • Units: metres
  • Origin: 53°30'N, 8°W
  • False co-ordinates of origin: 200000m east, 250000m north

Public classLatLng
Class to represent a latitude/longitude pair based on a particular datum.
Public classMGRSRef
Class to represent a Military Grid Reference System (MGRS) reference.

Military Grid Reference System (MGRS)

The Military Grid Reference System (MGRS) is an extension of the Universal Transverse Mercator (UTM) reference system. An MGRS reference is made from 5 parts:

UTM Longitude Zone

This is a number indicating which UTM longitude zone the reference falls into. Zones are numbered from 1 (starting at 180°W) through 60. Each zone is 6° wide.

UTM Latitude Zone

Latitude is split into regions that are 8° high, starting at 80°S. Latitude zones are lettered using C through X, but omitting I and O as they can easily be confused with the numbers 1 and 0.

100,000m Square identification

Each UTM zone is treated as a square 100,000m to a side. The 50,000m easting is centred on the centre-point of the UTM zone. 100,000m squares are identified using two characters - one to identify the row and one to identify the column.

Row identifiers use the characters A through V (omitting I and O again). The sequence is repeated every 2,000,000m from the equator. If the UTM longitude zone is odd, then the lettering is advanced by five characters to start at F.

Column identifiers use the characters A through Z (again omitting I and O).

Easting and northing

Each 100,000m grid square is further divided into smaller squares representing 1m, 10m, 100m, 1,000m and 10,000m precision. The easting and northing are given using the numeric row and column reference of the square, starting at the bottom-left corner of the square.

MGRS Reference Example

18SUU8362601432 is an example of an MGRS reference. '18' is the UTM longitude zone, 'S' is the UTM latitude zone, 'UU' is the 100,000m square identification, 83626 is the easting reference to 1m precision and 01432 is the northing reference to 1m precision.

MGRSRef

Methods are provided to query an MGRSRef object for its parameters. As MGRS references are related to UTM references, a ToUTMRef method is provided to convert an MGRSRef object into a UTMRef object. The reverse conversion can be made using the MGRSRef(UTMRef, Boolean) constructor.

MGRSRef objects can be converted to LatLng objects using the ToLatLng method. The reverse conversion is made using the ToMGRSRef method.

Some MGRS references use the Bessel 1841 ellipsoid rather than the Geodetic Reference System 1980 (GRS 1980), International or World Geodetic System 1984 (WGS84) ellipsoids. Use the constructors with the optional boolean parameter to be able to specify whether your MGRS reference uses the Bessel 1841 ellipsoid. Note that no automatic determination of the correct ellipsoid to use is made.

Important note: There is currently no support for MGRS references in polar regions north of 84°N and south of 80°S. There is also no account made for UTM zones with slightly different sizes to normal around Svalbard and Norway.

Public classNotDefinedOnUtmGridException
NotDefinedOnUtmGridException exception class, thrown when parameters are provided that do not fit into the Universal Transverse Mercator grid
Public classOSRef

Class 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.

km0100200300400500600700
1200HLHMHNHOHPJLJM
1100HQHRHSHTHUJQJR
1000HVHWHXHYHZJVJW
900NANBNCNDNEOAOB
800NFNGNHNJNKOFOGOH
700NLNMNNNONPOLOMON
600NQNRNSNTNUOQOROS
500NWNXNYNZOVOWOX
400SBSCSDSETATBTC
300SGSHSJSKTFTGTH
200SMSNSOSPTLTMTN
100SQSRSSSTSUTQTRTS
0SVSWSXSYSZTVTW

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.

It is possible to extend the four-figure grid reference for more accuracy. For example, a six-figure grid reference would be accurate to 100m and an eight-figure grid reference would be accurate to 10m.

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

Public classUTMRef
Class to represent a Universal Transverse Mercator (UTM) reference.
Enumerations
  EnumerationDescription
Public enumerationEastWest
Enumerated type defining whether a longitude is east or west of the prime meridian
Public enumerationNorthSouth
Enumerated type defining whether a latitude is North or South of the equator
Public enumerationPrecision
Enumerated type used to indicate the required precision