parseEWKB static method

Geometry parseEWKB(
  1. Uint8List bytes
)

Implementation

static Geometry parseEWKB(Uint8List bytes) {
  final byteOrder = ByteOrder.read(bytes.first);

  final reader = ByteDataReader(endian: byteOrder.endian);
  reader.add(bytes);
  reader.readInt8();

  final typeDef = reader.readUint32();
  final hasZ = typeDef & wkbZ != 0;
  final hasM = typeDef & wkbM != 0;
  final hasSRID = typeDef & wkbSRID != 0;

  final baseType = typeDef & ~wkbZ & ~wkbM & ~wkbSRID;
  final type = GeometryType.read(baseType);

  final srid = hasSRID ? reader.readUint32() : null;

  switch (type) {
    case GeometryType.point:
      return Point.read(srid, reader, hasZ, hasM);
    case GeometryType.lineString:
      return LineString.read(srid, reader, hasZ, hasM);
    case GeometryType.polygon:
      return Polygon.read(srid, reader, hasZ, hasM);
    case GeometryType.multiPoint:
      return MultiPoint.read(srid, reader, hasZ, hasM);
    case GeometryType.multiLineString:
      return MultiLineString.read(srid, reader, hasZ, hasM);
    case GeometryType.multiPolygon:
      return MultiPolygon.read(srid, reader, hasZ, hasM);
    case GeometryType.geometryCollection:
      return GeometryCollection.read(srid, reader, hasZ, hasM);
  }
}