Stereographic changes for revisions 11367:11368

The stereographic case (using USGS formulas) has not been ported to Apache SIS. Instead we use only the formulas provided by the EPSG guide.

Command line:

svn diff --extensions "--unified --ignore-space-change --ignore-all-space --ignore-eol-style" -r11367:11368 https://svn.osgeo.org/geotools/trunk/modules/library/referencing/src/main/java/org/geotools/referencing/operation/projection/Stereographic.java
Revision 11367Revision 11368
* for the later only.
* <br><br>
*
* <strong>WARNING:<strong> Tests points calculated with ArcGIS's "Double Stereographic" are
* not always equal to points calculated with the <code>"Oblique_Stereographic"</code>.
* 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
* for the later only.
* <br><br>
*
* <strong>WARNING:</strong> Tests points calculated with ArcGIS's "Double Stereographic" are
* not always equal to points calculated with the <code>"Oblique_Stereographic"</code>.
* 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
* <br><br>
*
* The "Polar Stereographic (variant B)", "Stereographic_North_Pole", and
* "Stereographic_South_Pole" cases include a "standard_parallel_1" paramter.
* This parameter sets the latitude with a scale factor equal to the supplied
* scale factor. The "Polar Stereographic (variant B)" recieves its "lattitude_of_origin"
* paramater value from the hemisphere of the "standard_parallel_1" value.
* <br><br>
*
* <br><br>
*
* 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 B)" recieves its "latitude_of_origin"
* paramater value from the hemisphere of the "standard_parallel_1" value.
* <br><br>
*
        throws ParameterNotFoundException
{
    final Collection descriptors = PARAMETERS.descriptors();
    final double latitudeOfOrigin = Math.abs(doubleValue(LATITUDE_OF_ORIGIN, parameters));
    if (isSpherical(parameters)) {
        // Polar case.
        if (Math.abs(latitudeOfOrigin - Math.PI/2) < EPS) {
            return new StereographicPolar.Spherical(parameters, descriptors, Double.NaN, EPSG);
        }
        // Equatorial case.
        throws ParameterNotFoundException
{
    final Collection descriptors = PARAMETERS.descriptors();
    //values here are in degrees (the standard units for this parameter)
    final double latitudeOfOrigin = Math.abs(doubleValue(LATITUDE_OF_ORIGIN, parameters));
    if (isSpherical(parameters)) {
        // Polar case.
        if (Math.abs(latitudeOfOrigin - 90.0) < EPS) {
            return new StereographicPolar.Spherical(parameters, descriptors, Double.NaN, EPSG);
        }
        // Equatorial case.
    }
} else {
    // Polar case.
    if (Math.abs(latitudeOfOrigin - Math.PI/2) < EPS) {
        return new StereographicPolar(parameters, descriptors, Double.NaN, EPSG);
    }
    // Generic (oblique) case.
    }
} else {
    // Polar case.
    if (Math.abs(latitudeOfOrigin - 90.0) < EPS) {
        return new StereographicPolar(parameters, descriptors, Double.NaN, EPSG);
    }
    // Generic (oblique) case.
        throws ParameterNotFoundException
{
    final Collection descriptors = PARAMETERS.descriptors();
    final double latitudeOfOrigin = Math.abs(doubleValue(LATITUDE_OF_ORIGIN, parameters));
    if (isSpherical(parameters)) {
        // Polar case.
        if (Math.abs(latitudeOfOrigin - Math.PI/2) < EPS) {
            return new StereographicPolar.Spherical(parameters, descriptors, Double.NaN, USGS);
        }
        // Equatorial case.
        throws ParameterNotFoundException
{
    final Collection descriptors = PARAMETERS.descriptors();
    //values here are in degrees (the standard units for this parameter)
    final double latitudeOfOrigin = Math.abs(doubleValue(LATITUDE_OF_ORIGIN, parameters));
    if (isSpherical(parameters)) {
        // Polar case.
        if (Math.abs(latitudeOfOrigin - 90.0) < EPS) {
            return new StereographicPolar.Spherical(parameters, descriptors, Double.NaN, USGS);
        }
        // Equatorial case.
    }
} else {
    // Polar case.
    if (Math.abs(latitudeOfOrigin - Math.PI/2) < EPS) {
        return new StereographicPolar(parameters, descriptors, Double.NaN, USGS);
    }
    // Equatorial case.
    }
} else {
    // Polar case.
    if (Math.abs(latitudeOfOrigin - 90.0) < EPS) {
        return new StereographicPolar(parameters, descriptors, Double.NaN, USGS);
    }
    // Equatorial case.