maplibre/maplibre-tile-spec

Decoding error "physical level technique not yet supported: ALP" in IntegerDecoder.decodeIntStream

springmeyer opened this issue · 2 comments

With the latest code, in the vectorized & non-vectorized paths, we are hitting:

java.lang.IllegalArgumentException: Specified physical level technique not yet supported: ALP
	at com.mlt.decoder.IntegerDecoder.decodeIntStream(IntegerDecoder.java:86)
	at com.mlt.decoder.GeometryDecoder.decodeGeometryColumn(GeometryDecoder.java:29)
	at com.mlt.decoder.MltDecoder.decodeMlTile(MltDecoder.java:77)
	at com.mlt.tools.Encode.main(Encode.java:269)

Testcase:

cd java
./gradlew cli
git clone git@github.com:mapbox/mvt-fixtures.git
java -jar build/libs/encode.jar -mvt mvt-fixtures/real-world/norway/12-2174-1070.mvt -decode -vectorized

This does not happen with the -advanced flag. So, seems like a bug in varint handling

Curiously, I still get an error with latest main with this tile, but it is different:

java.lang.IndexOutOfBoundsException
	at java.base/java.nio.Buffer.checkIndex(Buffer.java:743)
	at java.base/java.nio.HeapByteBuffer.put(HeapByteBuffer.java:218)
	at com.mlt.decoder.vectorized.VectorizedDecodingUtils.decodeByteRle(VectorizedDecodingUtils.java:56)
	at com.mlt.decoder.vectorized.VectorizedDecodingUtils.decodeBooleanRle(VectorizedDecodingUtils.java:19)
	at com.mlt.decoder.vectorized.VectorizedPropertyDecoder.decodeToRandomAccessFormat(VectorizedPropertyDecoder.java:137)
	at com.mlt.decoder.MltDecoder.decodeMlTileVectorized(MltDecoder.java:164)
	at com.mlt.tools.Encode.main(Encode.java:254)

This is still present after #158. The error impacts both the vectorized and non-vectorized pathways. But the exception is different.

Exception in vectorized:

 java -jar build/libs/encode.jar -mvt ~/projects/mvt-fixtures/real-world/norway/12-2174-1070.mvt -decode -vectorized
java.lang.IndexOutOfBoundsException
	at java.base/java.nio.Buffer.checkIndex(Buffer.java:743)
	at java.base/java.nio.HeapByteBuffer.put(HeapByteBuffer.java:218)
	at com.mlt.decoder.vectorized.VectorizedDecodingUtils.decodeByteRle(VectorizedDecodingUtils.java:56)
	at com.mlt.decoder.vectorized.VectorizedDecodingUtils.decodeBooleanRle(VectorizedDecodingUtils.java:19)
	at com.mlt.decoder.vectorized.VectorizedPropertyDecoder.decodeToRandomAccessFormat(VectorizedPropertyDecoder.java:137)
	at com.mlt.decoder.MltDecoder.decodeMlTileVectorized(MltDecoder.java:164)
	at com.mlt.tools.Encode.main(Encode.java:254)

Exception in non-vectorized:

java -jar build/libs/encode.jar -mvt ~/projects/mvt-fixtures/real-world/norway/12-2174-1070.mvt -decode            
java.lang.IllegalArgumentException: Specified physical level technique not yet supported: NONE
	at com.mlt.decoder.IntegerDecoder.decodeIntStream(IntegerDecoder.java:86)
	at com.mlt.decoder.GeometryDecoder.decodeGeometryColumn(GeometryDecoder.java:29)
	at com.mlt.decoder.MltDecoder.decodeMlTile(MltDecoder.java:77)
	at com.mlt.tools.Encode.main(Encode.java:269)