Interface CoordinateSystem


  • @Draft
    @UML(identifier="GM_CoordinateSystem",
         specification=ISO_19107)
    public interface CoordinateSystem
    Organizes the manner in which the direct positions are described.
    Since:
    3.1
    TODO:
    This interface is defined in the ISO 19107 draft. But maybe we should consider retrofitting it in the GeoAPI org.opengis.referencing.cs.CoordinateSystem interface instead. See GEO-202.
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      CoordinateReferenceSystem getCoordinateReferenceSystem()
      The coordinate reference system as defined in ISO 19111 that describes this CoordinateSystem.
      int getDimension()
      The size of the ordinate array needed to represent a coordinate in this CoordinateSystem, when non-homogeneous representations are used.
      String getName()
      A character string identifier for this coordinate system.
      Handed getOrientation()
      The enumerated value for “left” or “right” which will identify the spatial orientation of this coordinate system in its unpermuted state.
      Permutation getPermutation()
      Describes how offsets in the coordinate arrays are rearranged for storage within the DirectPosition instances.
    • Method Detail

      • getCoordinateReferenceSystem

        @Draft
        @UML(identifier="coordinateReferenceSystem",
             obligation=OPTIONAL,
             specification=ISO_19107)
        CoordinateReferenceSystem getCoordinateReferenceSystem()
        The coordinate reference system as defined in ISO 19111 that describes this CoordinateSystem. This is non-null if and only if the CoordinateSystem is acting as a proxy for a pure spatial coordinate system, or if the system is compound, one of its projections is such a proxy. In either case, the proxy is needed to keep track of the coordinate reference system handedness, and provide a place for other information as needed by applications classes implementing this interface.
        Returns:
        the coordinate reference system, or null.
      • getDimension

        @Draft
        @UML(identifier="dimension",
             obligation=MANDATORY,
             specification=ISO_19107)
        int getDimension()
        The size of the ordinate array needed to represent a coordinate in this CoordinateSystem, when non-homogeneous representations are used. For example the dimension of (X, Y, Z) is 3 and the dimension of (Longitude, Latitude) is 2.
        Returns:
        the dimension of this coordinate system.
      • getName

        @Draft
        @UML(identifier="name",
             obligation=OPTIONAL,
             specification=ISO_19107)
        String getName()
        A character string identifier for this coordinate system. Since many of these systems will be non-standard, this name may not map to any well know identifier, and the context of the system may be required to understand how the mapping of DirectPositions to real locations is accomplished.
        Returns:
        the name of this coordinate system, or null if unspecified.
      • getPermutation

        @Draft
        @UML(identifier="permutation",
             obligation=OPTIONAL,
             specification=ISO_19107)
        Permutation getPermutation()
        Describes how offsets in the coordinate arrays are rearranged for storage within the DirectPosition instances. The representation is as a list of integers representing the new order of the coordinate array. The offsets are expressed in 0-up order. If the permutation is absent, then the order of the DirectPosition.getCoordinate() array will be the natural order implied by the manner in which the CoordinateSystem is constructed.
        Note: The most common use of the permutation is to allow the DirectPositions coordinates to be stored in an order consistent with the mathematical requirement to be right-handed. For example, a lat-long 2D system is left-handed so that swapping the first two offsets gives a system more consistent with most mathematical libraries.
        Returns:
        the offsets in the coordinate arrays for storage within the direct positions, or null for natural ordering.
      • getOrientation

        @Draft
        @UML(identifier="orientation",
             obligation=OPTIONAL,
             specification=ISO_19107)
        Handed getOrientation()
        The enumerated value for “left” or “right” which will identify the spatial orientation of this coordinate system in its unpermuted state. This information is needed to properly calculate visual representations of the underlying geometry. Most display systems are right-handed (OpenGL) and most GeographicCRS systems are left-handed, which means that a geometric object in a GeographicCRS may require special treatment to obtain proper orientation of views to agree with reality. Orientation is also dependent on coordinate system handedness, and is discussed in this standard in the clauses for surfaces and solids. If not specified, the by default “right” which is the standard for Mathematics and Geometry.
        Note: A permutation can be represented by sequence of transpositions each swapping exactly two offsets. Although the number of transpositions is not fixed, if one representation uses an even number, then all representations use an even number. Using this, permutations can be classified as either odd or even. An odd permutation changes the handedness of the system. An even permutation does not.
        Returns:
        the coordinate system orientation, or null if unspecified.