ucar.unidata.geoloc.projection
Class LambertConformal

java.lang.Object
  extended by ucar.unidata.geoloc.ProjectionImpl
      extended by ucar.unidata.geoloc.projection.LambertConformal
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Projection

public class LambertConformal
extends ProjectionImpl

Lambert Conformal Projection, one or two standard parallels, spherical earth. Projection plane is a cone whose vertex lies on the line of the earth's axis, and intersects the earth at two parellels (par1, par2), or is tangent to the earth at one parellel par1 = par2. The cone is flattened by splitting along the longitude = lon0+180.

See John Snyder, Map Projections used by the USGS, Bulletin 1532, 2nd edition (1983), p 101

Author:
John Caron
See Also:
Projection, ProjectionImpl, Serialized Form

Field Summary
 
Fields inherited from class ucar.unidata.geoloc.ProjectionImpl
ATTR_NAME, EARTH_RADIUS, INDEX_LAT, INDEX_LON, INDEX_X, INDEX_Y, PI, PI_OVER_2, PI_OVER_4
 
Constructor Summary
LambertConformal()
          Constructor with default parameters
LambertConformal(double lat0, double lon0, double par1, double par2)
          Construct a LambertConformal Projection, two standard parellels.
LambertConformal(double lat0, double lon0, double par1, double par2, double false_easting, double false_northing)
          Construct a LambertConformal Projection, two standard parellels.
 
Method Summary
 java.lang.Object clone()
          Clone this projection.
 ProjectionImpl constructCopy()
          copy constructor - avoid clone !!
 boolean crossSeam(ProjectionPoint pt1, ProjectionPoint pt2)
          This returns true when the line between pt1 and pt2 crosses the seam.
 boolean equals(java.lang.Object proj)
          Check for equality with the Object in question
 double getFalseEasting()
          Get the false easting, in km.
 double getFalseNorthing()
          Get the false northing, in km.
 double getOriginLat()
          Get the origin latitude.
 double getOriginLon()
          Get the origin longitude.
 double getParallelOne()
          Get the first standard parallel
 double getParallelTwo()
          Get the second standard parallel
 java.lang.String getProjectionTypeLabel()
          Get the label to be used in the gui for this type of projection
 double getScale(double lat)
          Get the scale for the lat.
 double[][] latLonToProj(double[][] from, double[][] to, int latIndex, int lonIndex)
          Convert lat/lon coordinates to projection coordinates.
 float[][] latLonToProj(float[][] from, float[][] to, int latIndex, int lonIndex)
          Convert lat/lon coordinates to projection coordinates.
 ProjectionPoint latLonToProj(LatLonPoint latLon, ProjectionPointImpl result)
          Convert a LatLonPoint to projection coordinates
 java.lang.String paramsToString()
          Create a String of the parameters.
 double[][] projToLatLon(double[][] from, double[][] to)
          Convert projection coordinates to lat/lon coordinate.
 float[][] projToLatLon(float[][] from, float[][] to)
          Convert projection coordinates to lat/lon coordinate.
 LatLonPoint projToLatLon(ProjectionPoint world, LatLonPointImpl result)
          Convert projection coordinates to a LatLonPoint Note: a new object is not created on each call for the return value.
 void setFalseEasting(double falseEasting)
          Set the false_easting, in km.
 void setFalseNorthing(double falseNorthing)
          Set the false northing, in km.
 void setOriginLat(double lat)
          Set the origin latitude.
 void setOriginLon(double lon)
          Set the origin longitude.
 void setParallelOne(double par)
          Set the first standard parallel
 void setParallelTwo(double par)
          Set the second standard parallel
 void setParellelOne(double par)
          Deprecated. use setParallelOne(double). Keep the mispelled name for persisted objects
 void setParellelTwo(double par)
          Deprecated. use setParallelTwo(double). Keep the mispelled name for persisted objects
 java.lang.String toWKS()
          _more_
 
