| org.geotools.referencing.operation.projection.MapProjection org.geotools.referencing.operation.projection.Stereographic
All known Subclasses: org.geotools.referencing.operation.projection.PolarStereographic, org.geotools.referencing.operation.projection.StereographicUSGS,
Stereographic | abstract public class Stereographic extends MapProjection (Code) | | Stereographic Projection. The directions starting from the central point are true,
but the areas and the lengths become increasingly deformed as one moves away from
the center. This projection is used to represent polar areas. It can be adapted
for other areas having a circular form.
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
Stereographic.Provider.LATITUDE_OF_ORIGIN "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
Stereographic.Provider.LATITUDE_OF_ORIGIN "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
StereographicPole.ProviderB.STANDARD_PARALLEL "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
StereographicPole.Provider.LATITUDE_OF_ORIGIN "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.
See Also: Stereographic projection on MathWorld See Also: Polar_Stereographic See Also: Oblique_Stereographic See Also: Stereographic See Also: Some Random Stereographic Issues since: 2.1 version: $Id: Stereographic.java 25697 2007-05-31 14:26:35Z desruisseaux $ author: André Gosselin author: Martin Desruisseaux author: Rueben Schulz |
Inner Class :public static class Provider extends AbstractProvider | |
Constructor Summary | |
| Stereographic(ParameterValueGroup parameters, ParameterDescriptorGroup descriptor) Creates a transform from the specified group of parameter values. |
Method Summary | |
public boolean | equals(Object object) Compares the specified object with this map projection for equality. | public ParameterDescriptorGroup | getParameterDescriptors() |
Stereographic | Stereographic(ParameterValueGroup parameters, ParameterDescriptorGroup descriptor) throws ParameterNotFoundException(Code) | | Creates a transform from the specified group of parameter values.
Parameters: parameters - The group of parameter values. Parameters: descriptor - The expected parameter descriptor. throws: ParameterNotFoundException - if a required parameter was not found. |
equals | public boolean equals(Object object)(Code) | | Compares the specified object with this map projection for equality.
|
getParameterDescriptors | public ParameterDescriptorGroup getParameterDescriptors()(Code) | | |
Methods inherited from org.geotools.referencing.operation.projection.MapProjection | static boolean checkInverseTransform(double longitude, double latitude, Point2D expected, double tolerance)(Code)(Java Doc) static boolean checkInverseTransform(double longitude, double latitude, Point2D expected)(Code)(Java Doc) static boolean checkTransform(double x, double y, Point2D expected, double tolerance)(Code)(Java Doc) static boolean checkTransform(double x, double y, Point2D expected)(Code)(Java Doc) final double cphi2(double ts) throws ProjectionException(Code)(Java Doc) final double doubleValue(Collection expected, ParameterDescriptor param, ParameterValueGroup group) throws ParameterNotFoundException(Code)(Java Doc) static void ensureLatitudeEquals(ParameterDescriptor name, double y, double expected) throws IllegalArgumentException(Code)(Java Doc) static void ensureLatitudeInRange(ParameterDescriptor name, double y, boolean edge) throws IllegalArgumentException(Code)(Java Doc) static void ensureLongitudeInRange(ParameterDescriptor name, double x, boolean edge) throws IllegalArgumentException(Code)(Java Doc) final void ensureSpherical() throws IllegalArgumentException(Code)(Java Doc) public boolean equals(Object object)(Code)(Java Doc) static boolean equals(double value1, double value2)(Code)(Java Doc) abstract public ParameterDescriptorGroup getParameterDescriptors()(Code)(Java Doc) public ParameterValueGroup getParameterValues()(Code)(Java Doc) final public int getSourceDimensions()(Code)(Java Doc) final public int getTargetDimensions()(Code)(Java Doc) protected double getToleranceForAssertions(double longitude, double latitude)(Code)(Java Doc) public int hashCode()(Code)(Java Doc) final public MathTransform inverse()(Code)(Java Doc) abstract protected Point2D inverseTransformNormalized(double x, double y, Point2D ptDst) throws ProjectionException(Code)(Java Doc) boolean isExpectedParameter(Collection expected, ParameterDescriptor param)(Code)(Java Doc) final double msfn(double s, double c)(Code)(Java Doc) final void set(Collection expected, ParameterDescriptor param, ParameterValueGroup group, double value)(Code)(Java Doc) final public Point2D transform(Point2D ptSrc, Point2D ptDst) throws ProjectionException(Code)(Java Doc) final public void transform(double[] src, int srcOffset, double[] dest, int dstOffset, int numPts) throws ProjectionException(Code)(Java Doc) final public void transform(float[] src, int srcOffset, float[] dest, int dstOffset, int numPts) throws ProjectionException(Code)(Java Doc) abstract protected Point2D transformNormalized(double x, double y, Point2D ptDst) throws ProjectionException(Code)(Java Doc) final double tsfn(double phi, double sinphi)(Code)(Java Doc)
|
|
|