org.deegree.cs.projections.azimuthal
Class StereographicAlternative

java.lang.Object
  extended by org.deegree.cs.CRSIdentifiable
      extended by org.deegree.cs.projections.Projection
          extended by org.deegree.cs.projections.azimuthal.AzimuthalProjection
              extended by org.deegree.cs.projections.azimuthal.StereographicAlternative
All Implemented Interfaces:
Object, TypedObjectNode, CRSResource, IProjection

public class StereographicAlternative
extends AzimuthalProjection

StereographicAlternative projection may be imagined to be a projection of the earth's surface onto a plane in contact with the earth at a single tangent point from the opposite end of the diameter through that tangent point.

An alternative approach is given by Snyder StereographicAzimuthal, where, instead of defining a single conformal sphere at the origin point, the conformal latitude at each point on the ellipsoid is computed. The conformal longitude is then always equivalent to the geodetic longitude. This approach is a valid alternative to the above, but gives slightly different results away from the origin point. It is therefore considered by EPSG to be a different projection method. Hence this implementation.

This projection is best known in its polar form and is frequently used for mapping polar areas where it complements the Universal Transverse Mercator used for lower latitudes. Its spherical form has also been widely used by the US Geological Survey for planetary mapping and the mapping at small scale of continental hydrocarbon provinces. In its transverse or oblique ellipsoidal forms it is useful for mapping limited areas centered on the point where the plane of the projection is regarded as tangential to the ellipsoid., e.g. the Netherlands. The tangent point is the origin of the projected coordinate system and the meridian through it is regarded as the central meridian. In order to reduce the scale error at the extremities of the projection area it is usual to introduce a scale factor of less than unity at the origin such that a unit scale factor applies on a near circle centered at the origin and some distance from it.

The coordinate transformation from geographical to projected coordinates is executed via the distance and azimuth of the point from the center point or origin. For a sphere the formulas are relatively simple. For the ellipsoid the same formulas are used but with auxiliary latitudes, known as conformal latitudes, substituted for the geodetic latitudes of the spherical formulas for the origin and the point .

from http://www.posc.org/

Determinations of oblique projections on an ellipsoid can be difficult to solve and result in long, complex computations. Because conformal transformations can be made multiple time without loss of the conformal property a method of determining oblique projections involves conformal transformation of the elliptical coordinates to coordinates on a conformal sphere. The transformed coordinates can now be translated/rotated on the sphere and then converted to planar coordinates with a conformal spherical projection. is Ce/2 1 − e sin φ 2 arctan K tanC (π/4 + φ/2) − π/2 (3.6) χ = 1 + e sin φ λc = Cλ (3.7) √ 1 − e2 Rc = (3.8) 1 − e2 sin2 φ0

From the libproj4-manual by Gerald I. Evenden

Version:
$Revision: 30120 $, $Date: 2011-03-22 10:04:15 +0100 (Tue, 22 Mar 2011) $
Author:
Rutger Bezema, last edited by: $Author: aschmitz $

Field Summary
 
Fields inherited from class org.deegree.cs.projections.azimuthal.AzimuthalProjection
EQUATOR, NORTH_POLE, OBLIQUE, SOUTH_POLE
 
Constructor Summary
StereographicAlternative(double falseNorthing, double falseEasting, javax.vecmath.Point2d naturalOrigin, IUnit units, double scale)
          Sets the id of this projection to epsg::9809 (Oblique Stereographic)
StereographicAlternative(double falseNorthing, double falseEasting, javax.vecmath.Point2d naturalOrigin, IUnit units, double scale, CRSResource id)
           
 
Method Summary
 javax.vecmath.Point2d doInverseProjection(IGeographicCRS geographicCRS, double x, double y)
          Do an inverse projection from projected (map) coordinates to geographic coordinates.
 javax.vecmath.Point2d doProjection(IGeographicCRS geographicCRS, double lambda, double phi)
          The actual transform method doing a projection from geographic coordinates to map coordinates.
 String getImplementationName()
           
 
