mccombe.mapping
Class Lambert

java.lang.Object
  extended by mccombe.mapping.CoordinateSystem
      extended by mccombe.mapping.Projection
          extended by 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 mccombe.mapping.CoordinateSystem
locus, ref, sph
 
Constructor Summary
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
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(java.lang.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
 java.lang.String toString()
          Provide a String representation in Lambert coordinates.
 
Methods inherited from class 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 Detail

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 - Eastine and Northing values
sphere - The Ellipsoid to use
datum - the Datum to use
Method Detail

getEN

protected static ENPair getEN(java.lang.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 java.lang.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)