org.geotoolkit.referencing.operation.projection
Class Krovak

Object
  extended by FormattableObject
      extended by AbstractMathTransform
          extended by AbstractMathTransform2D
              extended by UnitaryProjection
                  extended by Krovak
All Implemented Interfaces:
Serializable, Formattable, Parameterized, LenientComparable, MathTransform, MathTransform2D

@Immutable
public class Krovak
extends UnitaryProjection

Krovak Oblique Conformal Conic projection (EPSG code 9819). See the Krovak on POSC for an overview. See any of the following providers for a list of programmatic parameters:


Description
This projection is used in the Czech Republic and Slovakia under the name "Krovak" projection. The geographic coordinates on the ellipsoid are first reduced to conformal coordinates on the conformal (Gaussian) sphere. These spherical coordinates are then projected onto the oblique cone and converted to grid coordinates. The pseudo standard parallel is defined on the conformal sphere after its rotation, to obtain the oblique aspect of the projection. It is then the parallel on this sphere at which the map projection is true to scale; on the ellipsoid it maps as a complex curve.

The compulsory parameters are just the ellipsoid characteristics. All other parameters are optional and have defaults to match the common usage with Krovak projection.

Projected CRS using the Krovak projection are usually defined with (southing, westing) axis orientations. ESRI uses those orientations by default. However in Geotk, every projection must have (easting, northing) orientations - axis reversal are handled by the concatenation of affine transforms. Consequently in order to get the usual axis order, a Krovak projected CRS must defines axis order explicitly (as required by the OGC standard) like in the example below:

PROJCS["S-JTSK (Ferro) / Krovak",
    GEOCS[...],
  PROJECTION["Krovak"],
  PARAMETER["semi_major", 6377397.155],
  PARAMETER["semi_minor", 6356078.963],
  UNIT["metre", 1],
  AXIS["y", SOUTH],
  AXIS["x", WEST]]
The default Krovak projection implemented by this class - having (easting, northing) axis orientations - is cold Krovak GIS version.


References

Since:
2.4
Version:
3.20
Author:
Jan Jezek (HSRS), Martin Desruisseaux (IRD, Geomatys), Rémi Maréchal (Geomatys)
See Also:
Serialized Form
Module:
referencing/geotk-referencing (download)    View source code for this class

Nested Class Summary
 
Nested classes/interfaces inherited from class UnitaryProjection
UnitaryProjection.Parameters
 
Field Summary
 
Fields inherited from class UnitaryProjection
excentricity, excentricitySquared
 
Fields inherited from class FormattableObject
EPSG, GEOTIFF, INTERNAL, OGC, SINGLE_LINE
 
Constructor Summary
protected Krovak(UnitaryProjection.Parameters parameters)
          Constructs a new map projection from the supplied parameters.
 
Method Summary
protected  int computeHashCode()
          Computes a hash code value for this unitary projection.
static MathTransform2D create(ParameterDescriptorGroup descriptor, ParameterValueGroup values)
          Creates a Krovak projection from the given parameters.
 boolean equals(Object object, ComparisonMode mode)
          Compares the given object with this transform for equivalence.
protected  void inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff)
          Transforms the specified (x,y) coordinates and stores the result in dstPts (angles in radians).
 Matrix transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, boolean derivate)
          Converts the specified (λ,φ) coordinate (units in radians) and stores the result in dstPts (linear distance on a unit sphere).
 
Methods inherited from class UnitaryProjection
finish, getParameterValues, getUnmarshalledParameters, inverse, resetWarnings, rollLongitude, unrollLongitude
 
Methods inherited from class AbstractMathTransform2D
getParameterDescriptors, getSourceDimensions, getTargetDimensions, transform
 
Methods inherited from class AbstractMathTransform
createTransformedShape, derivative, derivative, ensureNonNull, equals, formatWKT, getName, hashCode, isIdentity, rollLongitude, transform, transform, transform, transform, transform
 
