Class ZonedGridSystem

All Implemented Interfaces:
Serializable, Parameterized, LenientComparable, org.opengis.referencing.operation.MathTransform, org.opengis.referencing.operation.MathTransform2D

public class ZonedGridSystem extends AbstractMathTransform2D implements Serializable
Transverse Mercator Zoned Grid System projection (EPSG codes 9824). This projection is valid for all the world in a given hemisphere, except the poles. The Earth is divided into zones, usually 6° width. The zone number is determined automatically from the longitude and is prefixed to the Easting value.

This map projection is not suitable for geometric calculations like distances and angles, since there is discontinuities (gaps) between zones. Actually this operation is not handled as a map projection by Apache SIS, as can be seen from the different class hierarchy.

Note: current implementation can only be backed by the Transverse Mercator projection, but future versions could apply to some other projections if needed.

Examples of CRS using this projection are WGS 84 / UTM grid system EPSG:32600 (northern hemisphere) and EPSG:32700 (southern hemisphere).

Since:
0.8
Version:
1.3
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      For cross-version compatibility.
      See Also:
    • RANGE

      private static final double RANGE
      The 360° range of longitude values.
      See Also:
    • ZONE_SCALE

      private static final double ZONE_SCALE
      The zone multiplication factor for encoding the zone in the easting. This scale factor assumes that the projection results are in metres.
      See Also:
    • initialLongitude

      final double initialLongitude
      Westernmost longitude of the first zone.
    • zoneWidth

      final double zoneWidth
      Width of each Transverse Mercator zone, in the same units than longitude values. This is usually 6°.
    • projection

      final AbstractMathTransform projection
      The projection that performs the actual work before we add the zone number.
    • inverse

      private final org.opengis.referencing.operation.MathTransform2D inverse
      The inverse of this map projection.
  • Constructor Details

    • ZonedGridSystem

      public ZonedGridSystem(org.opengis.referencing.operation.OperationMethod method, Parameters parameters, org.opengis.referencing.operation.MathTransformFactory factory) throws org.opengis.util.FactoryException
      Creates a Zoned Grid System from the given parameters. The method argument can be the description of one of the following:
      • "Transverse Mercator Zoned Grid System".
      Contrarily to other map projections in this package, there is no createMapProjection(MathTransformFactory) method in this class. Instead, the factory must be specified at this ZonedGridSystem construction time.
      Parameters:
      method - description of the projection parameters.
      parameters - the parameter values of the projection to create.
      factory - the factory to use for creating the transform.
      Throws:
      org.opengis.util.FactoryException - if an error occurred while creating a transform.
  • Method Details

    • getParameterValues

      public org.opengis.parameter.ParameterValueGroup getParameterValues()
      Returns the parameter values of this zoned grid system projection.
      Specified by:
      getParameterValues in interface Parameterized
      Overrides:
      getParameterValues in class AbstractMathTransform
      Returns:
      the internal parameter values for this zoned grid system projection.
      See Also:
    • getDomain

      public Optional<org.opengis.geometry.Envelope> getDomain(DomainDefinition criteria)
      Returns the domain of input coordinates. The limits defined by this method are arbitrary and may change in any future implementation. Current implementation sets a longitude range of ±180° (i.e. the world) and a latitude range from 84°S to 84°N.
      Overrides:
      getDomain in class AbstractMathTransform
      Parameters:
      criteria - controls the definition of transform domain.
      Returns:
      estimation of a domain where this transform is considered numerically applicable.
      Since:
      1.3
      See Also:
    • transform

      public org.opengis.referencing.operation.Matrix transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, boolean derivate) throws org.opengis.referencing.operation.TransformException
      Projects the specified (λ,φ) coordinates and stores the result in dstPts. In addition, opportunistically computes the projection derivative if derivate is true. Note that the derivative does not contain zone prefix.
      Specified by:
      transform in class AbstractMathTransform
      Parameters:
      srcPts - the array containing the source coordinates (cannot be null).
      srcOff - the offset to the point to be transformed in the source array.
      dstPts - the array into which the transformed coordinates is returned. May be the same than srcPts. May be null if only the derivative matrix is desired.
      dstOff - the offset to the location of the transformed 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:
      org.opengis.referencing.operation.TransformException - if the coordinates cannot be converted.
      See Also:
    • inverse

      public org.opengis.referencing.operation.MathTransform2D inverse()
      Returns the inverse of this map projection.
      Specified by:
      inverse in interface org.opengis.referencing.operation.MathTransform
      Specified by:
      inverse in interface org.opengis.referencing.operation.MathTransform2D
      Overrides:
      inverse in class AbstractMathTransform2D
      Returns:
      the inverse of this map projection.
    • computeHashCode

      protected int computeHashCode()
      Computes a hash code value for this ZonedGridSystem.
      Overrides:
      computeHashCode in class AbstractMathTransform
      Returns:
      the hash code value.
    • equals

      public boolean equals(Object object, ComparisonMode mode)
      Compares the given object with this transform for equivalence. If this method returns true, then for any given identical source position, the two compared map projections shall compute the same target position.
      Specified by:
      equals in interface LenientComparable
      Overrides:
      equals in class AbstractMathTransform
      Parameters:
      object - the object to compare with this map projection for equivalence.
      mode - the strictness level of the comparison. Default to ComparisonMode.STRICT.
      Returns:
      true if the given object is equivalent to this map projection.
      See Also: