kiwi-postgis  Version 0.1.0.0
TWKBWriter.PrecisionWriter Class Reference
Inheritance diagram for TWKBWriter.PrecisionWriter:
Collaboration diagram for TWKBWriter.PrecisionWriter:

Public Member Functions

PrecisionWriter calculate (final Coordinate[] coordinates, final int maxPrecision)
 
void writeExtendedPrecision (final DataOutput output) throws IOException
 
void writePoint (final Coordinate coordinate, final DataOutput output) throws IOException
 
void writePointArray (final Coordinate[] coordinates, final DataOutput output) throws IOException
 

Protected Member Functions

void checkCoordinate (final Coordinate c)
 
void finalize (final int maxPrecision)
 

Protected Attributes

double precisionMultiplier = 0
 

Private Attributes

int precision = TWKBUtils.MIN_COORD_PRECISION
 

Member Function Documentation

◆ calculate()

PrecisionWriter calculate ( final Coordinate []  coordinates,
final int  maxPrecision 
)

References TWKBWriter.PrecisionWriter.checkCoordinate(), and TWKBWriter.PrecisionWriter.finalize().

Referenced by TWKBWriter.ExtendedPrecisionWriter.calculate(), and TWKBWriter.write().

195  {
196  for (int i = 0; i < coordinates.length; i++) {
197  checkCoordinate(coordinates[i]);
198  }
200  return this;
201  }
void finalize(final int maxPrecision)
Definition: TWKBWriter.java:210
void checkCoordinate(final Coordinate c)
Definition: TWKBWriter.java:203
final int maxPrecision
Definition: TWKBWriter.java:28

◆ checkCoordinate()

void checkCoordinate ( final Coordinate  c)
protected

References Coordinate.getX(), Coordinate.getY(), and TWKBWriter.PrecisionWriter.precision.

Referenced by TWKBWriter.PrecisionWriter.calculate().

203  {
204  final BigDecimal xCoord = new BigDecimal(Double.toString(c.getX())).stripTrailingZeros();
205  precision = Math.max(xCoord.scale(), precision);
206  final BigDecimal yCoord = new BigDecimal(Double.toString(c.getY())).stripTrailingZeros();
207  precision = Math.max(yCoord.scale(), precision);
208  }

◆ finalize()

void finalize ( final int  maxPrecision)
protected

Referenced by TWKBWriter.PrecisionWriter.calculate().

210  {
211  precision = Math.min(maxPrecision, precision);
212  precisionMultiplier = Math.pow(10, precision);
213  }
final int maxPrecision
Definition: TWKBWriter.java:28

◆ writeExtendedPrecision()

void writeExtendedPrecision ( final DataOutput  output) throws IOException

Referenced by TWKBWriter.write().

215  {
216  return;
217  }

◆ writePoint()

void writePoint ( final Coordinate  coordinate,
final DataOutput  output 
) throws IOException

References TWKBWriter.PrecisionWriter.precisionMultiplier.

220  {
221  Varint.writeSignedVarLong(Math.round(coordinate.getX() * precisionMultiplier), output);
222  Varint.writeSignedVarLong(Math.round(coordinate.getY() * precisionMultiplier), output);
223  }

◆ writePointArray()

void writePointArray ( final Coordinate []  coordinates,
final DataOutput  output 
) throws IOException

References TWKBWriter.PrecisionWriter.precisionMultiplier.

226  {
227  long lastX = 0;
228  long lastY = 0;
229  Varint.writeUnsignedVarInt(coordinates.length, output);
230  for (final Coordinate c : coordinates) {
231  final long x = Math.round(c.getX() * precisionMultiplier);
232  final long y = Math.round(c.getY() * precisionMultiplier);
233  Varint.writeSignedVarLong(x - lastX, output);
234  Varint.writeSignedVarLong(y - lastY, output);
235  lastX = x;
236  lastY = y;
237  }
238  }

Member Data Documentation

◆ precision

◆ precisionMultiplier