Methods inherited from class FormattableObject
getDefaultIndentation, print, setDefaultIndentation, toString, toWKT, toWKT, toWKT, toWKT
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface MathTransform2D
createTransformedShape, derivative
 
Methods inherited from interface MathTransform
derivative, isIdentity, toWKT, transform, transform, transform, transform, transform
 

Constructor Detail

Krovak

protected Krovak(UnitaryProjection.Parameters parameters)
Constructs a new map projection from the supplied parameters.

Parameters:
parameters - The parameters of the projection to be created.
Method Detail

create

public static MathTransform2D create(ParameterDescriptorGroup descriptor,
                                     ParameterValueGroup values)
Creates a Krovak projection from the given parameters. The descriptor argument is usually Krovak.PARAMETERS, but is not restricted to. If a different descriptor is supplied, it is user's responsibility to ensure that it is suitable to a Krovak projection.

Parameters:
descriptor - Typically Krovak.PARAMETERS.
values - The parameter values of the projection to create.
Returns:
The map projection.
Since:
3.00

transform

public Matrix transform(double[] srcPts,
                        int srcOff,
                        double[] dstPts,
                        int dstOff,
                        boolean derivate)
                 throws ProjectionException
Converts the specified (λ,φ) coordinate (units in radians) and stores the result in dstPts (linear distance on a unit sphere). In addition, opportunistically computes the projection derivative if derivate is true.

Specified by:
transform in class UnitaryProjection
Parameters:
srcPts - The array containing the source point coordinate, as (longitude, latitude) angles in radians.
srcOff - The offset of the point to be converted in the source array.
dstPts - The array into which the converted point coordinate is returned (may be the same than srcPts). Ordinates will be expressed in a dimensionless unit, as a linear distance on a unit sphere or ellipse.
dstOff - The offset of the location of the converted point that is stored in the destination array.
derivate - true for computing the derivative, or false if not needed.
Returns:
The matrix of the projection derivative at the given source position, or null if the derivate argument is false.
Throws:
ProjectionException - if the point can't be converted.
Since:
3.20 (derived from 3.00)
See Also:
AbstractMathTransform.derivative(DirectPosition), AbstractMathTransform.transform(DirectPosition, DirectPosition), MathTransforms.derivativeAndTransform(MathTransform, double[], int, double[], int)

inverseTransform

protected void inverseTransform(double[] srcPts,
                                int srcOff,
                                double[] dstPts,
                                int dstOff)
                         throws ProjectionException
Transforms the specified (x,y) coordinates and stores the result in dstPts (angles in radians).

Specified by:
inverseTransform in class UnitaryProjection
Parameters:
srcPts - The array containing the source point coordinate, as linear distance on a unit sphere or ellipse.
srcOff - The offset of the point to be converted in the source array.
dstPts - the array into which the converted point coordinate is returned (may be the same than srcPts). Ordinates will be (longitude, latitude) angles in radians.
dstOff - The offset of the location of the converted point that is stored in the destination array.
Throws:
ProjectionException - if the point can't be converted.

computeHashCode

protected int computeHashCode()
Computes a hash code value for this unitary projection. The default implementation computes a value from the parameters given at construction time.

Overrides:
computeHashCode in class UnitaryProjection
Returns:
The hash code value. This value may change between different execution of the Geotk library.

equals

public boolean equals(Object object,
                      ComparisonMode mode)
Compares the given object with this transform for equivalence.

Specified by:
equals in interface LenientComparable
Overrides:
equals in class UnitaryProjection
Parameters:
object - The object to compare with this unitary projection for equivalence.
mode - The strictness level of the comparison. Default to STRICT.
Returns:
true if the given object is equivalent to this unitary projection.
See Also:
Utilities.deepEquals(Object, Object, ComparisonMode)


Copyright © 2009-2012 Geotoolkit.org. All Rights Reserved.