org.opengis.geometry
Interface DirectPosition

All Superinterfaces:
Position
All Known Implementing Classes:
AbstractDirectPosition, DirectPosition1D, DirectPosition2D, DirectPosition3D, GeneralDirectPosition, TransformedDirectPosition

@UML(identifier="DirectPosition",
     specification=ISO_19107)
public interface DirectPosition
extends Position

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 coordinate reference system, 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 coordinate reference system.

Note: this interface does not extends Cloneable on purpose, since DirectPosition implementations are most likely to be backed by references to internal structures of the geometry containing this position. A direct position may or may not be cloneable at implementor choice.

Since:
GeoAPI 1.0
Author:
Martin Desruisseaux (IRD)

Method Summary
 boolean equals(Object object)
          Compares this direct position with the specified object for equality.
 double[] getCoordinate()
          A copy of the ordinates presented as an array of double values.
 CoordinateReferenceSystem getCoordinateReferenceSystem()
          The coordinate reference system in which the coordinate is given.
 int getDimension()
          The length of coordinate sequence (the number of entries).
 double getOrdinate(int dimension)
          Returns the ordinate at the specified dimension.
 int hashCode()
          Returns a hash code value for this direct position.
 void setOrdinate(int dimension, double value)
          Sets the ordinate value along the specified dimension.
 
Methods inherited from interface Position
getDirectPosition
 

Method Detail

getCoordinateReferenceSystem

@UML(identifier="coordinateReferenceSystem",
     obligation=MANDATORY,
     specification=ISO_19107)
CoordinateReferenceSystem getCoordinateReferenceSystem()
The coordinate reference system in which the coordinate is given. May be 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 coordinate reference system.

Returns:
The coordinate reference system, or null.

getDimension

@UML(identifier="dimension",
     obligation=MANDATORY,
     specification=ISO_19107)
int getDimension()
The length of coordinate sequence (the number of entries). This is determined by the coordinate reference system.

Returns:
The dimensionality of this position.

getCoordinate

@UML(identifier="coordinate",
     obligation=MANDATORY,
     specification=ISO_19107)
double[] getCoordinate()
A copy of the ordinates presented as an array of double values. Please note that this is only a copy (the real values may be stored in another format) so changes to the returned array will not affect the source DirectPosition.
 final int dim = position.getDimension();
 for (int i=0; i<dim; i++) {
     position.getOrdinate(i); // no copy overhead
 }
 
To manipulate ordinates, the following idiom can be used:
 position.setOrdinate(i, value); // edit in place
 
There are a couple reasons for requerying a copy:

Precedence is given to data integrity over getOrdinates() performance. Performance concern can be avoided with usage of getOrdinate(int).

Returns:
A copy of the coordinates. Changes in the returned array will not be reflected back in this DirectPosition object.

getOrdinate

double getOrdinate(int dimension)
                   throws IndexOutOfBoundsException
Returns the ordinate at the specified dimension.

Parameters:
dimension - The dimension in the range 0 to dimension-1.
Returns:
The coordinate at the specified dimension.
Throws:
IndexOutOfBoundsException - If the given index is negative or is equals or greater than the envelope dimension.

setOrdinate

void setOrdinate(int dimension,
                 double value)
                 throws IndexOutOfBoundsException,
                        UnsupportedOperationException
Sets the ordinate value along the specified dimension.

Parameters:
dimension - the dimension for the ordinate of interest.
value - the ordinate value of interest.
Throws:
IndexOutOfBoundsException - If the given index is negative or is equals or greater than the envelope dimension.
UnsupportedOperationException - if this direct position is immutable.

equals

boolean equals(Object object)
Compares this direct position with the specified object for equality. Two direct positions are considered equal if the following conditions are meet:

Overrides:
equals in class Object
Parameters:
object - The object to compare with this direct position for equality.
Returns:
true if the given object is equals to this direct position.
Since:
GeoAPI 2.1

hashCode

int hashCode()
Returns a hash code value for this direct position. This method should returns the same value as: Arrays.hashCode(getCoordinate()) + getCoordinateReferenceSystem().hashCode() where the right hand side of the addition is omitted if the coordinate reference system is null.

Overrides:
hashCode in class Object
Returns:
A hash code value for this direct position.
Since:
GeoAPI 2.1


Copyright © 1996-2014 Geotools. All Rights Reserved.