Class GeneralPosition

  • All Implemented Interfaces:
    Serializable, Cloneable, Position, Cloneable
    Direct Known Subclasses:
    TransformedPosition

    public class GeneralPosition
    extends AbstractPosition
    implements Serializable, Cloneable
    Holds the coordinates for a position within some coordinate reference system. Since DirectPositions, as data types, will often be included in larger objects (such as geometries) that have references to CoordinateReferenceSystem, the getCoordinateReferenceSystem() method may returns null if this particular DirectPosition is included in a larger object with such a reference to a coordinate reference system. In this case, the cordinate reference system is implicitly assumed to take on the value of the containing object's CoordinateReferenceSystem.

    This particular implementation of DirectPosition is said "General" because it uses an array of ordinates of an arbitrary length. If the direct position is know to be always two-dimensional, then Position2D may provides a more efficient implementation.

    Most methods in this implementation are final for performance reason.

    Since:
    2.0
    Author:
    Martin Desruisseaux (IRD)
    See Also:
    Position1D, Position2D, Point2D, Serialized Form
    • Field Detail

      • ordinates

        public final double[] ordinates
        The ordinates of the direct position.
    • Constructor Detail

      • GeneralPosition

        public GeneralPosition​(CoordinateReferenceSystem crs)
        Constructs a position using the specified coordinate reference system. The number of dimensions is inferred from the coordinate reference system.
        Parameters:
        crs - The coordinate reference system to be given to this position.
        Since:
        2.2
      • GeneralPosition

        public GeneralPosition​(int numDim)
                        throws NegativeArraySizeException
        Constructs a position with the specified number of dimensions.
        Parameters:
        numDim - Number of dimensions.
        Throws:
        NegativeArraySizeException - if numDim is negative.
      • GeneralPosition

        public GeneralPosition​(double[] ordinates)
        Constructs a position with the specified ordinates. The ordinates array will be copied.
        Parameters:
        ordinates - The ordinate values to copy.
      • GeneralPosition

        public GeneralPosition​(double x,
                               double y)
        Constructs a 2D position from the specified ordinates. Despite their name, the (x,y) coordinates don't need to be oriented toward (East, North). See the Position2D javadoc for details.
        Parameters:
        x - The first ordinate value.
        y - The second ordinate value.
      • GeneralPosition

        public GeneralPosition​(double x,
                               double y,
                               double z)
        Constructs a 3D position from the specified ordinates. Despite their name, the (x,y,z) coordinates don't need to be oriented toward (East, North, Up).
        Parameters:
        x - The first ordinate value.
        y - The second ordinate value.
        z - The third ordinate value.
      • GeneralPosition

        public GeneralPosition​(Point2D point)
        Constructs a position from the specified Point2D.
        Parameters:
        point - The position to copy.
      • GeneralPosition

        public GeneralPosition​(Position point)
        Constructs a position initialized to the same values than the specified point.
        Parameters:
        point - The position to copy.
        Since:
        2.2
    • Method Detail

      • getDimension

        public final int getDimension()
        The length of coordinate sequence (the number of entries). This may be less than or equal to the dimensionality of the coordinate reference system.
        Specified by:
        getDimension in interface Position
        Returns:
        The dimensionality of this position.
      • getOrdinate

        public final double getOrdinate​(int dimension)
                                 throws IndexOutOfBoundsException
        Returns the ordinate at the specified dimension.
        Specified by:
        getOrdinate in interface Position
        Parameters:
        dimension - The dimension in the range 0 to dimension-1.
        Returns:
        The coordinate at the specified dimension.
        Throws:
        IndexOutOfBoundsException - if the specified dimension is out of bounds.
      • setOrdinate

        public final void setOrdinate​(int dimension,
                                      double value)
                               throws IndexOutOfBoundsException
        Sets the ordinate value along the specified dimension.
        Specified by:
        setOrdinate in interface Position
        Parameters:
        dimension - the dimension for the ordinate of interest.
        value - the ordinate value of interest.
        Throws:
        IndexOutOfBoundsException - if the specified dimension is out of bounds.
      • setLocation

        public final void setLocation​(Position position)
                               throws MismatchedDimensionException
        Set this coordinate to the specified direct position. If the specified position contains a coordinate reference system, then the CRS for this position will be set to the CRS of the specified position.
        Parameters:
        position - The new position for this point.
        Throws:
        MismatchedDimensionException - if this point doesn't have the expected dimension.
        Since:
        2.2
      • setLocation

        public final void setLocation​(Point2D point)
                               throws MismatchedDimensionException
        Set this coordinate to the specified Point2D. This coordinate must be two-dimensional.
        Parameters:
        point - The new coordinate for this point.
        Throws:
        MismatchedDimensionException - if this coordinate point is not two-dimensional.
      • toPoint2D

        public Point2D toPoint2D()
                          throws IllegalStateException
        Returns a Point2D with the same coordinate as this direct position. This is a convenience method for interoperability with Java2D.
        Returns:
        This position as a two-dimensional point.
        Throws:
        IllegalStateException - if this coordinate point is not two-dimensional.
      • hashCode

        public int hashCode()
        Returns a hash value for this coordinate.
        Specified by:
        hashCode in interface Position
        Overrides:
        hashCode in class AbstractPosition
        Returns:
        A hash code value for this position.
      • clone

        public GeneralPosition clone()
        Returns a deep copy of this position.
        Specified by:
        clone in interface Cloneable
        Overrides:
        clone in class Object
        Returns:
        A copy of this object.
        See Also:
        Object.clone()