Methods inherited from class org.deegree.cs.projections.azimuthal.AzimuthalProjection
getMode, hashCode
 
Methods inherited from class org.deegree.cs.projections.Projection
equals, getCosphi0, getEccentricity, getEllipsoid, getFalseEasting, getFalseNorthing, getNaturalOrigin, getPrimeMeridian, getProjectionLatitude, getProjectionLongitude, getScale, getScaleFactor, getSemiMajorAxis, getSemiMinorAxis, getSinphi0, getSquaredEccentricity, getUnits, isConformal, isEqualArea, isSpherical, setFalseEasting, setScale, toString
 
Methods inherited from class org.deegree.cs.CRSIdentifiable
addAreaOfUse, addName, checkForNullObject, checkForNullObject, checkForNullObject, getAreaOfUse, getAreaOfUseBBox, getAreasOfUse, getCode, getCodeAndName, getCodes, getDescription, getDescriptions, getId, getName, getNames, getOrignalCodeStrings, getVersion, getVersions, hasCode, hasId, hasIdOrName, setDefaultAreaOfUse, setDefaultDescription, setDefaultId, setDefaultName, setDefaultVersion
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.deegree.cs.CRSResource
addAreaOfUse, addName, getAreaOfUse, getAreaOfUseBBox, getAreasOfUse, getCode, getCodeAndName, getCodes, getDescription, getDescriptions, getName, getNames, getOrignalCodeStrings, getVersion, getVersions, hasCode, hasId, hasIdOrName, setDefaultAreaOfUse, setDefaultDescription, setDefaultId, setDefaultName, setDefaultVersion
 
Methods inherited from interface org.deegree.commons.tom.Object
getId
 

Constructor Detail

StereographicAlternative

public StereographicAlternative(double falseNorthing,
                                double falseEasting,
                                javax.vecmath.Point2d naturalOrigin,
                                IUnit units,
                                double scale,
                                CRSResource id)
Parameters:
geographicCRS -
falseNorthing -
falseEasting -
naturalOrigin -
units -
scale -
id - an identifiable instance containing information about this projection

StereographicAlternative

public StereographicAlternative(double falseNorthing,
                                double falseEasting,
                                javax.vecmath.Point2d naturalOrigin,
                                IUnit units,
                                double scale)
Sets the id of this projection to epsg::9809 (Oblique Stereographic)

Parameters:
geographicCRS -
falseNorthing -
falseEasting -
naturalOrigin -
units -
scale -
Method Detail

doInverseProjection

public javax.vecmath.Point2d doInverseProjection(IGeographicCRS geographicCRS,
                                                 double x,
                                                 double y)
                                          throws ProjectionException
Description copied from class: Projection
Do an inverse projection from projected (map) coordinates to geographic coordinates.

Specified by:
doInverseProjection in interface IProjection
Specified by:
doInverseProjection in class Projection
x - coordinate on the map
y - coordinate on the map
Returns:
the projected Point with x = lambda and y = phi;
Throws:
ProjectionException - if the given x and y coordinates could not be inverted to lambda and phi.

doProjection

public javax.vecmath.Point2d doProjection(IGeographicCRS geographicCRS,
                                          double lambda,
                                          double phi)
                                   throws ProjectionException
Description copied from class: Projection
The actual transform method doing a projection from geographic coordinates to map coordinates.

Specified by:
doProjection in interface IProjection
Specified by:
doProjection in class Projection
lambda - the longitude
phi - the latitude
Returns:
the projected Point or Point(Double.NAN, Double.NAN) if an error occurred.
Throws:
ProjectionException - if the given lamba and phi coordinates could not be projected to x and y.

getImplementationName

public String getImplementationName()
Specified by:
getImplementationName in interface IProjection
Specified by:
getImplementationName in class Projection
Returns:
A deegree specific name which will be used for the export of a projection.


Copyright © 2011. All Rights Reserved.