Module org.opengis.geoapi.pending
Package org.opengis.geometry.coordinate
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 GEO202.


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 thisCoordinateSystem
.int
getDimension()
The size of the ordinate array needed to represent a coordinate in thisCoordinateSystem
, when nonhomogeneous 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 theDirectPosition
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 thisCoordinateSystem
. This is nonnull if and only if theCoordinateSystem
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 thisCoordinateSystem
, when nonhomogeneous 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 nonstandard, this name may not map to any well know identifier, and the context of the system may be required to understand how the mapping ofDirectPosition
s 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 theDirectPosition
instances. The representation is as a list of integers representing the new order of the coordinate array. The offsets are expressed in 0up order. If the permutation is absent, then the order of theDirectPosition.getCoordinate()
array will be the natural order implied by the manner in which theCoordinateSystem
is constructed.Note: The most common use of the permutation is to allow theDirectPosition
s coordinates to be stored in an order consistent with the mathematical requirement to be righthanded. For example, a latlong 2D system is lefthanded 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 righthanded (OpenGL) and mostGeographicCRS
systems are lefthanded, which means that a geometric object in aGeographicCRS
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.

