Class Stereographic
- All Implemented Interfaces:
Serializable
,MathTransform
,MathTransform2D
- Direct Known Subclasses:
EquatorialStereographic
,ObliqueStereographic
,PolarStereographic
This implementation, and its subclasses, provides transforms for six cases of the stereographic projection:
"Oblique_Stereographic"
(EPSG code 9809), alias"Double_Stereographic"
in ESRI software"Stereographic"
in ESRI software (NOT EPSG code 9809)"Polar_Stereographic"
(EPSG code 9810, uses a series calculation for the inverse)"Polar_Stereographic (variant B)"
(EPSG code 9829, uses a series calculation for the inverse)"Stereographic_North_Pole"
in ESRI software (uses iteration for the inverse)"Stereographic_South_Pole"
in ESRI software (uses iteration for the inverse)
Both the "Oblique_Stereographic"
and "Stereographic"
projections are "double" projections
involving two parts: 1) a conformal transformation of the geographic coordinates to a sphere and 2) a spherical
Stereographic projection. The EPSG considers both methods to be valid, but considers them to be a different
coordinate operation methods.
The "Stereographic"
case uses the USGS equations of Snyder. This employs a simplified conversion to the
conformal sphere that computes the conformal latitude of each point on the sphere.
The "Oblique_Stereographic"
case uses equations from the EPSG. This uses a more generalized form of the
conversion to the conformal sphere; using only a single conformal sphere at the origin point. Since this is a
"double" projection, it is sometimes called the "Double Stereographic". The "Oblique_Stereographic"
is used
in New Brunswick (Canada) and the Netherlands.
The "Stereographic"
and "Double_Stereographic"
names are used in ESRI's ArcGIS 8.x product. The
"Oblique_Stereographic"
name is the EPSG name for the later only.
WARNING: Tests points calculated with ArcGIS's "Double_Stereographic"
are not always
equal to points calculated with the "Oblique_Stereographic"
. However, where there are differences, two
different implementations of these equations (EPSG guidence note 7 and libproj
) calculate the same values as
we do. Until these differences are resolved, please be careful when using this projection.
If a "latitude_of_origin"
parameter is supplied and is not
consistent with the projection classification (for example a latitude different from ±90° for the polar case),
then the oblique or polar case will be automatically inferred from the latitude. In other words, the latitude of
origin has precedence on the projection classification. If ommited, then the default value is 90°N for
"Polar_Stereographic"
and 0° for "Oblique_Stereographic"
.
Polar projections that use the series equations for the inverse calculation will be little bit faster, but may be
a little bit less accurate. If a polar "latitude_of_origin"
is used
for the "Oblique_Stereographic"
or "Stereographic"
, the iterative equations will be used for inverse
polar calculations.
The "Polar Stereographic (variant B)"
, "Stereographic_North_Pole"
, and
"Stereographic_South_Pole"
cases include a "standard_parallel_1"
parameter. This parameter sets the latitude with a scale factor equal to the supplied scale
factor. The "Polar Stereographic (variant A)"
receives its "latitude_of_origin"
parameter value from
the hemisphere of the "latitude_of_origin"
value (i.e. the
value is forced to ±90°).
References:
- John P. Snyder (Map Projections - A Working Manual,
U.S. Geological Survey Professional Paper 1395, 1987) - "Coordinate Conversions and Transformations including Formulas",
EPSG Guidence Note Number 7, Version 19. - Gerald Evenden. "Supplementary PROJ.4 Notes - Oblique Stereographic Alternative"
- Krakiwsky, E.J., D.B. Thomson, and R.R. Steeves. 1977. A Manual For Geodetic Coordinate Transformations in the Maritimes. Geodesy and Geomatics Engineering, UNB. Technical Report No. 48.
- Thomson, D.B., M.P. Mepham and R.R. Steeves. 1977. The Stereographic Double Projection. Geodesy and Geomatics Engineereng, UNB. Technical Report No. 46.
- Since:
- 2.1
- Author:
- André Gosselin, Martin Desruisseaux (PMO, IRD), Rueben Schulz
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
The math transform provider for a Stereographic projections using USGS equations.Nested classes/interfaces inherited from class MapProjection
MapProjection.AbstractProvider
-
Field Summary
Fields inherited from class MapProjection
centralMeridian, en0, en1, en2, en3, en4, excentricity, excentricitySquared, falseEasting, falseNorthing, globalScale, invertible, isSpherical, latitudeOfOrigin, LOGGER, scaleFactor, semiMajor, semiMinor, SKIP_SANITY_CHECKS
Fields inherited from class Formattable
SINGLE_LINE
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Compares the specified object with this map projection for equality.Returns the parameter descriptors for this map projection.int
hashCode()
Returns a hash value for this map projection.Methods inherited from class MapProjection
checkReciprocal, getParameterValues, getSourceDimensions, getTargetDimensions, getToleranceForAssertions, inv_mlfn, inverse, inverseTransformNormalized, mlfn, orthodromicDistance, resetWarnings, transform, transform, transform, transformNormalized
Methods inherited from class AbstractMathTransform
createTransformedShape, derivative, derivative, ensureNonNull, formatWKT, getName, isIdentity, needCopy, normalizeAngle, rollLongitude, transform, transform, transform
Methods inherited from class Formattable
cleanupThreadLocals, toString, toWKT, toWKT, toWKT, toWKT
Methods inherited from interface MathTransform
derivative, isIdentity, toWKT, transform, transform, transform
Methods inherited from interface MathTransform2D
createTransformedShape, derivative
-
Method Details
-
getParameterDescriptors
Returns the parameter descriptors for this map projection. This is used for a providing a default implementation ofMapProjection.getParameterValues()
, as well as arguments checking.- Specified by:
getParameterDescriptors
in classMapProjection
- Returns:
- The parameter descriptors for this math transform, or
null
. - See Also:
-
equals
Compares the specified object with this map projection for equality.- Overrides:
equals
in classMapProjection
- Parameters:
object
- The object to compare with this transform.- Returns:
true
if the given object is a transform of the same class and if, given identical source position, the transformed position would be the equals.
-
hashCode
public int hashCode()Description copied from class:MapProjection
Returns a hash value for this map projection.- Overrides:
hashCode
in classMapProjection
-