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

org.geotoolkit.referencing.operation.provider.HotineObliqueMercator 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 java.util.List;
import net.jcip.annotations.Immutable;

import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
import org.opengis.parameter.GeneralParameterDescriptor;
import org.opengis.referencing.ReferenceIdentifier;

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


/**
 * The provider for "Hotine Oblique Mercator" projection (EPSG:9812).
 * This projection is similar to the {@linkplain ObliqueMercator oblique mercator} projection,
 * except that coordinates start at the intersection of the central line and the equator
 * of the aposphere.
 * 

* The math transform implementations instantiated by this provider may be any of the following classes: *

*

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

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

*

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

*
* * *
in latitudes:0°51.0′Nto60°20.4′N
in longitudes:141°00.0′Wto119°18.0′E
* * * * * * * * * * * * *
Parameter nameDefault value
{@code semi_major}
{@code semi_minor}
{@code roll_longitude}false
{@code longitude_of_center}
{@code latitude_of_center}
{@code azimuth}
{@code rectified_grid_angle}Azimuth of initial line
{@code scale_factor}1
{@code false_easting}0 metres
{@code false_northing}0 metres
* * * @author Rueben Schulz (UBC) * @author Martin Desruisseaux (Geomatys) * @version 3.20 * * @see Hotine Oblique Mercator on RemoteSensing.org * @see Geotk coordinate operations matrix * * @since 2.4 * @module */ @Immutable public class HotineObliqueMercator extends ObliqueMercator { /** * For cross-version compatibility. */ private static final long serialVersionUID = 5822488360988630419L; /** * 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 = EquidistantCylindrical.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 = 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:Hotine_Oblique_Mercator
Alias:EPSG:Hotine Oblique Mercator (variant A)
EPSG:Hotine Oblique Mercator
ESRI:Hotine_Oblique_Mercator_Azimuth_Natural_Origin
ESRI:Rectified_Skew_Orthomorphic_Natural_Origin
GeoTIFF:CT_ObliqueMercator_Hotine
PROJ4:omerc
Geotk:Rectified Skew Orthomorphic (RSO)
Geotk:Oblique Mercator projection
Identifier:EPSG:9812
*
* * * * * * *
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:longitude_of_center
Alias:EPSG:Longitude of projection centre
ESRI:Longitude_Of_Center
GeoTIFF:CenterLong
PROJ4:lon_0
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-180 … 180]°
Default value:
*
* * * * * * *
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:
*
* * * * * *
Name:OGC:azimuth
Alias:EPSG:Azimuth of initial line
ESRI:Azimuth
GeoTIFF:AzimuthAngle
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-360 … 360]°
*
* * * * * *
Name:OGC:rectified_grid_angle
Alias:EPSG:Angle from Rectified to Skew Grid
ESRI:XY_Plane_Rotation
GeoTIFF:RectifiedGridAngle
*
* * * * * *
Type:{@code Double}
Obligation:optional
Value range:[-360 … 360]°
Default value:Azimuth of initial line
*
* * * * * * *
Name:OGC:scale_factor
Alias:EPSG:Scale factor on initial line
ESRI:Scale_Factor
GeoTIFF:ScaleAtCenter
PROJ4:k
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞)
Default value:1
*
* * * * * * *
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
*
*/ @SuppressWarnings("hiding") public static final ParameterDescriptorGroup PARAMETERS = UniversalParameters.createDescriptorGroup( new ReferenceIdentifier[] { new NamedIdentifier(Citations.OGC, "Hotine_Oblique_Mercator"), new NamedIdentifier(Citations.EPSG, "Hotine Oblique Mercator (variant A)"), // Starting from 7.6 new NamedIdentifier(Citations.EPSG, "Hotine Oblique Mercator"), // Prior to EPSG version 7.6 new IdentifierCode (Citations.EPSG, 9812), new NamedIdentifier(Citations.ESRI, "Hotine_Oblique_Mercator_Azimuth_Natural_Origin"), new NamedIdentifier(Citations.ESRI, "Rectified_Skew_Orthomorphic_Natural_Origin"), new NamedIdentifier(Citations.GEOTIFF, "CT_ObliqueMercator_Hotine"), // Note: The GeoTIFF numerical code (3) is already used by CT_ObliqueMercator. sameNameAs(Citations.PROJ4, ObliqueMercator.PARAMETERS), new NamedIdentifier(Citations.GEOTOOLKIT, "Rectified Skew Orthomorphic (RSO)"), // Legacy EPSG sameNameAs(Citations.GEOTOOLKIT, ObliqueMercator.PARAMETERS) }, null, new ParameterDescriptor[] { sameParameterAs(EquidistantCylindrical.PARAMETERS, "semi_major"), sameParameterAs(EquidistantCylindrical.PARAMETERS, "semi_minor"), ROLL_LONGITUDE, LONGITUDE_OF_CENTRE, LATITUDE_OF_CENTRE, AZIMUTH, RECTIFIED_GRID_ANGLE, SCALE_FACTOR, FALSE_EASTING, FALSE_NORTHING }, MapProjectionDescriptor.ADD_EARTH_RADIUS); /** * Constructs a new provider. */ public HotineObliqueMercator() { super(PARAMETERS); } /** * Constructs a new provider for the given parameters. */ HotineObliqueMercator(ParameterDescriptorGroup parameters) { super(parameters); } /** * The provider for "Hotine Oblique Mercator" projection specified by two points * on the central line. This is different than the classical {@linkplain HotineObliqueMercator * Hotine Oblique Mercator}, which uses a central point and azimuth. * * *

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

*

Operation name: {@code Hotine_Oblique_Mercator_Two_Point_Natural_Origin}

* * * * * * * * * * * * * *
Parameter nameDefault value
{@code Semi_Major}
{@code Semi_Minor}
{@code roll_longitude}false
{@code Latitude_Of_1st_Point}
{@code Longitude_Of_1st_Point}
{@code Latitude_Of_2nd_Point}
{@code Longitude_Of_2nd_Point}
{@code Latitude_Of_Center}
{@code Scale_Factor}1
{@code False_Easting}0 metres
{@code False_Northing}0 metres
* * * @author Rueben Schulz (UBC) * @author Martin Desruisseaux (Geomatys) * @version 3.20 * * @see org.geotoolkit.referencing.operation.projection.ObliqueMercator * @see Geotk coordinate operations matrix * * @since 2.4 * @module */ @Immutable public static class TwoPoint extends HotineObliqueMercator { /** * For cross-version compatibility. */ private static final long serialVersionUID = -3104452416276842816L; /** * The operation parameter descriptor for the {@code latitudeOf1stPoint} parameter value. * Valid values range is [-90 … 90]°. This parameter is mandatory and has no * default value. * * @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String) * descriptor(String)} instead. */ @Deprecated public static final ParameterDescriptor LAT_OF_1ST_POINT = ObliqueMercator.TwoPoint.LAT_OF_1ST_POINT; /** * The operation parameter descriptor for the {@code longitudeOf1stPoint} parameter value. * Valid values range is [-180 … 180]°. This parameter is mandatory and has no * default value. * * @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String) * descriptor(String)} instead. */ @Deprecated public static final ParameterDescriptor LONG_OF_1ST_POINT = ObliqueMercator.TwoPoint.LONG_OF_1ST_POINT; /** * The operation parameter descriptor for the {@code latitudeOf2ndPoint} parameter value. * Valid values range is [-90 … 90]°. This parameter is mandatory and has no * default value. * * @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String) * descriptor(String)} instead. */ @Deprecated public static final ParameterDescriptor LAT_OF_2ND_POINT = ObliqueMercator.TwoPoint.LAT_OF_2ND_POINT; /** * The operation parameter descriptor for the {@code longitudeOf2ndPoint} parameter value. * Valid values range is [-180 … 180]°. This parameter is mandatory and has no * default value. * * @deprecated Invoke {@linkplain #PARAMETERS}.{@linkplain ParameterDescriptorGroup#descriptor(String) * descriptor(String)} instead. */ @Deprecated public static final ParameterDescriptor LONG_OF_2ND_POINT = ObliqueMercator.TwoPoint.LONG_OF_2ND_POINT; /** * The group of all parameters expected by this coordinate operation. * The following table lists the operation names and the parameters recognized by Geotk: *

* *

* * * * * * * * * * * * *
* * * *
Name:ESRI:Hotine_Oblique_Mercator_Two_Point_Natural_Origin
Alias:Geotk:Rectified Skew Orthomorphic (RSO)
*
* * *
Name:ESRI:Semi_Major
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞) metres
*
* * *
Name:ESRI:Semi_Minor
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞) metres
*
* * *
Name:Geotk:roll_longitude
*
* * * * *
Type:{@code Boolean}
Obligation:optional
Default value:false
*
* * *
Name:ESRI:Latitude_Of_1st_Point
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-90 … 90]°
*
* * *
Name:ESRI:Longitude_Of_1st_Point
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-180 … 180]°
*
* * *
Name:ESRI:Latitude_Of_2nd_Point
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-90 … 90]°
*
* * *
Name:ESRI:Longitude_Of_2nd_Point
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-180 … 180]°
*
* * *
Name:ESRI:Latitude_Of_Center
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[-90 … 90]°
Default value:
*
* * *
Name:ESRI:Scale_Factor
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞)
Default value:1
*
* * *
Name:ESRI:False_Easting
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:(-∞ … ∞) metres
Default value:0 metres
*
* * *
Name:ESRI:False_Northing
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:(-∞ … ∞) metres
Default value:0 metres
*
*/ @SuppressWarnings("hiding") public static final ParameterDescriptorGroup PARAMETERS; static { final List param = ObliqueMercator.TwoPoint.PARAMETERS.descriptors(); PARAMETERS = UniversalParameters.createDescriptorGroup( new ReferenceIdentifier[] { new NamedIdentifier(Citations.ESRI, "Hotine_Oblique_Mercator_Two_Point_Natural_Origin"), sameNameAs(Citations.GEOTOOLKIT, HotineObliqueMercator.PARAMETERS) }, null, param.toArray(new ParameterDescriptor[param.size()]), MapProjectionDescriptor.ADD_EARTH_RADIUS); } /** * Constructs a new provider. */ public TwoPoint() { super(PARAMETERS); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy