GeoPubby  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 
)

Reimplemented in TWKBWriter.ExtendedPrecisionWriter.

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

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

Referenced by TWKBWriter.write().

◆ checkCoordinate()

void checkCoordinate ( final Coordinate  c)
protected

Reimplemented in TWKBWriter.ExtendedPrecisionWriter.

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  }

References TWKBWriter.PrecisionWriter.precision.

Referenced by TWKBWriter.PrecisionWriter.calculate().

◆ finalize()

void finalize ( final int  maxPrecision)
protected

◆ writeExtendedPrecision()

void writeExtendedPrecision ( final DataOutput  output) throws IOException

Reimplemented in TWKBWriter.ExtendedPrecisionWriter.

215  {
216  return;
217  }

Referenced by TWKBWriter.write().

◆ writePoint()

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

Reimplemented in TWKBWriter.ExtendedPrecisionWriter.

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

References TWKBWriter.PrecisionWriter.precisionMultiplier.

◆ writePointArray()

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

Reimplemented in TWKBWriter.ExtendedPrecisionWriter.

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  }

References TWKBWriter.PrecisionWriter.precisionMultiplier.

Member Data Documentation

◆ precision

◆ precisionMultiplier