Methods inherited from class ucar.unidata.geoloc.ProjectionImpl
getClassName, getDefaultMapArea, getDefaultMapAreaLL, getHeader, getLatLonBoundingBox, getName, getProjectionParameters, isLatLon, latLonToProj, latLonToProj, latLonToProj, latLonToProj, latLonToProj, latLonToProj, latLonToProj, latLonToProj, latLonToProjBB, projToLatLon, projToLatLon, projToLatLon, projToLatLon, projToLatLonBB, setDefaultMapArea, setName, toString
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LambertConformal

public LambertConformal()
Constructor with default parameters


LambertConformal

public LambertConformal(double lat0,
                        double lon0,
                        double par1,
                        double par2)
Construct a LambertConformal Projection, two standard parellels. For the one standard parellel case, set them both to the same value.

Parameters:
lat0 - lat origin of the coord. system on the projection plane
lon0 - lon origin of the coord. system on the projection plane
par1 - standard parallel 1
par2 - standard parallel 2
Throws:
java.lang.IllegalArgumentException - if lat0, par1, par2 = +/-90 deg

LambertConformal

public LambertConformal(double lat0,
                        double lon0,
                        double par1,
                        double par2,
                        double false_easting,
                        double false_northing)
Construct a LambertConformal Projection, two standard parellels. For the one standard parellel case, set them both to the same value.

Parameters:
lat0 - lat origin of the coord. system on the projection plane
lon0 - lon origin of the coord. system on the projection plane
par1 - standard parallel 1
par2 - standard parallel 2
false_easting - natural_x_coordinate + false_easting = x coordinate in km
false_northing - natural_y_coordinate + false_northing = y coordinate in km
Throws:
java.lang.IllegalArgumentException - if lat0, par1, par2 = +/-90 deg
Method Detail

constructCopy

public ProjectionImpl constructCopy()
Description copied from class: ProjectionImpl
copy constructor - avoid clone !!

Specified by:
constructCopy in class ProjectionImpl
Returns:
a copy of this Projection

clone

public java.lang.Object clone()
Clone this projection.

Overrides:
clone in class ProjectionImpl
Returns:
Clone of this

equals

public boolean equals(java.lang.Object proj)
Check for equality with the Object in question

Specified by:
equals in interface Projection
Specified by:
equals in class ProjectionImpl
Parameters:
proj - object to check
Returns:
true if they are equal

getParallelTwo

public double getParallelTwo()
Get the second standard parallel

Returns:
the second standard parallel

setParallelTwo

public void setParallelTwo(double par)
Set the second standard parallel

Parameters:
par - the second standard parallel

setParellelTwo

public void setParellelTwo(double par)
Deprecated. use setParallelTwo(double). Keep the mispelled name for persisted objects

Set the second standard parallel.

Parameters:
par - the second standard parallel

getParallelOne

public double getParallelOne()
Get the first standard parallel

Returns:
the first standard parallel

setParallelOne

public void setParallelOne(double par)
Set the first standard parallel

Parameters:
par - the first standard parallel

setParellelOne

public void setParellelOne(double par)
Deprecated. use setParallelOne(double). Keep the mispelled name for persisted objects

Set the first standard parallel.

Parameters:
par - the first standard parallel

getOriginLon

public double getOriginLon()
Get the origin longitude.

Returns:
the origin longitude.

setOriginLon

public void setOriginLon(double lon)
Set the origin longitude.

Parameters:
lon - the origin longitude.

getOriginLat

public double getOriginLat()
Get the origin latitude.

Returns:
the origin latitude.

setOriginLat

public void setOriginLat(double lat)
Set the origin latitude.

Parameters:
lat - the origin latitude.

getFalseEasting

public double getFalseEasting()
Get the false easting, in km.

Returns:
the false easting.

setFalseEasting

public void setFalseEasting(double falseEasting)
Set the false_easting, in km. natural_x_coordinate + false_easting = x coordinate

Parameters:
falseEasting - x offset

getFalseNorthing

public double getFalseNorthing()
Get the false northing, in km.

Returns:
the false northing.

setFalseNorthing

public void setFalseNorthing(double falseNorthing)
Set the false northing, in km. natural_y_coordinate + false_northing = y coordinate

Parameters:
falseNorthing - y offset

getProjectionTypeLabel

public java.lang.String getProjectionTypeLabel()
Get the label to be used in the gui for this type of projection

