@maplibre/mlt 1.1.9 → 1.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -45,6 +45,9 @@ export function decodeSignedConstInt32Stream(data, offset, streamMetadata) {
45
45
  export function decodeUnsignedConstInt32Stream(data, offset, streamMetadata) {
46
46
  const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
47
47
  if (values.length === 1) {
48
+ if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA) {
49
+ return decodeZigZagInt32Value(values[0]);
50
+ }
48
51
  return values[0];
49
52
  }
50
53
  return decodeUnsignedConstRleInt32(values);
@@ -1 +1 @@
1
- {"version":3,"file":"integerStreamDecoder.js","sourceRoot":"","sources":["../../src/decoding/integerStreamDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport IntWrapper from \"./intWrapper\";\nimport {\n decodeComponentwiseDeltaVec2,\n decodeComponentwiseDeltaVec2Scaled,\n decodeDeltaRleInt32,\n decodeDeltaRleInt64,\n decodeFastPfor,\n decodeUnsignedComponentwiseDeltaVec2,\n decodeUnsignedComponentwiseDeltaVec2Scaled,\n decodeUnsignedConstRleInt32,\n decodeUnsignedConstRleInt64,\n decodeUnsignedRleInt32,\n decodeUnsignedRleInt64,\n decodeUnsignedRleFloat64,\n decodeUnsignedZigZagDeltaInt32,\n decodeUnsignedZigZagDeltaInt64,\n decodeVarintInt32,\n decodeVarintInt64,\n decodeVarintFloat64,\n decodeZigZagInt32,\n decodeZigZagInt64,\n decodeZigZagFloat64,\n decodeZigZagConstRleInt32,\n decodeZigZagConstRleInt64,\n decodeZigZagDeltaInt32,\n decodeZigZagDeltaInt64,\n decodeZigZagDeltaFloat64,\n decodeZigZagSequenceRleInt32,\n decodeZigZagSequenceRleInt64,\n decodeZigZagInt32Value,\n decodeZigZagInt64Value,\n fastInverseDelta,\n inverseDelta,\n decodeRleDeltaInt32,\n decodeZigZagDeltaOfDeltaInt32,\n decodeZigZagRleDeltaInt32,\n decodeZigZagRleInt32,\n decodeZigZagRleInt64,\n decodeZigZagRleFloat64,\n} from \"./integerDecodingUtils\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport type { StreamMetadata, RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { VectorType } from \"../vector/vectorType\";\nimport type GeometryScaling from \"./geometryScaling\";\nimport { unpackNullable } from \"./unpackNullableUtils\";\n\nexport function decodeSignedInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeSignedInt32(values, streamMetadata, scalingData, nullabilityBuffer);\n}\n\nexport function decodeUnsignedInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeUnsignedInt32(values, streamMetadata, scalingData, nullabilityBuffer);\n}\n\nexport function decodeLengthStreamToOffsetBuffer(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeLengthToOffsetBuffer(values, streamMetadata);\n}\n\nfunction decodePhysicalLevelTechnique(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n switch (physicalLevelTechnique) {\n case PhysicalLevelTechnique.FAST_PFOR:\n return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n case PhysicalLevelTechnique.VARINT:\n return decodeVarintInt32(data, offset, streamMetadata.numValues);\n case PhysicalLevelTechnique.NONE: {\n const dataOffset = offset.get();\n const byteLength = streamMetadata.byteLength;\n offset.add(byteLength);\n const slice = data.subarray(dataOffset, offset.get());\n return new Uint32Array(slice);\n }\n default:\n throw new Error(`Specified physicalLevelTechnique ${physicalLevelTechnique} is not supported (yet).`);\n }\n}\n\nexport function decodeSignedConstInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n return decodeZigZagInt32Value(values[0]);\n }\n\n return decodeZigZagConstRleInt32(values);\n}\n\nexport function decodeUnsignedConstInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n return values[0];\n }\n\n return decodeUnsignedConstRleInt32(values);\n}\n\nexport function decodeSequenceInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: number, delta: number] {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeZigZagSequenceRleInt32(values);\n}\n\nexport function decodeSequenceInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: bigint, delta: bigint] {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeZigZagSequenceRleInt64(values);\n}\n\nexport function decodeSignedInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeSignedInt64(values, streamMetadata, nullabilityBuffer);\n}\n\nexport function decodeUnsignedInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigUint64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeUnsignedInt64(values, streamMetadata, nullabilityBuffer);\n}\n\nexport function decodeSignedInt64AsFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64Values(values, streamMetadata, true);\n}\n\nexport function decodeUnsignedInt64AsFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64Values(values, streamMetadata, false);\n}\n\nexport function decodeSignedConstInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n return decodeZigZagInt64Value(values[0]);\n }\n\n return decodeZigZagConstRleInt64(values);\n}\n\nexport function decodeUnsignedConstInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n return values[0];\n }\n\n return decodeUnsignedConstRleInt64(values);\n}\n\n/**\n * This method decodes integer streams.\n * Currently the encoder uses only fixed combinations of encodings.\n * For performance reasons it is also uses a fixed combination of the encodings on the decoding side.\n * The following encodings and combinations are used:\n * - Morton Delta -> always sorted so not ZigZag encoding needed\n * - Delta -> currently always in combination with ZigZag encoding\n * - Rle -> in combination with ZigZag encoding if data type is signed\n * - Delta Rle\n * - Componentwise Delta -> always ZigZag encoding is used\n */\nfunction decodeSignedInt32(\n values: Uint32Array,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n let decodedValues: Int32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeZigZagDeltaInt32(values);\n } else {\n decodedValues = decodeZigZagDeltaInt32(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeZigZagRleInt32(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n decodedValues = new Int32Array(values);\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n return decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);\n }\n decodedValues = decodeComponentwiseDeltaVec2(values);\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = decodeZigZagInt32(values);\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0);\n }\n return decodedValues;\n}\n\nfunction decodeUnsignedInt32(\n values: Uint32Array,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Uint32Array {\n let decodedValues: Uint32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const deltaValues = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeUnsignedZigZagDeltaInt32(deltaValues);\n } else {\n decodedValues = decodeUnsignedZigZagDeltaInt32(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeUnsignedRleInt32(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n decodedValues = values;\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n decodedValues = decodeUnsignedComponentwiseDeltaVec2Scaled(\n values,\n scalingData.scale,\n scalingData.min,\n scalingData.max,\n );\n } else {\n decodedValues = decodeUnsignedComponentwiseDeltaVec2(values);\n }\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = values;\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0);\n }\n return decodedValues;\n}\n\nfunction decodeSignedInt64(\n values: BigUint64Array,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n let decodedValues: BigInt64Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeZigZagDeltaInt64(values);\n } else {\n decodedValues = decodeZigZagDeltaInt64(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeZigZagRleInt64(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = decodeZigZagInt64(values);\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0n);\n }\n return decodedValues;\n}\n\nfunction decodeUnsignedInt64(\n values: BigUint64Array,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigUint64Array {\n let decodedValues: BigUint64Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const deltaValues = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeUnsignedZigZagDeltaInt64(deltaValues);\n } else {\n decodedValues = decodeUnsignedZigZagDeltaInt64(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeUnsignedRleInt64(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = values;\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0n);\n }\n return decodedValues;\n}\n\nfunction decodeFloat64Values(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaFloat64(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRleFloat64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagFloat64(values);\n }\n return values;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction decodeLengthToOffsetBuffer(values: Uint32Array, streamMetadata: StreamMetadata): Uint32Array {\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n return decodeZigZagDeltaOfDeltaInt32(values);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n return decodeRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n //TODO: use fastInverseDelta again and check what are the performance problems in zoom 14\n //fastInverseDelta(values);\n inverseDelta(values);\n const offsets = new Uint32Array(streamMetadata.numValues + 1);\n offsets[0] = 0;\n offsets.set(values, 1);\n return offsets;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const decodedValues = decodeZigZagRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n fastInverseDelta(decodedValues);\n return new Uint32Array(decodedValues);\n }\n\n throw new Error(\"Only delta encoding is supported for transforming length to offset streams yet.\");\n}\n\nexport function getVectorType(\n streamMetadata: StreamMetadata,\n sizeOrNullabilityBuffer: number | BitVector,\n data: Uint8Array,\n offset: IntWrapper,\n varintWidth: \"int32\" | \"int64\" = \"int32\",\n): VectorType {\n const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;\n if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {\n return (streamMetadata as RleEncodedStreamMetadata).runs === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n if (\n logicalLevelTechnique1 !== LogicalLevelTechnique.DELTA ||\n streamMetadata.logicalLevelTechnique2 !== LogicalLevelTechnique.RLE\n ) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n const numFeatures =\n sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n\n if (rleMetadata.numRleValues !== numFeatures) {\n return VectorType.FLAT;\n }\n // Single run is always a sequence\n if (rleMetadata.runs === 1) {\n return VectorType.SEQUENCE;\n }\n\n if (rleMetadata.runs !== 2) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n // Two runs can be a sequence if both deltas are equal to 1\n const savedOffset = offset.get();\n\n if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n if (isDeltaRleSequenceVarintWidth(data, offset, varintWidth)) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n const byteOffset = offset.get();\n const values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);\n offset.set(savedOffset);\n // Check if both deltas are encoded 1\n const zigZagOne = 2;\n if (values[2] === zigZagOne && values[3] === zigZagOne) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n}\n\nfunction isDeltaRleSequenceVarintWidth(data: Uint8Array, offset: IntWrapper, varintWidth: \"int32\" | \"int64\"): boolean {\n const peekOffset = new IntWrapper(offset.get());\n\n if (varintWidth === \"int64\") {\n const values = decodeVarintInt64(data, peekOffset, 4);\n return values[2] === 2n && values[3] === 2n;\n }\n\n const values = decodeVarintInt32(data, peekOffset, 4);\n return values[2] === 2 && values[3] === 2;\n}\n\nfunction decodeRleFloat64(\n data: Float64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): Float64Array {\n return isSigned\n ? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n"]}
1
+ {"version":3,"file":"integerStreamDecoder.js","sourceRoot":"","sources":["../../src/decoding/integerStreamDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport IntWrapper from \"./intWrapper\";\nimport {\n decodeComponentwiseDeltaVec2,\n decodeComponentwiseDeltaVec2Scaled,\n decodeDeltaRleInt32,\n decodeDeltaRleInt64,\n decodeFastPfor,\n decodeUnsignedComponentwiseDeltaVec2,\n decodeUnsignedComponentwiseDeltaVec2Scaled,\n decodeUnsignedConstRleInt32,\n decodeUnsignedConstRleInt64,\n decodeUnsignedRleInt32,\n decodeUnsignedRleInt64,\n decodeUnsignedRleFloat64,\n decodeUnsignedZigZagDeltaInt32,\n decodeUnsignedZigZagDeltaInt64,\n decodeVarintInt32,\n decodeVarintInt64,\n decodeVarintFloat64,\n decodeZigZagInt32,\n decodeZigZagInt64,\n decodeZigZagFloat64,\n decodeZigZagConstRleInt32,\n decodeZigZagConstRleInt64,\n decodeZigZagDeltaInt32,\n decodeZigZagDeltaInt64,\n decodeZigZagDeltaFloat64,\n decodeZigZagSequenceRleInt32,\n decodeZigZagSequenceRleInt64,\n decodeZigZagInt32Value,\n decodeZigZagInt64Value,\n fastInverseDelta,\n inverseDelta,\n decodeRleDeltaInt32,\n decodeZigZagDeltaOfDeltaInt32,\n decodeZigZagRleDeltaInt32,\n decodeZigZagRleInt32,\n decodeZigZagRleInt64,\n decodeZigZagRleFloat64,\n} from \"./integerDecodingUtils\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport type { StreamMetadata, RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { VectorType } from \"../vector/vectorType\";\nimport type GeometryScaling from \"./geometryScaling\";\nimport { unpackNullable } from \"./unpackNullableUtils\";\n\nexport function decodeSignedInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeSignedInt32(values, streamMetadata, scalingData, nullabilityBuffer);\n}\n\nexport function decodeUnsignedInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeUnsignedInt32(values, streamMetadata, scalingData, nullabilityBuffer);\n}\n\nexport function decodeLengthStreamToOffsetBuffer(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeLengthToOffsetBuffer(values, streamMetadata);\n}\n\nfunction decodePhysicalLevelTechnique(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n switch (physicalLevelTechnique) {\n case PhysicalLevelTechnique.FAST_PFOR:\n return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n case PhysicalLevelTechnique.VARINT:\n return decodeVarintInt32(data, offset, streamMetadata.numValues);\n case PhysicalLevelTechnique.NONE: {\n const dataOffset = offset.get();\n const byteLength = streamMetadata.byteLength;\n offset.add(byteLength);\n const slice = data.subarray(dataOffset, offset.get());\n return new Uint32Array(slice);\n }\n default:\n throw new Error(`Specified physicalLevelTechnique ${physicalLevelTechnique} is not supported (yet).`);\n }\n}\n\nexport function decodeSignedConstInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n return decodeZigZagInt32Value(values[0]);\n }\n\n return decodeZigZagConstRleInt32(values);\n}\n\nexport function decodeUnsignedConstInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA) {\n return decodeZigZagInt32Value(values[0]);\n }\n return values[0];\n }\n\n return decodeUnsignedConstRleInt32(values);\n}\n\nexport function decodeSequenceInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: number, delta: number] {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeZigZagSequenceRleInt32(values);\n}\n\nexport function decodeSequenceInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: bigint, delta: bigint] {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeZigZagSequenceRleInt64(values);\n}\n\nexport function decodeSignedInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeSignedInt64(values, streamMetadata, nullabilityBuffer);\n}\n\nexport function decodeUnsignedInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigUint64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeUnsignedInt64(values, streamMetadata, nullabilityBuffer);\n}\n\nexport function decodeSignedInt64AsFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64Values(values, streamMetadata, true);\n}\n\nexport function decodeUnsignedInt64AsFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64Values(values, streamMetadata, false);\n}\n\nexport function decodeSignedConstInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n return decodeZigZagInt64Value(values[0]);\n }\n\n return decodeZigZagConstRleInt64(values);\n}\n\nexport function decodeUnsignedConstInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n return values[0];\n }\n\n return decodeUnsignedConstRleInt64(values);\n}\n\n/**\n * This method decodes integer streams.\n * Currently the encoder uses only fixed combinations of encodings.\n * For performance reasons it is also uses a fixed combination of the encodings on the decoding side.\n * The following encodings and combinations are used:\n * - Morton Delta -> always sorted so not ZigZag encoding needed\n * - Delta -> currently always in combination with ZigZag encoding\n * - Rle -> in combination with ZigZag encoding if data type is signed\n * - Delta Rle\n * - Componentwise Delta -> always ZigZag encoding is used\n */\nfunction decodeSignedInt32(\n values: Uint32Array,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n let decodedValues: Int32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeZigZagDeltaInt32(values);\n } else {\n decodedValues = decodeZigZagDeltaInt32(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeZigZagRleInt32(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n decodedValues = new Int32Array(values);\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n return decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);\n }\n decodedValues = decodeComponentwiseDeltaVec2(values);\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = decodeZigZagInt32(values);\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0);\n }\n return decodedValues;\n}\n\nfunction decodeUnsignedInt32(\n values: Uint32Array,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Uint32Array {\n let decodedValues: Uint32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const deltaValues = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeUnsignedZigZagDeltaInt32(deltaValues);\n } else {\n decodedValues = decodeUnsignedZigZagDeltaInt32(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeUnsignedRleInt32(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n decodedValues = values;\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n decodedValues = decodeUnsignedComponentwiseDeltaVec2Scaled(\n values,\n scalingData.scale,\n scalingData.min,\n scalingData.max,\n );\n } else {\n decodedValues = decodeUnsignedComponentwiseDeltaVec2(values);\n }\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = values;\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0);\n }\n return decodedValues;\n}\n\nfunction decodeSignedInt64(\n values: BigUint64Array,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n let decodedValues: BigInt64Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeZigZagDeltaInt64(values);\n } else {\n decodedValues = decodeZigZagDeltaInt64(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeZigZagRleInt64(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = decodeZigZagInt64(values);\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0n);\n }\n return decodedValues;\n}\n\nfunction decodeUnsignedInt64(\n values: BigUint64Array,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigUint64Array {\n let decodedValues: BigUint64Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const deltaValues = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeUnsignedZigZagDeltaInt64(deltaValues);\n } else {\n decodedValues = decodeUnsignedZigZagDeltaInt64(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeUnsignedRleInt64(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = values;\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0n);\n }\n return decodedValues;\n}\n\nfunction decodeFloat64Values(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaFloat64(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRleFloat64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagFloat64(values);\n }\n return values;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction decodeLengthToOffsetBuffer(values: Uint32Array, streamMetadata: StreamMetadata): Uint32Array {\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n return decodeZigZagDeltaOfDeltaInt32(values);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n return decodeRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n //TODO: use fastInverseDelta again and check what are the performance problems in zoom 14\n //fastInverseDelta(values);\n inverseDelta(values);\n const offsets = new Uint32Array(streamMetadata.numValues + 1);\n offsets[0] = 0;\n offsets.set(values, 1);\n return offsets;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const decodedValues = decodeZigZagRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n fastInverseDelta(decodedValues);\n return new Uint32Array(decodedValues);\n }\n\n throw new Error(\"Only delta encoding is supported for transforming length to offset streams yet.\");\n}\n\nexport function getVectorType(\n streamMetadata: StreamMetadata,\n sizeOrNullabilityBuffer: number | BitVector,\n data: Uint8Array,\n offset: IntWrapper,\n varintWidth: \"int32\" | \"int64\" = \"int32\",\n): VectorType {\n const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;\n if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {\n return (streamMetadata as RleEncodedStreamMetadata).runs === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n if (\n logicalLevelTechnique1 !== LogicalLevelTechnique.DELTA ||\n streamMetadata.logicalLevelTechnique2 !== LogicalLevelTechnique.RLE\n ) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n const numFeatures =\n sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n\n if (rleMetadata.numRleValues !== numFeatures) {\n return VectorType.FLAT;\n }\n // Single run is always a sequence\n if (rleMetadata.runs === 1) {\n return VectorType.SEQUENCE;\n }\n\n if (rleMetadata.runs !== 2) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n // Two runs can be a sequence if both deltas are equal to 1\n const savedOffset = offset.get();\n\n if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n if (isDeltaRleSequenceVarintWidth(data, offset, varintWidth)) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n const byteOffset = offset.get();\n const values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);\n offset.set(savedOffset);\n // Check if both deltas are encoded 1\n const zigZagOne = 2;\n if (values[2] === zigZagOne && values[3] === zigZagOne) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n}\n\nfunction isDeltaRleSequenceVarintWidth(data: Uint8Array, offset: IntWrapper, varintWidth: \"int32\" | \"int64\"): boolean {\n const peekOffset = new IntWrapper(offset.get());\n\n if (varintWidth === \"int64\") {\n const values = decodeVarintInt64(data, peekOffset, 4);\n return values[2] === 2n && values[3] === 2n;\n }\n\n const values = decodeVarintInt32(data, peekOffset, 4);\n return values[2] === 2 && values[3] === 2;\n}\n\nfunction decodeRleFloat64(\n data: Float64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): Float64Array {\n return isSigned\n ? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n"]}
@@ -201,7 +201,7 @@ export function convertGeometryVector(geometryVector) {
201
201
  }
202
202
  break;
203
203
  default:
204
- throw new Error("The specified geometry type is currently not supported.");
204
+ throw new Error(`The specified geometry type (${geometryType}) is currently not supported.`);
205
205
  }
