org.opengis.geometry
Interface Precision

All Superinterfaces:
Comparable<Precision>

public interface Precision
extends Comparable<Precision>

Specifies the precision model of the direct positions in a geometry.

A precision model defines a grid of allowable points. The round(org.opengis.geometry.DirectPosition) method allows to round a direct position to the nearest allowed point. The getType() method describes the collapsing behavior of a direct position.

Precision instances can be sorted by their scale.

Since:
GeoAPI 2.1

Method Summary
 int compareTo(Precision other)
          Compares this precision model with the specified one.
 int getMaximumSignificantDigits()
          Deprecated. This is redundant with getScale().
 double getScale()
          Multiplying factor used to obtain a precise ordinate.
 PrecisionType getType()
          Returns the type of this precision model.
 void round(DirectPosition position)
          Rounds a direct position to this precision model in place.
 

Method Detail

compareTo

int compareTo(Precision other)
Compares this precision model with the specified one. Returns -1 is this model is less accurate than the other one, +1 if it is more accurate, or 0 if they have the same accuracy.

Specified by:
compareTo in interface Comparable<Precision>
Parameters:
other - Other precision model to compare against.
Returns:
a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the other.

getMaximumSignificantDigits

int getMaximumSignificantDigits()
Deprecated. This is redundant with getScale().

Returns the maximum number of significant digits provided by this precision model..

Apparently this is usually used for output, note GML generation usually has its own concept of significant digits. You may be able to capture this in terms of the getScale().

Returns:
number of significant digits
See Also:
getScale()

getScale

double getScale()
Multiplying factor used to obtain a precise ordinate.

Multiply by this value and then divide by this value to round correctly:

 double scale = pm.getScale();
 return Math.round(value * scale) / scale;
 
So to round to 3 significant digits we would have a scale of 1000. Tip: the number of significant digits can be computed as below:
 int significantDigits = (int) Math.ceil(Math.log10(pm.getScale()));
 

Returns:
Multiplying factor used before rounding.

getType

PrecisionType getType()
Returns the type of this precision model.


round

void round(DirectPosition position)
Rounds a direct position to this precision model in place.

It is likely that a Precision instance will keep different rounding rules for different axis (example x & y ordinates may be handled differently then height), by always rounding a direct position as a whole we will enable this functionality.



Copyright © 1994-2008 Open Geospatial Consortium. All Rights Reserved.