private <P extends Position> MultiPoint<P> decodeMultiPoint(ByteBuffer byteBuffer, CoordinateReferenceSystem<P> crs) { int numGeometries = byteBuffer.getInt(); if (numGeometries == 0) { return new MultiPoint<P>(crs); } List<Point<P>> geometries = new ArrayList<Point<P>>(numGeometries); for (int i = 0; i < numGeometries; i++) { geometries.add((Point<P>) decodeGeometry(byteBuffer, crs)); } return mkMultiPoint(geometries); }
private <P extends Position> MultiPolygon<P> decodeMultiPolygon(ByteBuffer byteBuffer, CoordinateReferenceSystem<P> crs) { int numGeometries = byteBuffer.getInt(); if (numGeometries == 0) { return new MultiPolygon<P>(crs); } List<Polygon<P>> geometries = new ArrayList<Polygon<P>>(numGeometries); for (int i = 0; i < numGeometries; i++) { geometries.add((Polygon<P>) decodeGeometry(byteBuffer, crs)); } return mkMultiPolygon(geometries); }
private <P extends Position> GeometryCollection<P, Geometry<P>> decodeGeometryCollection(ByteBuffer byteBuffer, CoordinateReferenceSystem<P> crs) { int numGeometries = byteBuffer.getInt(); if (numGeometries == 0) { return new GeometryCollection<P, Geometry<P>>(crs); } List<Geometry<P>> geometries = new ArrayList<Geometry<P>>(numGeometries); for (int i = 0; i < numGeometries; i++) { geometries.add(decodeGeometry(byteBuffer, crs)); } return mkGeometryCollection(geometries); }
private <P extends Position> MultiLineString<P> decodeMultiLineString(ByteBuffer byteBuffer, CoordinateReferenceSystem<P> crs) { int numGeometries = byteBuffer.getInt(); if (numGeometries == 0) { return new MultiLineString<P>(crs); } List<LineString<P>> geometries = new ArrayList<LineString<P>>(numGeometries); for (int i = 0; i < numGeometries; i++) { geometries.add((LineString<P>)decodeGeometry(byteBuffer, crs)); } return mkMultiLineString(geometries); }
@Override public <P extends Position> Geometry<P> decode(ByteBuffer byteBuffer, CoordinateReferenceSystem<P> crs) { byteBuffer.rewind(); try { prepare(byteBuffer); Geometry<P> geom = decodeGeometry(byteBuffer, crs); byteBuffer.rewind(); return geom; } catch (BufferAccessException e) { throw new WkbDecodeException(e); } }