Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* 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:
*
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 name
Default 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;
}
}