206
206
  }
207
207
  return geometries;
@@ -1 +1 @@
1
- {"version":3,"file":"geometryVectorConverter.js","sourceRoot":"","sources":["../../../src/vector/geometry/geometryVectorConverter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GeometryVector, MortonSettings, CoordinatesArray } from \"./geometryVector\";\nimport { decodeZOrderCurve } from \"./zOrderCurve\";\nimport { GEOMETRY_TYPE } from \"./geometryType\";\nimport { VertexBufferType } from \"./vertexBufferType\";\nimport Point from \"@mapbox/point-geometry\";\n\nexport function convertGeometryVector(geometryVector: GeometryVector): CoordinatesArray[] {\n const geometries: CoordinatesArray[] = new Array(geometryVector.numGeometries);\n let partOffsetCounter = 1;\n let ringOffsetsCounter = 1;\n let geometryOffsetsCounter = 1;\n let geometryCounter = 0;\n let vertexBufferOffset = 0;\n let vertexOffsetsOffset = 0;\n\n const mortonSettings = geometryVector.mortonSettings;\n const topologyVector = geometryVector.topologyVector;\n const geometryOffsets = topologyVector.geometryOffsets;\n const partOffsets = topologyVector.partOffsets;\n const ringOffsets = topologyVector.ringOffsets;\n const vertexOffsets = geometryVector.vertexOffsets;\n const nonOffset = !vertexOffsets || vertexOffsets.length === 0;\n\n const containsPolygon = geometryVector.containsPolygonGeometry();\n const vertexBuffer = geometryVector.vertexBuffer;\n\n for (let i = 0; i < geometryVector.numGeometries; i++) {\n const geometryType = geometryVector.geometryType(i);\n switch (geometryType) {\n case GEOMETRY_TYPE.POINT:\n {\n let x: number;\n let y: number;\n if (nonOffset) {\n x = vertexBuffer[vertexBufferOffset++];\n y = vertexBuffer[vertexBufferOffset++];\n } else if (geometryVector.vertexBufferType === VertexBufferType.MORTON) {\n const offset = vertexOffsets[vertexOffsetsOffset++];\n const mortonCode = vertexBuffer[offset];\n const vertex = decodeZOrderCurve(\n mortonCode,\n mortonSettings.numBits,\n mortonSettings.coordinateShift,\n );\n x = vertex.x;\n y = vertex.y;\n } else {\n const offset = vertexOffsets[vertexOffsetsOffset++] * 2;\n x = vertexBuffer[offset];\n y = vertexBuffer[offset + 1];\n }\n geometries[geometryCounter++] = [[new Point(x, y)]];\n if (geometryOffsets) geometryOffsetsCounter++;\n if (partOffsets) partOffsetCounter++;\n if (ringOffsets) ringOffsetsCounter++;\n }\n break;\n case GEOMETRY_TYPE.MULTIPOINT:\n {\n const numPoints =\n geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];\n geometryOffsetsCounter++;\n const points: Point[] = new Array(numPoints);\n if (nonOffset) {\n for (let j = 0; j < numPoints; j++) {\n const x = vertexBuffer[vertexBufferOffset++];\n const y = vertexBuffer[vertexBufferOffset++];\n points[j] = new Point(x, y);\n }\n } else {\n for (let j = 0; j < numPoints; j++) {\n const offset = vertexOffsets[vertexOffsetsOffset++] * 2;\n const x = vertexBuffer[offset];\n const y = vertexBuffer[offset + 1];\n points[j] = new Point(x, y);\n }\n }\n geometries[geometryCounter++] = points.map((point) => [point]);\n // MULTIPOINT must increment offset counters like POINT does\n partOffsetCounter += numPoints;\n ringOffsetsCounter += numPoints;\n }\n break;\n case GEOMETRY_TYPE.LINESTRING:\n {\n let numVertices: number;\n if (containsPolygon) {\n numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n } else {\n numVertices = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];\n }\n partOffsetCounter++;\n\n let vertices: Point[];\n if (nonOffset) {\n vertices = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, false);\n vertexBufferOffset += numVertices * 2;\n } else {\n vertices = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n false,\n mortonSettings,\n );\n vertexOffsetsOffset += numVertices;\n }\n\n geometries[geometryCounter++] = [vertices];\n\n if (geometryOffsets) geometryOffsetsCounter++;\n }\n break;\n case GEOMETRY_TYPE.POLYGON:\n {\n const numRings = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];\n partOffsetCounter++;\n const rings: CoordinatesArray = new Array(numRings - 1);\n let shell: Point[];\n let numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n\n if (nonOffset) {\n shell = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, true);\n vertexBufferOffset += numVertices * 2;\n for (let j = 0; j < rings.length; j++) {\n numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n rings[j] = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, true);\n vertexBufferOffset += numVertices * 2;\n }\n } else {\n shell = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n true,\n mortonSettings,\n );\n vertexOffsetsOffset += numVertices;\n for (let j = 0; j < rings.length; j++) {\n numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n rings[j] = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n true,\n mortonSettings,\n );\n vertexOffsetsOffset += numVertices;\n }\n }\n geometries[geometryCounter++] = [shell].concat(rings);\n if (geometryOffsets) geometryOffsetsCounter++;\n }\n break;\n case GEOMETRY_TYPE.MULTILINESTRING:\n {\n const numLineStrings =\n geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];\n geometryOffsetsCounter++;\n const lineStrings: CoordinatesArray = new Array(numLineStrings);\n for (let j = 0; j < numLineStrings; j++) {\n let numVertices: number;\n if (containsPolygon) {\n numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n } else {\n numVertices = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];\n }\n partOffsetCounter++;\n if (nonOffset) {\n lineStrings[j] = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, false);\n vertexBufferOffset += numVertices * 2;\n } else {\n const vertices = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n false,\n mortonSettings,\n );\n lineStrings[j] = vertices;\n vertexOffsetsOffset += numVertices;\n }\n }\n geometries[geometryCounter++] = lineStrings;\n }\n break;\n case GEOMETRY_TYPE.MULTIPOLYGON:\n {\n const numPolygons =\n geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];\n geometryOffsetsCounter++;\n const polygons: CoordinatesArray[] = new Array(numPolygons);\n for (let j = 0; j < numPolygons; j++) {\n const numRings = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];\n partOffsetCounter++;\n let shell: Point[];\n const rings: CoordinatesArray = new Array(numRings - 1);\n const numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n if (nonOffset) {\n shell = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, true);\n vertexBufferOffset += numVertices * 2;\n } else {\n shell = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n true,\n mortonSettings,\n );\n vertexOffsetsOffset += numVertices;\n }\n for (let k = 0; k < rings.length; k++) {\n const numRingVertices =\n ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n if (nonOffset) {\n rings[k] = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numRingVertices, true);\n vertexBufferOffset += numRingVertices * 2;\n } else {\n rings[k] = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numRingVertices,\n true,\n mortonSettings,\n );\n vertexOffsetsOffset += numRingVertices;\n }\n }\n polygons[j] = [shell].concat(rings);\n }\n geometries[geometryCounter++] = polygons.flat();\n }\n break;\n default:\n throw new Error(\"The specified geometry type is currently not supported.\");\n }\n }\n\n return geometries;\n}\n\nfunction decodeDictionaryEncodedLineStringOrRing(\n vertexBufferType: VertexBufferType,\n vertexBuffer: Int32Array | Uint32Array,\n vertexOffsets: Uint32Array,\n vertexOffset: number,\n numVertices: number,\n closeLineString: boolean,\n mortonSettings: MortonSettings,\n): Point[] {\n if (vertexBufferType === VertexBufferType.MORTON) {\n return decodeMortonDictionaryEncodedLineString(\n vertexBuffer,\n vertexOffsets,\n vertexOffset,\n numVertices,\n closeLineString,\n mortonSettings,\n );\n } else {\n return decodeDictionaryEncodedLineString(\n vertexBuffer,\n vertexOffsets,\n vertexOffset,\n numVertices,\n closeLineString,\n );\n }\n}\n\nfunction getLineStringOrRing(\n vertexBuffer: Int32Array | Uint32Array,\n startIndex: number,\n numVertices: number,\n closeLineString: boolean,\n): Point[] {\n const vertices: Point[] = new Array(closeLineString ? numVertices + 1 : numVertices);\n for (let i = 0; i < numVertices * 2; i += 2) {\n const x = vertexBuffer[startIndex + i];\n const y = vertexBuffer[startIndex + i + 1];\n vertices[i / 2] = new Point(x, y);\n }\n\n if (closeLineString) {\n vertices[vertices.length - 1] = vertices[0];\n }\n return vertices;\n}\n\nfunction decodeDictionaryEncodedLineString(\n vertexBuffer: Int32Array | Uint32Array,\n vertexOffsets: Uint32Array,\n vertexOffset: number,\n numVertices: number,\n closeLineString: boolean,\n): Point[] {\n const vertices: Point[] = new Array(closeLineString ? numVertices + 1 : numVertices);\n for (let i = 0; i < numVertices * 2; i += 2) {\n const offset = vertexOffsets[vertexOffset + i / 2] * 2;\n const x = vertexBuffer[offset];\n const y = vertexBuffer[offset + 1];\n vertices[i / 2] = new Point(x, y);\n }\n\n if (closeLineString) {\n vertices[vertices.length - 1] = vertices[0];\n }\n return vertices;\n}\n\nfunction decodeMortonDictionaryEncodedLineString(\n vertexBuffer: Int32Array | Uint32Array,\n vertexOffsets: Uint32Array,\n vertexOffset: number,\n numVertices: number,\n closeLineString: boolean,\n mortonSettings: MortonSettings,\n): Point[] {\n const vertices: Point[] = new Array(closeLineString ? numVertices + 1 : numVertices);\n for (let i = 0; i < numVertices; i++) {\n const offset = vertexOffsets[vertexOffset + i];\n const mortonEncodedVertex = vertexBuffer[offset];\n const vertex = decodeZOrderCurve(mortonEncodedVertex, mortonSettings.numBits, mortonSettings.coordinateShift);\n vertices[i] = new Point(vertex.x, vertex.y);\n }\n if (closeLineString) {\n vertices[vertices.length - 1] = vertices[0];\n }\n\n return vertices;\n}\n"]}
1
+ {"version":3,"file":"geometryVectorConverter.js","sourceRoot":"","sources":["../../../src/vector/geometry/geometryVectorConverter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GeometryVector, MortonSettings, CoordinatesArray } from \"./geometryVector\";\nimport { decodeZOrderCurve } from \"./zOrderCurve\";\nimport { GEOMETRY_TYPE } from \"./geometryType\";\nimport { VertexBufferType } from \"./vertexBufferType\";\nimport Point from \"@mapbox/point-geometry\";\n\nexport function convertGeometryVector(geometryVector: GeometryVector): CoordinatesArray[] {\n const geometries: CoordinatesArray[] = new Array(geometryVector.numGeometries);\n let partOffsetCounter = 1;\n let ringOffsetsCounter = 1;\n let geometryOffsetsCounter = 1;\n let geometryCounter = 0;\n let vertexBufferOffset = 0;\n let vertexOffsetsOffset = 0;\n\n const mortonSettings = geometryVector.mortonSettings;\n const topologyVector = geometryVector.topologyVector;\n const geometryOffsets = topologyVector.geometryOffsets;\n const partOffsets = topologyVector.partOffsets;\n const ringOffsets = topologyVector.ringOffsets;\n const vertexOffsets = geometryVector.vertexOffsets;\n const nonOffset = !vertexOffsets || vertexOffsets.length === 0;\n\n const containsPolygon = geometryVector.containsPolygonGeometry();\n const vertexBuffer = geometryVector.vertexBuffer;\n\n for (let i = 0; i < geometryVector.numGeometries; i++) {\n const geometryType = geometryVector.geometryType(i);\n switch (geometryType) {\n case GEOMETRY_TYPE.POINT:\n {\n let x: number;\n let y: number;\n if (nonOffset) {\n x = vertexBuffer[vertexBufferOffset++];\n y = vertexBuffer[vertexBufferOffset++];\n } else if (geometryVector.vertexBufferType === VertexBufferType.MORTON) {\n const offset = vertexOffsets[vertexOffsetsOffset++];\n const mortonCode = vertexBuffer[offset];\n const vertex = decodeZOrderCurve(\n mortonCode,\n mortonSettings.numBits,\n mortonSettings.coordinateShift,\n );\n x = vertex.x;\n y = vertex.y;\n } else {\n const offset = vertexOffsets[vertexOffsetsOffset++] * 2;\n x = vertexBuffer[offset];\n y = vertexBuffer[offset + 1];\n }\n geometries[geometryCounter++] = [[new Point(x, y)]];\n if (geometryOffsets) geometryOffsetsCounter++;\n if (partOffsets) partOffsetCounter++;\n if (ringOffsets) ringOffsetsCounter++;\n }\n break;\n case GEOMETRY_TYPE.MULTIPOINT:\n {\n const numPoints =\n geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];\n geometryOffsetsCounter++;\n const points: Point[] = new Array(numPoints);\n if (nonOffset) {\n for (let j = 0; j < numPoints; j++) {\n const x = vertexBuffer[vertexBufferOffset++];\n const y = vertexBuffer[vertexBufferOffset++];\n points[j] = new Point(x, y);\n }\n } else {\n for (let j = 0; j < numPoints; j++) {\n const offset = vertexOffsets[vertexOffsetsOffset++] * 2;\n const x = vertexBuffer[offset];\n const y = vertexBuffer[offset + 1];\n points[j] = new Point(x, y);\n }\n }\n geometries[geometryCounter++] = points.map((point) => [point]);\n // MULTIPOINT must increment offset counters like POINT does\n partOffsetCounter += numPoints;\n ringOffsetsCounter += numPoints;\n }\n break;\n case GEOMETRY_TYPE.LINESTRING:\n {\n let numVertices: number;\n if (containsPolygon) {\n numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n } else {\n numVertices = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];\n }\n partOffsetCounter++;\n\n let vertices: Point[];\n if (nonOffset) {\n vertices = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, false);\n vertexBufferOffset += numVertices * 2;\n } else {\n vertices = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n false,\n mortonSettings,\n );\n vertexOffsetsOffset += numVertices;\n }\n\n geometries[geometryCounter++] = [vertices];\n\n if (geometryOffsets) geometryOffsetsCounter++;\n }\n break;\n case GEOMETRY_TYPE.POLYGON:\n {\n const numRings = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];\n partOffsetCounter++;\n const rings: CoordinatesArray = new Array(numRings - 1);\n let shell: Point[];\n let numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n\n if (nonOffset) {\n shell = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, true);\n vertexBufferOffset += numVertices * 2;\n for (let j = 0; j < rings.length; j++) {\n numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n rings[j] = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, true);\n vertexBufferOffset += numVertices * 2;\n }\n } else {\n shell = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n true,\n mortonSettings,\n );\n vertexOffsetsOffset += numVertices;\n for (let j = 0; j < rings.length; j++) {\n numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n rings[j] = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n true,\n mortonSettings,\n );\n vertexOffsetsOffset += numVertices;\n }\n }\n geometries[geometryCounter++] = [shell].concat(rings);\n if (geometryOffsets) geometryOffsetsCounter++;\n }\n break;\n case GEOMETRY_TYPE.MULTILINESTRING:\n {\n const numLineStrings =\n geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];\n geometryOffsetsCounter++;\n const lineStrings: CoordinatesArray = new Array(numLineStrings);\n for (let j = 0; j < numLineStrings; j++) {\n let numVertices: number;\n if (containsPolygon) {\n numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n } else {\n numVertices = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];\n }\n partOffsetCounter++;\n if (nonOffset) {\n lineStrings[j] = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, false);\n vertexBufferOffset += numVertices * 2;\n } else {\n const vertices = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n false,\n mortonSettings,\n );\n lineStrings[j] = vertices;\n vertexOffsetsOffset += numVertices;\n }\n }\n geometries[geometryCounter++] = lineStrings;\n }\n break;\n case GEOMETRY_TYPE.MULTIPOLYGON:\n {\n const numPolygons =\n geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];\n geometryOffsetsCounter++;\n const polygons: CoordinatesArray[] = new Array(numPolygons);\n for (let j = 0; j < numPolygons; j++) {\n const numRings = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];\n partOffsetCounter++;\n let shell: Point[];\n const rings: CoordinatesArray = new Array(numRings - 1);\n const numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n if (nonOffset) {\n shell = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, true);\n vertexBufferOffset += numVertices * 2;\n } else {\n shell = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numVertices,\n true,\n mortonSettings,\n );\n vertexOffsetsOffset += numVertices;\n }\n for (let k = 0; k < rings.length; k++) {\n const numRingVertices =\n ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];\n ringOffsetsCounter++;\n if (nonOffset) {\n rings[k] = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numRingVertices, true);\n vertexBufferOffset += numRingVertices * 2;\n } else {\n rings[k] = decodeDictionaryEncodedLineStringOrRing(\n geometryVector.vertexBufferType,\n vertexBuffer,\n vertexOffsets,\n vertexOffsetsOffset,\n numRingVertices,\n true,\n mortonSettings,\n );\n vertexOffsetsOffset += numRingVertices;\n }\n }\n polygons[j] = [shell].concat(rings);\n }\n geometries[geometryCounter++] = polygons.flat();\n }\n break;\n default:\n throw new Error(`The specified geometry type (${geometryType}) is currently not supported.`);\n }\n }\n\n return geometries;\n}\n\nfunction decodeDictionaryEncodedLineStringOrRing(\n vertexBufferType: VertexBufferType,\n vertexBuffer: Int32Array | Uint32Array,\n vertexOffsets: Uint32Array,\n vertexOffset: number,\n numVertices: number,\n closeLineString: boolean,\n mortonSettings: MortonSettings,\n): Point[] {\n if (vertexBufferType === VertexBufferType.MORTON) {\n return decodeMortonDictionaryEncodedLineString(\n vertexBuffer,\n vertexOffsets,\n vertexOffset,\n numVertices,\n closeLineString,\n mortonSettings,\n );\n } else {\n return decodeDictionaryEncodedLineString(\n vertexBuffer,\n vertexOffsets,\n vertexOffset,\n numVertices,\n closeLineString,\n );\n }\n}\n\nfunction getLineStringOrRing(\n vertexBuffer: Int32Array | Uint32Array,\n startIndex: number,\n numVertices: number,\n closeLineString: boolean,\n): Point[] {\n const vertices: Point[] = new Array(closeLineString ? numVertices + 1 : numVertices);\n for (let i = 0; i < numVertices * 2; i += 2) {\n const x = vertexBuffer[startIndex + i];\n const y = vertexBuffer[startIndex + i + 1];\n vertices[i / 2] = new Point(x, y);\n }\n\n if (closeLineString) {\n vertices[vertices.length - 1] = vertices[0];\n }\n return vertices;\n}\n\nfunction decodeDictionaryEncodedLineString(\n vertexBuffer: Int32Array | Uint32Array,\n vertexOffsets: Uint32Array,\n vertexOffset: number,\n numVertices: number,\n closeLineString: boolean,\n): Point[] {\n const vertices: Point[] = new Array(closeLineString ? numVertices + 1 : numVertices);\n for (let i = 0; i < numVertices * 2; i += 2) {\n const offset = vertexOffsets[vertexOffset + i / 2] * 2;\n const x = vertexBuffer[offset];\n const y = vertexBuffer[offset + 1];\n vertices[i / 2] = new Point(x, y);\n }\n\n if (closeLineString) {\n vertices[vertices.length - 1] = vertices[0];\n }\n return vertices;\n}\n\nfunction decodeMortonDictionaryEncodedLineString(\n vertexBuffer: Int32Array | Uint32Array,\n vertexOffsets: Uint32Array,\n vertexOffset: number,\n numVertices: number,\n closeLineString: boolean,\n mortonSettings: MortonSettings,\n): Point[] {\n const vertices: Point[] = new Array(closeLineString ? numVertices + 1 : numVertices);\n for (let i = 0; i < numVertices; i++) {\n const offset = vertexOffsets[vertexOffset + i];\n const mortonEncodedVertex = vertexBuffer[offset];\n const vertex = decodeZOrderCurve(mortonEncodedVertex, mortonSettings.numBits, mortonSettings.coordinateShift);\n vertices[i] = new Point(vertex.x, vertex.y);\n }\n if (closeLineString) {\n vertices[vertices.length - 1] = vertices[0];\n }\n\n return vertices;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maplibre/mlt",
3
- "version": "1.1.9",
3
+ "version": "1.1.10",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [