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

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

/*
 *    Geotoolkit.org - An Open Source Java GIS Toolkit
 *    http://www.geotoolkit.org
 *
 *    (C) 2002-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.metadata.citation.Citation;
import org.opengis.parameter.ParameterValueGroup;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
import org.opengis.referencing.operation.ConicProjection;
import org.opengis.referencing.operation.MathTransform2D;
import org.opengis.referencing.ReferenceIdentifier;

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


/**
 * The provider for "Krovak Oblique Conic Conformal" projection (EPSG:9819).
 * The math transform implementations instantiated by this provider may be any of the following classes:
 * 

*

    *
  • {@link org.geotoolkit.referencing.operation.projection.Krovak}
  • *
* * *

The following table summarizes the parameters recognized by this provider. * For a more detailed parameter list, see the {@link #PARAMETERS} constant.

*

Operation name: {@code Krovak} *
Area of use: (union of CRS domains of validity in EPSG database)

*
* * *
in latitudes:47°44.4′Nto51°03.0′N
in longitudes:12°05.4′Eto22°33.6′E
* * * * * * * * * * * * * * * *
Parameter nameDefault value
{@code semi_major}
{@code semi_minor}
{@code roll_longitude}false
{@code latitude_of_center}49.5°
{@code longitude_of_center}24.83333333333333°
{@code azimuth}30.28813972222222°
{@code pseudo_standard_parallel_1}78.5°
{@code scale_factor}0.9999
{@code false_easting}0 metres
{@code false_northing}0 metres
{@code X_Scale}1
{@code Y_Scale}1
{@code XY_Plane_Rotation}
* * * @author Jan Jezek (HSRS) * @author Martin Desruisseaux (IRD, Geomatys) * @version 3.20 * * @see Krovak on RemoteSensing.org * @see Geotk coordinate operations matrix * * @since 2.4 * @module */ @Immutable public class Krovak extends MapProjection { /** * For cross-version compatibility. */ private static final long serialVersionUID = -278392856661204734L; /** * 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 * 24°50' (which is 42°30' from Ferro prime meridian). * * @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String) * descriptor(String)} instead. */ @Deprecated public static final ParameterDescriptor LONGITUDE_OF_CENTRE; /** * 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 49.5°. * * @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String) * descriptor(String)} instead. */ @Deprecated public static final ParameterDescriptor LATITUDE_OF_CENTRE; /** * The operation parameter descriptor for the {@code azimuth} parameter value. This has * been renamed "Co-latitude of cone axis" in latest EPSG database versions. * * This parameter is mandatory. * Valid values range is [-90 … 90]° and default value is 30.28813972222°. * * @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String) * descriptor(String)} instead. */ @Deprecated public static final ParameterDescriptor AZIMUTH; /** * The operation parameter descriptor for the first {@linkplain * org.geotoolkit.referencing.operation.projection.UnitaryProjection.Parameters#standardParallels * standard parallel} parameter value. * * This parameter is mandatory. * Valid values range is [-90 … 90]° and default value is 78.5°. * * @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String) * descriptor(String)} instead. */ @Deprecated public static final ParameterDescriptor PSEUDO_STANDARD_PARALLEL; /** * 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 0.9999. * * @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String) * descriptor(String)} instead. */ @Deprecated public static final ParameterDescriptor 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; /** * 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; /** * Parameters creation, which must be done before to initialize the {@link #PARAMETERS} field. */ static { final Citation[] excludes = new Citation[] {Citations.NETCDF}; LONGITUDE_OF_CENTRE = UniversalParameters.CENTRAL_MERIDIAN.select(true, 42.5 - 17.66666666666667, excludes, null, "Longitude of origin", // EPSG "longitude_of_center", // OGC "Longitude_Of_Center", // ESRI "CenterLong"); // GeoTIFF LATITUDE_OF_CENTRE = UniversalParameters.LATITUDE_OF_ORIGIN.select(true, 49.5, excludes, null, "Latitude of projection centre", // EPSG "latitude_of_center", // OGC "Latitude_Of_Center", // ESRI "CenterLat"); // GeoTIFF AZIMUTH = UniversalParameters.AZIMUTH.select(true, 30.28813972222222, excludes, null, "Co-latitude of cone axis", // EPSG "azimuth", // OGC "AzimuthAngle"); // GeoTIFF PSEUDO_STANDARD_PARALLEL = UniversalParameters.STANDARD_PARALLEL_1.select(true, 78.5, excludes, null, "Latitude of pseudo standard parallel", // EPSG "pseudo_standard_parallel_1", // OGC "Pseudo_Standard_Parallel_1"); // ESRI SCALE_FACTOR = UniversalParameters.SCALE_FACTOR.select(true, 0.9999, excludes, null, "Scale factor on pseudo standard parallel", // EPSG "ScaleAtCenter"); // GeoTIFF // Following are the same than Mercator1SP except for the exclusion list. FALSE_EASTING = EquidistantCylindrical.FALSE_EASTING; FALSE_NORTHING = EquidistantCylindrical.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:Krovak
Alias:EPSG:Krovak
EPSG:Krovak Oblique Conic Conformal
ESRI:Krovak
GeoTIFF:Krovak
PROJ4:krovak
Geotk:Krovak Oblique Conformal Conic
Identifier:EPSG:9819
*
* * * * * * *
Name:OGC:semi_major
Alias:EPSG:Semi-major axis
ESRI:Semi_Major
GeoTIFF:SemiMajor
PROJ4:a
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞) metres
*
* * * * * * *
Name:OGC:semi_minor
Alias:EPSG:Semi-minor axis
ESRI:Semi_Minor
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:latitude_of_center
Alias:EPSG:Latitude of projection centre
ESRI:Latitude_Of_Center
GeoTIFF:CenterLat
PROJ4:lat_0
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-90 … 90]°
Default value:49.5°
*
* * * * * * *
Name:OGC:longitude_of_center
Alias:EPSG:Longitude of origin
ESRI:Longitude_Of_Center
GeoTIFF:CenterLong
PROJ4:lon_0
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-180 … 180]°
Default value:24.83333333333333°
*
* * * * * *
Name:OGC:azimuth
Alias:EPSG:Co-latitude of cone axis
ESRI:Azimuth
GeoTIFF:AzimuthAngle
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-360 … 360]°
Default value:30.28813972222222°
*
* * * * * * *
Name:OGC:pseudo_standard_parallel_1
Alias:EPSG:Latitude of pseudo standard parallel
ESRI:Pseudo_Standard_Parallel_1
GeoTIFF:StdParallel1
PROJ4:lat_1
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-90 … 90]°
Default value:78.5°
*
* * * * * * *
Name:OGC:scale_factor
Alias:EPSG:Scale factor on pseudo standard parallel
ESRI:Scale_Factor
GeoTIFF:ScaleAtCenter
PROJ4:k
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞)
Default value:0.9999
*
* * * * * * *
Name:OGC:false_easting
Alias:EPSG:False easting
ESRI: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
ESRI:False_Northing
GeoTIFF:FalseNorthing
PROJ4:y_0
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:(-∞ … ∞) metres
Default value:0 metres
*
* * *
Name:ESRI:X_Scale
*
* * * * * *
Type:{@code Double}
Obligation:optional
Value range:(-∞ … ∞)
Default value:1
*
* * *
Name:ESRI:Y_Scale
*
* * * * * *
Type:{@code Double}
Obligation:optional
Value range:(-∞ … ∞)
Default value:1
*
* * *
Name:ESRI:XY_Plane_Rotation
*
* * * * * *
Type:{@code Double}
Obligation:optional
Value range:[-360 … 360]°
Default value:
*
*/ public static final ParameterDescriptorGroup PARAMETERS = UniversalParameters.createDescriptorGroup( new ReferenceIdentifier[] { new NamedIdentifier(Citations.OGC, "Krovak"), new NamedIdentifier(Citations.EPSG, "Krovak"), // Starting from EPSG version 7.6 new DeprecatedName (Citations.EPSG, "Krovak Oblique Conic Conformal"), // Legacy new IdentifierCode (Citations.EPSG, 9819), new NamedIdentifier(Citations.ESRI, "Krovak"), new NamedIdentifier(Citations.GEOTIFF, "Krovak"), new NamedIdentifier(Citations.PROJ4, "krovak"), new NamedIdentifier(Citations.GEOTOOLKIT, "Krovak Oblique Conformal Conic"), }, null, new ParameterDescriptor[] { sameParameterAs(ObliqueStereographic.PARAMETERS, "semi_major"), sameParameterAs(ObliqueStereographic.PARAMETERS, "semi_minor"), ROLL_LONGITUDE, LATITUDE_OF_CENTRE, LONGITUDE_OF_CENTRE, AZIMUTH, PSEUDO_STANDARD_PARALLEL, SCALE_FACTOR, FALSE_EASTING, FALSE_NORTHING, X_SCALE, Y_SCALE, XY_PLANE_ROTATION }, MapProjectionDescriptor.ADD_EARTH_RADIUS); /** * Constructs a new provider. */ public Krovak() { 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 org.geotoolkit.referencing.operation.projection.Krovak.create(getParameters(), values); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy