Safe Haskell | None |
---|---|

Language | Haskell2010 |

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
{```
link MGRSRef#toUTMRef() toUTMRef()} method is provided to
convert an MGRSRef object into a {
```

link UTMRef}
object. The reverse conversion can be made using the
{```
link #MGRSRef(UTMRef) MGRSRef(UTMRef)} constructor.
MGRSRef objects can be converted to {
```

link LatLng LatLng}
objects using the {```
link MGRSRef#toLatLng() toLatLng()} method. The reverse
conversion is made using the {
```

link LatLng#toMGRSRef() LatLng.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.

- data MGRSRef = MGRSRef {}
- data Precision
- northingIds :: [Char]
- showWithPrecision :: MGRSRef -> Precision -> String
- toMGRSRef :: UTMRef -> Bool -> MGRSRef
- mkMGRSRef :: Int -> Int -> Char -> Char -> Int -> Char -> Precision -> Bool -> Except String MGRSRef
- mkMGRSRef' :: String -> Except String MGRSRef
- toUTMRef :: MGRSRef -> Except String UTMRef

# Documentation

northingIds :: [Char] Source #

Northing characters

:: MGRSRef | |

-> Precision | One of MGRSRef.PRECISION_1M, MGRSRef.PRECISION_10M, MGRSRef.PRECISION_100M, MGRSRef.PRECISION_1000M, MGRSRef.PRECISION_10000M. |

-> String | ~ String representation of this MGRS reference to the required precision. |

Return a String representation of this MGRS reference to 1m, 10m, 100m, 1000m or 10000m precision.

:: UTMRef | UTM reference. |

-> Bool | True if the parameters represent an MGRS reference using the Bessel 1841 ellipsoid; false is the parameters represent an MGRS reference using the GRS 1980, International or WGS84 ellipsoids. |

-> MGRSRef |

Create a new MGRS reference object from the given UTM reference. It is assumed that this MGRS reference represents a point using the GRS 1980, International or WGS84 ellipsoids. It is assumed that the UTMRef object is valid.

:: Int | The easting in metres. Must be greater than or equal to 0.0 and less than 100000. |

-> Int | The northing in metres. Must be greater than or equal to 0.0 and less than or equal to 500000.0. |

-> Char | The character representing the 100,000km easting square. |

-> Char | The character representing the 100,000km northing square. |

-> Int | The UTM zone number representing the longitude. |

-> Char | The UTM zone character representing the latitude. |

-> Precision | The precision of the given easting and northing. |

-> Bool | True if the parameters represent an MGRS reference using the Bessel 1841 ellipsoid; False is the parameters represent an MGRS reference using the GRS 1980, International or WGS84 ellipsoids. |

-> Except String MGRSRef | Throws an exception if any of the given parameters are invalid. Note that the parameters are only checked for the range of values that they can take on. Being able to create an MGRSRef object does not necessarily imply that the reference is valid. |