Overrides:
getProjectionTypeLabel in class ProjectionImpl
Returns:
Type label

paramsToString

public java.lang.String paramsToString()
Create a String of the parameters.

Specified by:
paramsToString in interface Projection
Specified by:
paramsToString in class ProjectionImpl
Returns:
a String of the parameters

toWKS

public java.lang.String toWKS()
_more_

Returns:
_more_

getScale

public double getScale(double lat)
Get the scale for the lat.

Parameters:
lat - lat to use
Returns:
scale

crossSeam

public boolean crossSeam(ProjectionPoint pt1,
                         ProjectionPoint pt2)
This returns true when the line between pt1 and pt2 crosses the seam. When the cone is flattened, the "seam" is lon0 +- 180.

Specified by:
crossSeam in interface Projection
Specified by:
crossSeam in class ProjectionImpl
Parameters:
pt1 - point 1
pt2 - point 2
Returns:
true when the line between pt1 and pt2 crosses the seam.

latLonToProj

public ProjectionPoint latLonToProj(LatLonPoint latLon,
                                    ProjectionPointImpl result)
Convert a LatLonPoint to projection coordinates

Specified by:
latLonToProj in interface Projection
Specified by:
latLonToProj in class ProjectionImpl
Parameters:
latLon - convert from these lat, lon coordinates
result - the object to write to
Returns:
the given result

projToLatLon

public LatLonPoint projToLatLon(ProjectionPoint world,
                                LatLonPointImpl result)
Convert projection coordinates to a LatLonPoint Note: a new object is not created on each call for the return value.

Specified by:
projToLatLon in interface Projection
Specified by:
projToLatLon in class ProjectionImpl
Parameters:
world - convert from these projection coordinates
result - the object to write to
Returns:
LatLonPoint convert to these lat/lon coordinates

latLonToProj

public float[][] latLonToProj(float[][] from,
                              float[][] to,
                              int latIndex,
                              int lonIndex)
Convert lat/lon coordinates to projection coordinates.

Overrides:
latLonToProj in class ProjectionImpl
Parameters:
from - array of lat/lon coordinates: from[2][n], where (from[latIndex][i], from[lonIndex][i]) is the (lat,lon) coordinate of the ith point
to - resulting array of projection coordinates: to[2][n] where (to[0][i], to[1][i]) is the (x,y) coordinate of the ith point
latIndex - index of lat coordinate; must be 0 or 1
lonIndex - index of lon coordinate; must be 0 or 1
Returns:
the "to" array

projToLatLon

public float[][] projToLatLon(float[][] from,
                              float[][] to)
Convert projection coordinates to lat/lon coordinate.

Overrides:
projToLatLon in class ProjectionImpl
Parameters:
from - array of projection coordinates: from[2][n], where (from[0][i], from[1][i]) is the (x, y) coordinate of the ith point
to - resulting array of lat/lon coordinates: to[2][n] where (to[0][i], to[1][i]) is the (lat, lon) coordinate of the ith point
Returns:
the "to" array

latLonToProj

public double[][] latLonToProj(double[][] from,
                               double[][] to,
                               int latIndex,
                               int lonIndex)
Convert lat/lon coordinates to projection coordinates.

Overrides:
latLonToProj in class ProjectionImpl
Parameters:
from - array of lat/lon coordinates: from[2][n], where (from[latIndex][i], from[lonIndex][i]) is the (lat,lon) coordinate of the ith point
to - resulting array of projection coordinates: to[2][n] where (to[0][i], to[1][i]) is the (x,y) coordinate of the ith point
latIndex - index of lat coordinate; must be 0 or 1
lonIndex - index of lon coordinate; must be 0 or 1
Returns:
the "to" array

projToLatLon

public double[][] projToLatLon(double[][] from,
                               double[][] to)
Convert projection coordinates to lat/lon coordinate.

Overrides:
projToLatLon in class ProjectionImpl
Parameters:
from - array of projection coordinates: from[2][n], where (from[0][i], from[1][i]) is the (x, y) coordinate of the ith point
to - resulting array of lat/lon coordinates: to[2][n] where (to[0][i], to[1][i]) is the (lat, lon) coordinate of the ith point
Returns:
the "to" array