There is a discrepancy between the MapLibre Tile specification and all current reference implementations (C++, Java, Rust, and TypeScript) regarding the encoding of the GeometryType stream.
The spec states:
Byte-RLE
This encoding compresses byte streams, such as the GeometryType stream in Geometry columns. Refer to the ORC specification for implementation details.
Our impl does:
Use Integer RLE instead of Byte-RLE for the GeometryType column
- rust ->
rust/mlt-core/src/layer/v01/geometry/decode.rs uses decode_bits_u32(), which eventually calls decode_rle
- java ->
java/mlt-core/src/main/java/org/maplibre/mlt/decoder/IntegerDecoder.java uses decodeRLE for integer arrays
- cpp ->
cpp/src/mlt/decode/geometry.hpp uses intDecoder.decodeIntStream
So in practice:
- either we do a breaking fix
- remove the currently unused byte-rle
There is a discrepancy between the MapLibre Tile specification and all current reference implementations (C++, Java, Rust, and TypeScript) regarding the encoding of the
GeometryTypestream.The spec states:
Our impl does:
Use Integer RLE instead of Byte-RLE for the
GeometryTypecolumnrust/mlt-core/src/layer/v01/geometry/decode.rsusesdecode_bits_u32(), which eventually callsdecode_rlejava/mlt-core/src/main/java/org/maplibre/mlt/decoder/IntegerDecoder.javausesdecodeRLEfor integer arrayscpp/src/mlt/decode/geometry.hppusesintDecoder.decodeIntStreamSo in practice: