All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.geotoolkit.referencing.operation.provider.PolarStereographic Maven / Gradle / Ivy

Go to download

Implementations of Coordinate Reference Systems (CRS), conversion and transformation services derived from ISO 19111.

There is a newer version: 3.20-geoapi-3.0
Show newest version
/*
 *    Geotoolkit.org - An Open Source Java GIS Toolkit
 *    http://www.geotoolkit.org
 *
 *    (C) 1999-2011, Open Source Geospatial Foundation (OSGeo)
 *    (C) 2009-2011, Geomatys
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License as published by the Free Software Foundation;
 *    version 2.1 of the License.
 *
 *    This library is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *    Lesser General Public License for more details.
 */
package org.geotoolkit.referencing.operation.provider;

import net.jcip.annotations.Immutable;

import org.opengis.parameter.ParameterValueGroup;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
import org.opengis.referencing.operation.MathTransform2D;
import org.opengis.referencing.ReferenceIdentifier;

import org.geotoolkit.referencing.NamedIdentifier;
import org.geotoolkit.internal.referencing.Identifiers;
import org.geotoolkit.metadata.iso.citation.Citations;


/**
 * The provider for "Polar Stereographic (Variant A)" projection (EPSG:9810).
 * The programmatic names and parameters are enumerated at
 * Polar
 * Stereographic on RemoteSensing.org. The math transform implementations instantiated
 * by this provider may be any of the following classes:
 * 

*

    *
  • {@link org.geotoolkit.referencing.operation.projection.PolarStereographic}
  • *
* * @author Rueben Schulz (UBC) * @author Martin Desruisseaux (Geomatys) * @version 3.00 * * @since 2.4 * @module */ @Immutable public class PolarStereographic extends Stereographic { /** * For compatibility with different versions during deserialization. */ private static final long serialVersionUID = 9124091259039220308L; /** * The operation parameter descriptor for the {@linkplain * org.geotoolkit.referencing.operation.projection.UnitaryProjection.Parameters#centralMeridian * central meridian} parameter value. * * This parameter is mandatory. * Valid values range is [-180 … 180]° and default value is 0°. */ @SuppressWarnings("hiding") public static final ParameterDescriptor CENTRAL_MERIDIAN = Identifiers.CENTRAL_MERIDIAN.select( "central_meridian", // OGC "Central_Meridian", // ESRI "Longitude of natural origin", // EPSG "StraightVertPoleLong"); // GeoTIFF /** * The operation parameter descriptor for the {@linkplain * org.geotoolkit.referencing.operation.projection.UnitaryProjection.Parameters#latitudeOfOrigin * latitude of origin} parameter value. * * This parameter is mandatory. * Valid values range is [-90 … 90]° and default value is 0°. */ @SuppressWarnings("hiding") public static final ParameterDescriptor LATITUDE_OF_ORIGIN = Mercator1SP.LATITUDE_OF_ORIGIN; /** * The parameters group. */ @SuppressWarnings("hiding") public static final ParameterDescriptorGroup PARAMETERS = Identifiers.createDescriptorGroup( new ReferenceIdentifier[] { new NamedIdentifier(Citations.OGC, "Polar_Stereographic"), new NamedIdentifier(Citations.EPSG, "Polar Stereographic (variant A)"), new IdentifierCode (Citations.EPSG, 9810), new NamedIdentifier(Citations.GEOTIFF, "CT_PolarStereographic"), new IdentifierCode (Citations.GEOTIFF, 15), sameNameAs(Citations.GEOTOOLKIT, Stereographic.PARAMETERS) }, new ParameterDescriptor[] { SEMI_MAJOR, SEMI_MINOR, ROLL_LONGITUDE, CENTRAL_MERIDIAN, LATITUDE_OF_ORIGIN, SCALE_FACTOR, FALSE_EASTING, FALSE_NORTHING }); /** * Constructs a new provider. */ public PolarStereographic() { super(PARAMETERS); } /** * Constructs a provider from a set of parameters. * * @param parameters The set of parameters (never {@code null}). */ PolarStereographic(final ParameterDescriptorGroup parameters) { super(parameters); } /** * {@inheritDoc} */ @Override protected MathTransform2D createMathTransform(ParameterValueGroup values) { return org.geotoolkit.referencing.operation.projection.PolarStereographic.create(getParameters(), values); } /** * The provider for "Polar Stereographic (Variant B)" projection (EPSG:9829). * This provider includes a {@code "Standard_Parallel_1"} parameter and determines * the hemisphere of the projection from the {@code Standard_Parallel_1} value. * * @author Rueben Schulz (UBC) * @author Martin Desruisseaux (Geomatys) * @version 3.00 * * @since 2.4 * @module */ @Immutable public static class VariantB extends PolarStereographic { /** * For compatibility with different versions during deserialization. */ private static final long serialVersionUID = 5188231050523249971L; /** * The operation parameter descriptor for the {@linkplain * org.geotoolkit.referencing.operation.projection.UnitaryProjection.Parameters#centralMeridian * central meridian} parameter value. * * This parameter is mandatory. * Valid values range is [-180 … 180]° and default value is 0°. */ @SuppressWarnings("hiding") public static final ParameterDescriptor CENTRAL_MERIDIAN = Identifiers.CENTRAL_MERIDIAN.select( "central_meridian", // OGC "Longitude_Of_Origin", // ESRI "Longitude of origin", // EPSG "StraightVertPoleLong"); // GeoTIFF /** * The operation parameter descriptor for the {@code standardParallel} parameter value. * Valid values range is from [-90 … 90]° and default value is 90°N. */ public static final ParameterDescriptor STANDARD_PARALLEL = North.STANDARD_PARALLEL; /** * The parameters group. */ @SuppressWarnings("hiding") public static final ParameterDescriptorGroup PARAMETERS = Identifiers.createDescriptorGroup(new ReferenceIdentifier[] { new NamedIdentifier(Citations.EPSG, "Polar Stereographic (variant B)"), new IdentifierCode (Citations.EPSG, 9829), sameNameAs(Citations.GEOTOOLKIT, PolarStereographic.PARAMETERS) }, new ParameterDescriptor[] { SEMI_MAJOR, SEMI_MINOR, ROLL_LONGITUDE, CENTRAL_MERIDIAN, STANDARD_PARALLEL, FALSE_EASTING, FALSE_NORTHING }); /** * Constructs a new provider. */ public VariantB() { super(PARAMETERS); } } /** * The provider for "North Polar Stereographic" projection. This provider sets the * {@linkplain PolarStereographic#LATITUDE_OF_ORIGIN latitude of origin} parameter to 90°N. * * @author Rueben Schulz (UBC) * @author Martin Desruisseaux (Geomatys) * @version 3.00 * * @since 2.4 * @module */ @Immutable public static class North extends PolarStereographic { /** * For compatibility with different versions during deserialization. */ private static final long serialVersionUID = 657493908431273866L; /** * The operation parameter descriptor for the {@code standardParallel} parameter value. * Valid values range is from -90 to 90°. The default value is 90°N. */ public static final ParameterDescriptor STANDARD_PARALLEL = Identifiers.STANDARD_PARALLEL_1.select(false, 90, "standard_parallel_1", // OGC "Standard_Parallel_1", // ESRI "Latitude of standard parallel"); // EPSG /** * The parameters group. */ @SuppressWarnings("hiding") public static final ParameterDescriptorGroup PARAMETERS = Identifiers.createDescriptorGroup(new NamedIdentifier[] { new NamedIdentifier(Citations.ESRI, "Stereographic_North_Pole"), sameNameAs(Citations.GEOTOOLKIT, PolarStereographic.PARAMETERS) }, new ParameterDescriptor[] { SEMI_MAJOR, SEMI_MINOR, ROLL_LONGITUDE, CENTRAL_MERIDIAN, STANDARD_PARALLEL, SCALE_FACTOR, FALSE_EASTING, FALSE_NORTHING }); /** * Constructs a new provider. */ public North() { super(PARAMETERS); } } /** * The Provider for "South Polar Stereographic" projection. This provider sets the * {@linkplain PolarStereographic#LATITUDE_OF_ORIGIN latitude of origin} parameter to 90°S. * * @author Rueben Schulz (UBC) * @author Martin Desruisseaux (Geomatys) * @version 3.00 * * @since 2.4 * @module */ @Immutable public static class South extends PolarStereographic { /** * For compatibility with different versions during deserialization. */ private static final long serialVersionUID = 6537800238416448564L; /** * The operation parameter descriptor for the {@code standardParallel} parameter value. * Valid values range is from -90 to 90°. The default value is 90°S. */ public static final ParameterDescriptor STANDARD_PARALLEL = Identifiers.STANDARD_PARALLEL_1.select(false, -90, "standard_parallel_1", // OGC "Standard_Parallel_1", // ESRI "Latitude of standard parallel"); // EPSG /** * The parameters group. */ @SuppressWarnings("hiding") public static final ParameterDescriptorGroup PARAMETERS = Identifiers.createDescriptorGroup(new NamedIdentifier[] { new NamedIdentifier(Citations.ESRI, "Stereographic_South_Pole"), sameNameAs(Citations.GEOTOOLKIT, PolarStereographic.PARAMETERS) }, new ParameterDescriptor[] { SEMI_MAJOR, SEMI_MINOR, ROLL_LONGITUDE, CENTRAL_MERIDIAN, STANDARD_PARALLEL, SCALE_FACTOR, FALSE_EASTING, FALSE_NORTHING }); /** * Constructs a new provider. */ public South() { super(PARAMETERS); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy