ucar.unidata.geoloc.projection
Class Stereographic

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

public class Stereographic
extends ProjectionImpl

Stereographic projection, spherical earth. Projection plane is a plane tangent to the earth at latt, lont. see John Snyder, Map Projections used by the USGS, Bulletin 1532, 2nd edition (1983), p 153

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
Stereographic()
          Constructor with default parameters = North Polar
Stereographic(double latt, double lont, double scale)
          Construct a Stereographic Projection.
Stereographic(double lat_ts_deg, double latt_deg, double lont_deg, boolean north)
          Construct a polar Stereographic Projection, from the "natural origin" and the tangent point, calculating the scale factor.
Stereographic(double latt, double lont, double scale, double false_easting, double false_northing)
          Construct a Stereographic Projection.
 
Method Summary
 java.lang.Object clone()
          Clone this projection
 ProjectionImpl constructCopy()
          copy constructor - avoid clone !!
 boolean crossSeam(ProjectionPoint pt1, ProjectionPoint pt2)
          Does the line between these two points cross the projection "seam".
 boolean equals(java.lang.Object proj)
          Returns true if this represents the same Projection as proj.
static Stereographic factory(double latt, double lont, double latTrue)
          Construct a Stereographic Projection using latitude of true scale and calculating scale factor.
 double getCentralMeridian()
          Get the central meridian in degrees, if it was set.
 double getFalseEasting()
          Get the false easting, in km.
 double getFalseNorthing()
          Get the false northing, in km.
 double getNaturalOriginLat()
          Get the latitude at natural origin
 double getScale()
          Get the scale
 double getTangentLat()
          Get the tangent latitude
 double getTangentLon()
          Get the tangent longitude
 boolean isNorth()
           
 boolean isPolar()
           
 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()
          Get the parameters as a String
 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 setCentralMeridian(double cm)
          Set the central meridian in degrees.
 void setFalseEasting(double falseEasting)
          Set the false_easting, in km.
 void setFalseNorthing(double falseNorthing)
          Set the false northing, in km.
 void setScale(double scale)
          Set the scale
 void setTangentLat(double lat)
          Set the tangent latitude
 void setTangentLon(double lon)
          Set the tangent longitude
 
Methods inherited from class ucar.unidata.geoloc.ProjectionImpl
getClassName, getDefaultMapArea, getDefaultMapAreaLL, getHeader, getLatLonBoundingBox, getName, getProjectionParameters, getProjectionTypeLabel, 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

Stereographic

public Stereographic()
Constructor with default parameters = North Polar


Stereographic

public Stereographic(double latt,
                     double lont,
                     double scale)
Construct a Stereographic Projection.

Parameters:
latt - tangent point of projection, also origin of projecion coord system
lont - tangent point of projection, also origin of projecion coord system
scale - scale factor at tangent point, "normally 1.0 but may be reduced"

Stereographic

public Stereographic(double latt,
                     double lont,
                     double scale,
                     double false_easting,
                     double false_northing)
Construct a Stereographic Projection.

Parameters:
latt - tangent point of projection, also origin of projection coord system
lont - tangent point of projection, also origin of projection coord system
scale - scale factor at tangent point, "normally 1.0 but may be reduced"

Stereographic

public Stereographic(double lat_ts_deg,
                     double latt_deg,
                     double lont_deg,
                     boolean north)
Construct a polar Stereographic Projection, from the "natural origin" and the tangent point, calculating the scale factor.

Parameters:
lat_ts_deg - Latitude at natural origin (degrees_north)
latt_deg - tangent point of projection (degrees_north)
lont_deg - tangent point of projection, also origin of projection coord system ((degrees_east)
north - true if north pole, false is south pole
Method Detail

constructCopy

public ProjectionImpl constructCopy()
copy constructor - avoid clone !!

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

factory

public static Stereographic factory(double latt,
                                    double lont,
                                    double latTrue)
Construct a Stereographic Projection using latitude of true scale and calculating scale factor.

Since the scale factor at lat = k = 2*k0/(1+sin(lat)) [Snyder,Working Manual p157] then to make scale = 1 at lat, set k0 = (1+sin(lat))/2

Parameters:
latt - tangent point of projection, also origin of projection coord system
lont - tangent point of projection, also origin of projection coord system
latTrue - latitude of true scale in degrees north; latitude where scale factor = 1.0
Returns:
Stereographic projection

getScale

public double getScale()
Get the scale

Returns:
the scale

setScale

public void setScale(double scale)
Set the scale

Parameters:
scale - the scale

getNaturalOriginLat

public double getNaturalOriginLat()
Get the latitude at natural origin

Returns:
latitude at natural origin

getTangentLon

public double getTangentLon()
Get the tangent longitude

Returns:
the tangent longitude

setTangentLon

public void setTangentLon(double lon)
Set the tangent longitude

Parameters:
lon - the tangent longitude

getTangentLat

public double getTangentLat()
Get the tangent latitude

Returns:
the tangent latitude

setTangentLat

public void setTangentLat(double lat)
Set the tangent latitude

Parameters:
lat - the tangent latitude

getCentralMeridian

public double getCentralMeridian()
Get the central meridian in degrees, if it was set. depends on the zone


setCentralMeridian

public void setCentralMeridian(double cm)
Set the central meridian in degrees. depends on the zone


isNorth

public boolean isNorth()

isPolar

public boolean isPolar()

paramsToString

public java.lang.String paramsToString()
Get the parameters as a String

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

crossSeam

public boolean crossSeam(ProjectionPoint pt1,
                         ProjectionPoint pt2)
Does the line between these two points cross the projection "seam".

Specified by:
crossSeam in interface Projection
Specified by:
crossSeam in class ProjectionImpl
Parameters:
pt1 - the line goes between these two points
pt2 - the line goes between these two points
Returns:
false if there is no seam

clone

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

Overrides:
clone in class ProjectionImpl
Returns:
a clone of this.

equals

public boolean equals(java.lang.Object proj)
Returns true if this represents the same Projection as proj.

Specified by:
equals in interface Projection
Specified by:
equals in class ProjectionImpl
Parameters:
proj - projection in question
Returns:
true if this represents the same Projection as proj.

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

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