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
Type members
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
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
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.