PrecisionModel

@SerialVersionUID(7777263578777803835L) object PrecisionModel

Specifies the precision model of the {link Coordinate}s in a {link Geometry}. In other words, specifies the grid of allowable points for all <code>Geometry</code>s.

The {link #makePrecise(Coordinate)} method allows rounding a coordinate to a "precise" value; that is, one whose precision is known exactly.

Coordinates are assumed to be precise in geometries. That is, the coordinates are assumed to be rounded to the precision model given for the geometry. JTS input routines automatically round coordinates to the precision model before creating Geometries. All internal operations assume that coordinates are rounded to the precision model. Constructive methods (such as boolean operations) always round computed coordinates to the appropriate precision model.

Currently three types of precision model are supported:

  • FLOATING - represents full double precision floating point. This is the default precision model used in JTS

  • FLOATING_SINGLE - represents single precision floating point.

  • FIXED - represents a model with a fixed number of decimal places. A Fixed Precision Model is specified by a scale factor. The scale factor specifies the size of the grid which numbers are rounded to. Input coordinates are mapped to fixed coordinates according to the following equations:

<UL> <LI> jtsPt.x = round( (inputPt.x * scale ) / scale <LI> jtsPt.y = round( (inputPt.y * scale ) / scale </UL>

For example, to specify 3 decimal places of precision, use a scale factor of 1000. To specify -3 decimal places of precision (i.e. rounding to the nearest 1000), use a scale factor of 0.001.

Coordinates are represented internally as Java double-precision values. Since Java uses the IEEE-394 floating point standard, this provides 53 bits of precision. (Thus the maximum precisely representable <i>integer</i> is 9,007,199,254,740,992 - or almost 16 decimal digits of precision).

JTS binary methods currently do not handle inputs which have different precision models. The precision model of any constructed geometric value is undefined.

Version

1.7

Companion
class
class Object
trait Matchable
class Any

Type members

Classlikes

@SerialVersionUID(-5528602631731589822L)
object Type

The types of Precision Model which JTS supports.

The types of Precision Model which JTS supports.

Companion
class
@SerialVersionUID(-5528602631731589822L)
class Type(var name: String) extends Serializable
Companion
object

Value members

Concrete methods

Determines which of two {link PrecisionModel}s is the most precise (allows the greatest number of significant digits).

Determines which of two {link PrecisionModel}s is the most precise (allows the greatest number of significant digits).

Value Params
pm1

a PrecisionModel

pm2

a PrecisionModel return the PrecisionModel which is most precise

Concrete fields

val FIXED: Type

Fixed Precision indicates that coordinates have a fixed number of decimal places. The number of decimal places is determined by the log10 of the scale factor.

Fixed Precision indicates that coordinates have a fixed number of decimal places. The number of decimal places is determined by the log10 of the scale factor.

Floating precision corresponds to the standard Java double-precision floating-point representation, which is based on the IEEE-754 standard

Floating precision corresponds to the standard Java double-precision floating-point representation, which is based on the IEEE-754 standard

Floating single precision corresponds to the standard Java single-precision floating-point representation, which is based on the IEEE-754 standard

Floating single precision corresponds to the standard Java single-precision floating-point representation, which is based on the IEEE-754 standard

val maximumPreciseValue: Double

The maximum precise value representable in a double. Since IEE754 double-precision numbers allow 53 bits of mantissa, the value is equal to 2^53 - 1. This provides <i>almost</i> 16 decimal digits of precision.

The maximum precise value representable in a double. Since IEE754 double-precision numbers allow 53 bits of mantissa, the value is equal to 2^53 - 1. This provides <i>almost</i> 16 decimal digits of precision.