org.geotoolkit.referencing.operation.provider.LambertConformal1SP Maven / Gradle / Ivy
/*
* Geotoolkit.org - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2005-2012, Open Source Geospatial Foundation (OSGeo)
* (C) 2009-2012, 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.operation.ConicProjection;
import org.opengis.referencing.ReferenceIdentifier;
import org.geotoolkit.resources.Vocabulary;
import org.geotoolkit.referencing.NamedIdentifier;
import org.geotoolkit.referencing.operation.projection.LambertConformal;
import org.geotoolkit.metadata.iso.citation.Citations;
/**
* The provider for "Lambert Conic Conformal (1SP)" projection (EPSG:9801).
* The math transform implementations instantiated by this provider may be any of the following classes:
*
*
* - {@link org.geotoolkit.referencing.operation.projection.LambertConformal}
*
*
*
* The following table summarizes the parameters recognized by this provider.
* For a more detailed parameter list, see the {@link #PARAMETERS} constant.
* Operation name: {@code Lambert_Conformal_Conic_1SP}
*
Area of use: (union of CRS domains of validity in EPSG database)
*
* in latitudes: 20°30.0′S to 51°06.0′N
* in longitudes: 173°45.0′W to 102°00.0′E
*
*
* Parameter name Default value
* {@code semi_major}
* {@code semi_minor}
* {@code roll_longitude} false
* {@code central_meridian} 0°
* {@code latitude_of_origin} 0°
* {@code scale_factor} 1
* {@code false_easting} 0 metres
* {@code false_northing} 0 metres
*
*
*
* @author Martin Desruisseaux (IRD, Geomatys)
* @author Rueben Schulz (UBC)
* @version 3.20
*
* @see Lambert Conic Conformal 1SP on RemoteSensing.org
* @see Geotk coordinate operations matrix
*
* @since 2.2
* @module
*/
@Immutable
public class LambertConformal1SP extends MapProjection {
/**
* For cross-version compatibility.
*/
private static final long serialVersionUID = -4243116402872545772L;
/**
* 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°.
*
* @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String)
* descriptor(String)}
instead.
*/
@Deprecated
public static final ParameterDescriptor CENTRAL_MERIDIAN = Mercator1SP.CENTRAL_MERIDIAN;
/**
* 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°.
*
* @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String)
* descriptor(String)}
instead.
*/
@Deprecated
public static final ParameterDescriptor LATITUDE_OF_ORIGIN = Mercator1SP.LATITUDE_OF_ORIGIN;
/**
* The operation parameter descriptor for the {@linkplain
* org.geotoolkit.referencing.operation.projection.UnitaryProjection.Parameters#scaleFactor
* scale factor} parameter value.
*
* This parameter is mandatory.
* Valid values range is (0 … ∞) and default value is 1.
*
* @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String)
* descriptor(String)}
instead.
*/
@Deprecated
public static final ParameterDescriptor SCALE_FACTOR = Mercator1SP.SCALE_FACTOR;
/**
* The operation parameter descriptor for the {@linkplain
* org.geotoolkit.referencing.operation.projection.UnitaryProjection.Parameters#falseEasting
* false easting} parameter value.
*
* This parameter is mandatory.
* Valid values range is unrestricted and default value is 0 metre.
*
* @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String)
* descriptor(String)}
instead.
*/
@Deprecated
public static final ParameterDescriptor FALSE_EASTING = Mercator1SP.FALSE_EASTING;
/**
* The operation parameter descriptor for the {@linkplain
* org.geotoolkit.referencing.operation.projection.UnitaryProjection.Parameters#falseNorthing
* false northing} parameter value.
*
* This parameter is mandatory.
* Valid values range is unrestricted and default value is 0 metre.
*
* @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String)
* descriptor(String)}
instead.
*/
@Deprecated
public static final ParameterDescriptor FALSE_NORTHING = Mercator1SP.FALSE_NORTHING;
/**
* The group of all parameters expected by this coordinate operation.
* The following table lists the operation names and the parameters recognized by Geotk:
*
*
*
*
*
* Name: OGC
:Lambert_Conformal_Conic_1SP
* Alias: EPSG
:Lambert Conic Conformal (1SP)
* GeoTIFF
:CT_LambertConfConic_1SP
* PROJ4
:lcc
* Geotk
:Lambert conformal conic projection
* Identifier: EPSG
:9801
*
*
*
*
* Name: OGC
:semi_major
* Alias: EPSG
:Semi-major axis
* GeoTIFF
:SemiMajor
* PROJ4
:a
*
*
*
* Type: {@code Double}
* Obligation: mandatory
* Value range: [0…∞) metres
*
*
*
*
* Name: OGC
:semi_minor
* Alias: EPSG
:Semi-minor axis
* GeoTIFF
:SemiMinor
* PROJ4
:b
*
*
*
* Type: {@code Double}
* Obligation: mandatory
* Value range: [0…∞) metres
*
*
*
*
* Name: Geotk
:roll_longitude
*
*
*
* Type: {@code Boolean}
* Obligation: optional
* Default value: false
*
*
*
*
* Name: OGC
:central_meridian
* Alias: EPSG
:Longitude of natural origin
* GeoTIFF
:NatOriginLong
* PROJ4
:lon_0
*
*
*
* Type: {@code Double}
* Obligation: mandatory
* Value range: [-180 … 180]°
* Default value: 0°
*
*
*
*
* Name: OGC
:latitude_of_origin
* Alias: EPSG
:Latitude of natural origin
* GeoTIFF
:NatOriginLat
* PROJ4
:lat_0
*
*
*
* Type: {@code Double}
* Obligation: mandatory
* Value range: [-90 … 90]°
* Default value: 0°
*
*
*
*
* Name: OGC
:scale_factor
* Alias: EPSG
:Scale factor at natural origin
* GeoTIFF
:ScaleAtNatOrigin
* PROJ4
:k
*
*
*
* Type: {@code Double}
* Obligation: mandatory
* Value range: [0…∞)
* Default value: 1
*
*
*
*
* Name: OGC
:false_easting
* Alias: EPSG
:False easting
* GeoTIFF
:FalseEasting
* PROJ4
:x_0
*
*
*
* Type: {@code Double}
* Obligation: mandatory
* Value range: (-∞ … ∞) metres
* Default value: 0 metres
*
*
*
*
* Name: OGC
:false_northing
* Alias: EPSG
:False northing
* GeoTIFF
:FalseNorthing
* PROJ4
:y_0
*
*
*
* Type: {@code Double}
* Obligation: mandatory
* Value range: (-∞ … ∞) metres
* Default value: 0 metres
*
*
*
*/
public static final ParameterDescriptorGroup PARAMETERS = UniversalParameters.createDescriptorGroup(
new ReferenceIdentifier[] {
/*
* IMPORTANT: Do not put any name that could be confused with the 2SP or
* Belgium cases below, except for the Citations.GEOTOOLKIT authority which
* is ignored. The LambertConformal constructor relies on those names for
* distinguish the kind of projection being created.
*/
new NamedIdentifier(Citations.OGC, "Lambert_Conformal_Conic_1SP"),
new NamedIdentifier(Citations.EPSG, "Lambert Conic Conformal (1SP)"),
new IdentifierCode (Citations.EPSG, 9801),
new NamedIdentifier(Citations.GEOTIFF, "CT_LambertConfConic_1SP"),
// Note: the GeoTIFF numerical code (9) is already used by the 2SP case.
new NamedIdentifier(Citations.PROJ4, "lcc"),
new NamedIdentifier(Citations.GEOTOOLKIT, Vocabulary.formatInternational(
Vocabulary.Keys.LAMBERT_CONFORMAL_PROJECTION))
}, null, new ParameterDescriptor>[] {
sameParameterAs(Mercator1SP.PARAMETERS, "semi_major"),
sameParameterAs(Mercator1SP.PARAMETERS, "semi_minor"),
ROLL_LONGITUDE, CENTRAL_MERIDIAN,
LATITUDE_OF_ORIGIN, SCALE_FACTOR,
FALSE_EASTING, FALSE_NORTHING
}, MapProjectionDescriptor.ADD_EARTH_RADIUS);
/**
* Constructs a new provider.
*/
public LambertConformal1SP() {
super(PARAMETERS);
}
/**
* Returns the operation type for this map projection.
*/
@Override
public Class getOperationType() {
return ConicProjection.class;
}
/**
* {@inheritDoc}
*/
@Override
protected MathTransform2D createMathTransform(ParameterValueGroup values) {
return LambertConformal.create(getParameters(), values);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy