estimateBytes method

int estimateBytes(
  1. Geometry geom
)

Estimate how much bytes a geometry will need in WKB.

@param geom Geometry to estimate. @return estimated number of bytes

Implementation

int estimateBytes(Geometry geom) {
  int result = 0;

  // write endian flag
  result += 1;

  // write typeword
  result += 4;

  if (geom.getSRID() != BinaryParser.UNKNOWN_SRID) {
    result += 4;
  }

  EGeometryType geometryType = EGeometryType.forGeometry(geom);
  switch (geometryType) {
    case EGeometryType.POINT:
      result += estimatePoint(geom.getCoordinate() ?? Coordinate.empty2D());
      break;
    case EGeometryType.LINESTRING:
      result += estimateLineString(geom as LineString);
      break;
    case EGeometryType.POLYGON:
      result += estimatePolygon(geom as Polygon);
      break;
    case EGeometryType.MULTIPOINT:
      result += estimateMultiPoint(geom as MultiPoint);
      break;
    case EGeometryType.MULTILINESTRING:
      result += estimateMultiLineString(geom as MultiLineString);
      break;
    case EGeometryType.MULTIPOLYGON:
      result += estimateMultiPolygon(geom as MultiPolygon);
      break;
    case EGeometryType.GEOMETRYCOLLECTION:
      result += estimateCollection(geom as GeometryCollection);
      break;
    default:
      throw ArgumentError("Unknown Geometry Type: $geometryType");
  }
  return result;
}