## 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.