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

org.geotoolkit.referencing.operation.provider.AbridgedMolodensky 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.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
import org.opengis.referencing.ReferenceIdentifier;
import org.opengis.referencing.crs.GeographicCRS;
import org.opengis.referencing.crs.GeocentricCRS;

import org.geotoolkit.metadata.iso.citation.Citations;
import org.geotoolkit.referencing.NamedIdentifier;
import org.geotoolkit.referencing.operation.transform.MolodenskyTransform;
import org.geotoolkit.resources.Vocabulary;

import static org.geotoolkit.referencing.operation.provider.UniversalParameters.createDescriptorGroup;


/**
 * The provider for "Abridged Molodensky transformation" (EPSG:9605). This provider
 * constructs transforms from {@linkplain GeographicCRS geographic} to geographic coordinate
 * reference systems, without passing though {@linkplain GeocentricCRS geocentric} one.
 * 

* The translation terms (dx, dy and dz) are common to all authorities. * But remaining parameters are specified in different ways depending on the authority: *

*

    *
  • EPSG defines "Semi-major axis length difference" and * "Flattening difference" parameters.
  • *
  • OGC rather defines "{@code src_semi_major}", "{@code src_semi_minor}", * "{@code tgt_semi_major}", "{@code tgt_semi_minor}" and "{@code dim}" parameters.
  • *
  • Geotk splits the OGC "{@code dim}" parameters in two separated * "{@code src_dim}" and "{@code tgt_dim}" parameters.
  • *
* * *

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

*

Operation name: {@code Abridged_Molodenski}

* * * * * * * * * * * * * * *
Parameter nameDefault value
{@code dim}2
{@code src_dim}2
{@code tgt_dim}2
{@code dx}0 metres
{@code dy}0 metres
{@code dz}0 metres
{@code src_semi_major}
{@code src_semi_minor}
{@code tgt_semi_major}
{@code tgt_semi_minor}
{@code Semi-major axis length difference}
{@code Flattening difference}
* * * @author Rueben Schulz (UBC) * @author Martin Desruisseaux (IRD, Geomatys) * @version 3.20 * * @see MolodenskyTransform * @see Geotk coordinate operations matrix * * @since 2.1 * @module */ @Immutable public class AbridgedMolodensky extends Molodensky { /** * Serial number for inter-operability with different versions. */ private static final long serialVersionUID = -3889456253400732280L; /** * The group of all parameters expected by this coordinate operation. * The following table lists the operation names and the parameters recognized by Geotk. * Note that the "Semi-major axis length difference" and "Flattening * difference" parameters are exclusive with all {@code "src_*"} and {@code "tgt_*"} * parameters (see class javadoc). *

* *

* * * * * * * * * * * * * *
* * * * * *
Name:OGC:Abridged_Molodenski
Alias:EPSG:Abridged Molodensky
Geotk:Abridged Molodensky transform
Identifier:EPSG:9605
*
* * *
Name:OGC:dim
*
* * * * * *
Type:{@code Integer}
Obligation:optional
Value range:[2…3]
Default value:2
*
* * *
Name:Geotk:src_dim
*
* * * * * *
Type:{@code Integer}
Obligation:optional
Value range:[2…3]
Default value:2
*
* * *
Name:Geotk:tgt_dim
*
* * * * * *
Type:{@code Integer}
Obligation:optional
Value range:[2…3]
Default value:2
*
* * * *
Name:OGC:dx
Alias:EPSG:X-axis translation
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:(-∞ … ∞) metres
Default value:0 metres
*
* * * *
Name:OGC:dy
Alias:EPSG:Y-axis translation
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:(-∞ … ∞) metres
Default value:0 metres
*
* * * *
Name:OGC:dz
Alias:EPSG:Z-axis translation
*
* * * * * *
Type:{@code Double}
Obligation:mandatory
Value range:(-∞ … ∞) metres
Default value:0 metres
*
* * *
Name:OGC:src_semi_major
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞) metres
*
* * *
Name:OGC:src_semi_minor
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞) metres
*
* * *
Name:OGC:tgt_semi_major
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞) metres
*
* * *
Name:OGC:tgt_semi_minor
*
* * * * *
Type:{@code Double}
Obligation:mandatory
Value range:[0…∞) metres
*
* * *
Name:EPSG:Semi-major axis length difference
*
* * * * *
Type:{@code Double}
Obligation:optional
Value range:(-∞ … ∞) metres
*
* * *
Name:EPSG:Flattening difference
*
* * * * *
Type:{@code Double}
Obligation:optional
Value range:[-1 … 1]
*
*/ @SuppressWarnings("hiding") public static final ParameterDescriptorGroup PARAMETERS = createDescriptorGroup( new ReferenceIdentifier[] { new NamedIdentifier(Citations.OGC, "Abridged_Molodenski"), new NamedIdentifier(Citations.EPSG, "Abridged Molodensky"), new IdentifierCode (Citations.EPSG, 9605), new NamedIdentifier(Citations.GEOTOOLKIT, Vocabulary.formatInternational( Vocabulary.Keys.ABRIDGED_MOLODENSKY_TRANSFORM)) }, null, new ParameterDescriptor[] { DIM, SRC_DIM, TGT_DIM, DX, DY, DZ, SRC_SEMI_MAJOR, SRC_SEMI_MINOR, TGT_SEMI_MAJOR, TGT_SEMI_MINOR, AXIS_LENGTH_DIFFERENCE, FLATTENING_DIFFERENCE }, 0); /** * Constructs a provider. */ public AbridgedMolodensky() { // Following constructors register themselves in the "complements" array. this(2, 2, PARAMETERS, new AbridgedMolodensky[4]); new AbridgedMolodensky(2, 3, PARAMETERS, complements); new AbridgedMolodensky(3, 2, PARAMETERS, complements); new AbridgedMolodensky(3, 3, PARAMETERS, complements); } /** * Constructs a provider from a set of parameters. * * @param sourceDimension Number of dimensions in the source CRS of this operation method. * @param targetDimension Number of dimensions in the target CRS of this operation method. * @param parameters The set of parameters (never {@code null}). * @param complements Providers for all combinations between 2D and 3D cases. */ private AbridgedMolodensky(final int sourceDimension, final int targetDimension, final ParameterDescriptorGroup parameters, final Molodensky[] complements) { super(sourceDimension, targetDimension, parameters, complements); } /** * Returns {@code true} for the abridged formulas. */ @Override boolean isAbridged() { return true; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy