Package uk.co.mccombe.mapping

# Class Lambert

java.lang.Object
uk.co.mccombe.mapping.CoordinateSystem
uk.co.mccombe.mapping.Projection
uk.co.mccombe.mapping.Lambert

Direct Known Subclasses:
  `Lambert93`, `LambertI`, `LambertII`, `LambertIIExtended`, `LambertIII`, `LambertIV`

public abstract class Lambert extends Projection

An abstract base class for implementations of the Lambert Conformal Conic Projection

A Lambert projection maps points on the ellipsoid onto a cone which touches the ellipsoid at two parallels of latitude. For countries with a large east-west extent, it provides smaller variations in grid convergence than the more common TransverseMercator projection - but over a limited range of latitude. IGN, France's national mapping agency, adopted the Lambert Conformal Conic projection but had to divide mainland France into three zones of latitude, with a fourth zone for the island of Corsica. These are implemented in this package as subclasses of Lambert (see `LambertI`, `LambertII`, `LambertIII`, `LambertIV`). To overcome the obvious inconvenience of having the country divided into four distinct coordinate zones, a fifth set of Lambert Conformal Conical projection coefficients `LambertIIExtended` was produced to provide a nationwide coordinate system but with greater degrees of distortion. Ironically, the Lambert Conical projections have not been well-supported by handheld GPS equipment and many French maps (such as the 1:25000 Blue Series) are now over-printed with a UTM grid.

In 1996, IGN introduced a new coordinate system known as `Lambert 93`

See Also:
  - ETRS89 Lambert Conformal Conic Coordinate Reference System
  - Systemes de Projection (in French)

## Field Summary

### Fields inherited from class uk.co.mccombe.mapping.CoordinateSystem

`locus, ref, sph`

## Constructor Summary

Constructors
Constructor
Description
`Lambert(ENPair en, Ellipsoid sphere, Datum datum)`
Create a new Lambert object based on Easting and Northing distances
`Lambert(Position p, Ellipsoid e, Datum d)`
Creates a new instance of Lambert based on Position, Ellipsoid and Datum

## Method Summary

Modifier and Type
Method
Description
`protected void`
`calcCoords()`
Initialise coordinates for this Position
`Datum`
`defaultDatum()`
Define the default datum for this coordinate system
`Ellipsoid`
`defaultEllipsoid()`
Define the default Ellipsoid for this coordinate system
`protected abstract double`
`e0()`
Define false easting value
`protected static ENPair`
`getEN(String gridref)`
Parse Lambert coordinates into easting and northing distances
`double`
`gridConvergence()`
Calculate grid convergence
`protected abstract double`
`lamda0()`
Define longitude of grid origin
`protected abstract double`
`n0()`
Define false northing
`protected abstract double`
`phiB()`
Define latitude of false origin
`protected abstract double`
`phiL()`
Define lower standard parallel for this projection
`protected abstract double`
`phiU()`
Define Upper standard parallel for this conical projection
`ENPair`
`toEN()`
Provide easting and northing distances
`String`
`toString()`
Provide a String representation in Lambert coordinates.

### Methods inherited from class uk.co.mccombe.mapping.CoordinateSystem

`getDatum, getEllipsoid, getName, getPosition, getWGS84, parseDouble, toLatLong, toLatLongString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### Lambert

public Lambert(Position p, Ellipsoid e, Datum d)
Creates a new instance of Lambert based on Position, Ellipsoid and Datum

Parameters:
  `p` - Position of this point
  `e` - The Ellipsoid to use
  `d` - The Datum associated with this instance

### Lambert

public Lambert(ENPair en, Ellipsoid sphere, Datum datum)
Create a new Lambert object based on Easting and Northing distances

Parameters:
  `en` - Easting and Northing values
  `sphere` - The Ellipsoid to use
  `datum` - the Datum to use

## Method Details

### getEN

protected static ENPair getEN(String gridref) throws GridFormatException
Parse Lambert coordinates into easting and northing distances

Parameters:
  `gridref` - A pair of Lambert coordinates (e.g. "X=435.212 Y=217.306"), specified in km.
Returns:
  Easting and Northing distances (m)
Throws:
  `GridFormatException` - Invalid coordinate format results in a GridFormatException being thrown

### toEN

public ENPair toEN()
Provide easting and northing distances

Specified by:
  `toEN` in class `Projection`
Returns:
  Easting and Northing distances (in metres)

### toString

public String toString()
Provide a String representation in Lambert coordinates. These are of the form "X=eeee.eee Y=nnnn.nnn" where eeee.eee and nnnn.nnn are the easting and northing distances in km.

Specified by:
  `toString` in class `CoordinateSystem`
Returns:
  The coordinate String

### calcCoords

protected void calcCoords()
Initialise coordinates for this Position

### gridConvergence

public double gridConvergence()
Calculate grid convergence

Specified by:
  `gridConvergence` in class `Projection`
Returns:
  Grid convergence (degrees)

### defaultDatum

public Datum defaultDatum()
Define the default datum for this coordinate system

Specified by:
  `defaultDatum` in class `CoordinateSystem`
Returns:
  default datum

### defaultEllipsoid

public Ellipsoid defaultEllipsoid()
Define the default Ellipsoid for this coordinate system

Specified by:
  `defaultEllipsoid` in class `CoordinateSystem`
Returns:
  default Ellipsoid

### phiU

protected abstract double phiU()
Define Upper standard parallel for this conical projection

Returns:
  Upper Standard Parallel (radians)

### phiL

protected abstract double phiL()
Define lower standard parallel for this projection

Returns:
  Lower Standard Parallel (radians)

### phiB

protected abstract double phiB()
Define latitude of false origin

Returns:
  Latitude of false origin (radians)

### lamda0

protected abstract double lamda0()
Define longitude of grid origin

Returns:
  Longitude of grid origin (radians)

### e0

protected abstract double e0()
Define false easting value

Returns:
  False easting (m)

### n0

protected abstract double n0()
Define false northing

Returns:
  False northing distance (m)