@maplibre/mlt 1.1.5 → 1.1.7

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.
Files changed (173) hide show
  1. package/dist/decoding/bigEndianDecode.d.ts +13 -0
  2. package/dist/decoding/bigEndianDecode.js +50 -0
  3. package/dist/decoding/bigEndianDecode.js.map +1 -0
  4. package/dist/decoding/decodingTestUtils.d.ts +1 -1
  5. package/dist/decoding/decodingTestUtils.js.map +1 -1
  6. package/dist/decoding/decodingUtils.js +4 -2
  7. package/dist/decoding/decodingUtils.js.map +1 -1
  8. package/dist/decoding/fastPforDecoder.d.ts +48 -0
  9. package/dist/decoding/fastPforDecoder.js +482 -0
  10. package/dist/decoding/fastPforDecoder.js.map +1 -0
  11. package/dist/decoding/fastPforShared.d.ts +9 -0
  12. package/dist/decoding/fastPforShared.js +29 -0
  13. package/dist/decoding/fastPforShared.js.map +1 -0
  14. package/dist/decoding/fastPforUnpack.d.ts +23 -0
  15. package/dist/decoding/fastPforUnpack.js +910 -0
  16. package/dist/decoding/fastPforUnpack.js.map +1 -0
  17. package/dist/decoding/geometryDecoder.d.ts +2 -2
  18. package/dist/decoding/geometryDecoder.js +11 -8
  19. package/dist/decoding/geometryDecoder.js.map +1 -1
  20. package/dist/decoding/integerDecodingUtils.d.ts +14 -10
  21. package/dist/decoding/integerDecodingUtils.js +44 -22
  22. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  23. package/dist/decoding/integerStreamDecoder.d.ts +1 -1
  24. package/dist/decoding/integerStreamDecoder.js +13 -6
  25. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  26. package/dist/decoding/propertyDecoder.js +10 -14
  27. package/dist/decoding/propertyDecoder.js.map +1 -1
  28. package/dist/decoding/stringDecoder.js +2 -11
  29. package/dist/decoding/stringDecoder.js.map +1 -1
  30. package/dist/encoding/bigEndianEncode.d.ts +7 -0
  31. package/dist/encoding/bigEndianEncode.js +16 -0
  32. package/dist/encoding/bigEndianEncode.js.map +1 -0
  33. package/dist/encoding/constGeometryVectorEncoder.d.ts +19 -0
  34. package/dist/encoding/constGeometryVectorEncoder.js +248 -0
  35. package/dist/encoding/constGeometryVectorEncoder.js.map +1 -0
  36. package/dist/encoding/encodingUtils.d.ts +1 -1
  37. package/dist/encoding/encodingUtils.js +2 -2
  38. package/dist/encoding/encodingUtils.js.map +1 -1
  39. package/dist/encoding/fastPforEncoder.d.ts +19 -0
  40. package/dist/encoding/fastPforEncoder.js +310 -0
  41. package/dist/encoding/fastPforEncoder.js.map +1 -0
  42. package/dist/encoding/integerEncodingUtils.d.ts +7 -7
  43. package/dist/encoding/integerEncodingUtils.js +25 -17
  44. package/dist/encoding/integerEncodingUtils.js.map +1 -1
  45. package/dist/encoding/integerStreamEncoder.d.ts +1 -1
  46. package/dist/encoding/integerStreamEncoder.js +5 -5
  47. package/dist/encoding/integerStreamEncoder.js.map +1 -1
  48. package/dist/encoding/packNullableUtils.d.ts +1 -1
  49. package/dist/encoding/packNullableUtils.js.map +1 -1
  50. package/dist/encoding/propertyEncoder.d.ts +1 -1
  51. package/dist/encoding/propertyEncoder.js +8 -8
  52. package/dist/encoding/propertyEncoder.js.map +1 -1
  53. package/dist/encoding/stringEncoder.js +3 -3
  54. package/dist/encoding/stringEncoder.js.map +1 -1
  55. package/dist/encoding/zOrderCurveEncoder.js +1 -1
  56. package/dist/encoding/zOrderCurveEncoder.js.map +1 -1
  57. package/dist/metadata/tile/logicalStreamType.d.ts +3 -3
  58. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  59. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +1 -1
  60. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  61. package/dist/metadata/tileset/typeMap.d.ts +10 -2
  62. package/dist/metadata/tileset/typeMap.js +25 -15
  63. package/dist/metadata/tileset/typeMap.js.map +1 -1
  64. package/dist/mltDecoder.js +29 -26
  65. package/dist/mltDecoder.js.map +1 -1
  66. package/dist/mltMetadata.js.map +1 -1
  67. package/dist/vector/constant/intConstVector.d.ts +1 -1
  68. package/dist/vector/constant/intConstVector.js +1 -1
  69. package/dist/vector/constant/intConstVector.js.map +1 -1
  70. package/dist/vector/constant/longConstVector.d.ts +1 -1
  71. package/dist/vector/constant/longConstVector.js +1 -1
  72. package/dist/vector/constant/longConstVector.js.map +1 -1
  73. package/dist/vector/dictionary/stringDictionaryVector.d.ts +0 -1
  74. package/dist/vector/dictionary/stringDictionaryVector.js +0 -2
  75. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  76. package/dist/vector/featureTable.d.ts +4 -5
  77. package/dist/vector/featureTable.js +2 -29
  78. package/dist/vector/featureTable.js.map +1 -1
  79. package/dist/vector/filter/flatSelectionVector.d.ts +1 -1
  80. package/dist/vector/filter/flatSelectionVector.js.map +1 -1
  81. package/dist/vector/filter/selectionVectorUtils.d.ts +1 -1
  82. package/dist/vector/filter/selectionVectorUtils.js.map +1 -1
  83. package/dist/vector/filter/sequenceSelectionVector.d.ts +1 -1
  84. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
  85. package/dist/vector/flat/stringFlatVector.d.ts +0 -1
  86. package/dist/vector/flat/stringFlatVector.js +0 -2
  87. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  88. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +0 -2
  89. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -36
  90. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  91. package/dist/vector/geometry/constGeometryVector.d.ts +2 -2
  92. package/dist/vector/geometry/constGeometryVector.js +1 -1
  93. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  94. package/dist/vector/geometry/constGpuVector.d.ts +2 -2
  95. package/dist/vector/geometry/constGpuVector.js +1 -1
  96. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  97. package/dist/vector/geometry/flatGeometryVector.d.ts +1 -1
  98. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  99. package/dist/vector/geometry/flatGpuVector.d.ts +1 -1
  100. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  101. package/dist/vector/geometry/geometryType.js.map +1 -1
  102. package/dist/vector/geometry/geometryVector.d.ts +4 -5
  103. package/dist/vector/geometry/geometryVector.js +0 -8
  104. package/dist/vector/geometry/geometryVector.js.map +1 -1
  105. package/dist/vector/geometry/geometryVectorConverter.d.ts +1 -1
  106. package/dist/vector/geometry/geometryVectorConverter.js +167 -211
  107. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  108. package/dist/vector/geometry/gpuVector.d.ts +2 -2
  109. package/dist/vector/geometry/gpuVector.js.map +1 -1
  110. package/dist/vector/geometry/topologyVector.d.ts +5 -9
  111. package/dist/vector/geometry/topologyVector.js +1 -19
  112. package/dist/vector/geometry/topologyVector.js.map +1 -1
  113. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  114. package/dist/vector/intVector.d.ts +7 -7
  115. package/dist/vector/intVector.js.map +1 -1
  116. package/dist/vector/vector.js +1 -1
  117. package/dist/vector/vector.js.map +1 -1
  118. package/dist/vector/vectorType.js.map +1 -1
  119. package/package.json +9 -10
  120. package/dist/decoding/decodingUtils.spec.d.ts +0 -1
  121. package/dist/decoding/decodingUtils.spec.js +0 -141
  122. package/dist/decoding/decodingUtils.spec.js.map +0 -1
  123. package/dist/decoding/fsstDecoder.spec.d.ts +0 -1
  124. package/dist/decoding/fsstDecoder.spec.js +0 -57
  125. package/dist/decoding/fsstDecoder.spec.js.map +0 -1
  126. package/dist/decoding/integerDecodingUtils.spec.d.ts +0 -1
  127. package/dist/decoding/integerDecodingUtils.spec.js +0 -300
  128. package/dist/decoding/integerDecodingUtils.spec.js.map +0 -1
  129. package/dist/decoding/integerStreamDecoder.spec.d.ts +0 -1
  130. package/dist/decoding/integerStreamDecoder.spec.js +0 -402
  131. package/dist/decoding/integerStreamDecoder.spec.js.map +0 -1
  132. package/dist/decoding/propertyDecoder.spec.d.ts +0 -1
  133. package/dist/decoding/propertyDecoder.spec.js +0 -448
  134. package/dist/decoding/propertyDecoder.spec.js.map +0 -1
  135. package/dist/decoding/stringDecoder.spec.d.ts +0 -1
  136. package/dist/decoding/stringDecoder.spec.js +0 -387
  137. package/dist/decoding/stringDecoder.spec.js.map +0 -1
  138. package/dist/decoding/unpackNullableUtils.spec.d.ts +0 -1
  139. package/dist/decoding/unpackNullableUtils.spec.js +0 -71
  140. package/dist/decoding/unpackNullableUtils.spec.js.map +0 -1
  141. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.d.ts +0 -1
  142. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js +0 -142
  143. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js.map +0 -1
  144. package/dist/mltDecoder.spec.d.ts +0 -1
  145. package/dist/mltDecoder.spec.js +0 -152
  146. package/dist/mltDecoder.spec.js.map +0 -1
  147. package/dist/vector/filter/flatSelectionVector.spec.d.ts +0 -1
  148. package/dist/vector/filter/flatSelectionVector.spec.js +0 -51
  149. package/dist/vector/filter/flatSelectionVector.spec.js.map +0 -1
  150. package/dist/vector/filter/selectionVectorUtil.spec.d.ts +0 -1
  151. package/dist/vector/filter/selectionVectorUtil.spec.js +0 -154
  152. package/dist/vector/filter/selectionVectorUtil.spec.js.map +0 -1
  153. package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +0 -1
  154. package/dist/vector/filter/sequenceSelectionVector.spec.js +0 -115
  155. package/dist/vector/filter/sequenceSelectionVector.spec.js.map +0 -1
  156. package/dist/vector/flat/floatFlatVector.spec.d.ts +0 -1
  157. package/dist/vector/flat/floatFlatVector.spec.js +0 -14
  158. package/dist/vector/flat/floatFlatVector.spec.js.map +0 -1
  159. package/dist/vector/flat/intFlatVector.spec.d.ts +0 -1
  160. package/dist/vector/flat/intFlatVector.spec.js +0 -15
  161. package/dist/vector/flat/intFlatVector.spec.js.map +0 -1
  162. package/dist/vector/flat/longFlatVector.spec.d.ts +0 -1
  163. package/dist/vector/flat/longFlatVector.spec.js +0 -14
  164. package/dist/vector/flat/longFlatVector.spec.js.map +0 -1
  165. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +0 -1
  166. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +0 -28
  167. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +0 -1
  168. package/dist/vector/geometry/zOrderCurve.spec.d.ts +0 -1
  169. package/dist/vector/geometry/zOrderCurve.spec.js +0 -25
  170. package/dist/vector/geometry/zOrderCurve.spec.js.map +0 -1
  171. package/dist/vector/sequence/longSequenceVektor.spec.d.ts +0 -1
  172. package/dist/vector/sequence/longSequenceVektor.spec.js +0 -11
  173. package/dist/vector/sequence/longSequenceVektor.spec.js.map +0 -1
@@ -29,7 +29,6 @@ export function decodePropertyColumn(data, offset, columnMetadata, numStreams, n
29
29
  }
30
30
  function decodeScalarPropertyColumn(numStreams, data, offset, numFeatures, column, columnMetadata) {
31
31
  let nullabilityBuffer = null;
32
- let numValues = 0;
33
32
  if (numStreams === 0) {
34
33
  /* Skip since this column has no values */
35
34
  return null;
@@ -37,7 +36,7 @@ function decodeScalarPropertyColumn(numStreams, data, offset, numFeatures, colum
37
36
  // Read nullability stream if column is nullable
38
37
  if (columnMetadata.nullable) {
39
38
  const presentStreamMetadata = decodeStreamMetadata(data, offset);
40
- numValues = presentStreamMetadata.numValues;
39
+ const numValues = presentStreamMetadata.numValues;
41
40
  const streamDataStart = offset.get();
42
41
  const presentVector = decodeBooleanRle(data, numValues, presentStreamMetadata.byteLength, offset);
43
42
  offset.set(streamDataStart + presentStreamMetadata.byteLength);
@@ -49,10 +48,11 @@ function decodeScalarPropertyColumn(numStreams, data, offset, numFeatures, colum
49
48
  case ScalarType.UINT_32:
50
49
  case ScalarType.INT_32:
51
50
  return decodeIntColumn(data, offset, columnMetadata, column, sizeOrNullabilityBuffer);
52
- case ScalarType.STRING:
51
+ case ScalarType.STRING: {
53
52
  // In embedded format: numStreams includes nullability stream if column is nullable
54
53
  const stringDataStreams = columnMetadata.nullable ? numStreams - 1 : numStreams;
55
54
  return decodeString(columnMetadata.name, data, offset, stringDataStreams, nullabilityBuffer);
55
+ }
56
56
  case ScalarType.BOOLEAN:
57
57
  return decodeBooleanColumn(data, offset, columnMetadata, numFeatures, sizeOrNullabilityBuffer);
58
58
  case ScalarType.UINT_64:
@@ -66,7 +66,7 @@ function decodeScalarPropertyColumn(numStreams, data, offset, numFeatures, colum
66
66
  throw new Error(`The specified data type for the field is currently not supported: ${column}`);
67
67
  }
68
68
  }
69
- function decodeBooleanColumn(data, offset, column, numFeatures, sizeOrNullabilityBuffer) {
69
+ function decodeBooleanColumn(data, offset, column, _numFeatures, sizeOrNullabilityBuffer) {
70
70
  const dataStreamMetadata = decodeStreamMetadata(data, offset);
71
71
  const numValues = dataStreamMetadata.numValues;
72
72
  const streamDataStart = offset.get();
@@ -97,14 +97,12 @@ function decodeLongColumn(data, offset, column, sizeOrNullabilityBuffer, scalarC
97
97
  const dataStream = decodeLongStream(data, offset, dataStreamMetadata, isSigned, nullabilityBuffer);
98
98
  return new LongFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
99
99
  }
100
- else if (vectorType === VectorType.SEQUENCE) {
100
+ if (vectorType === VectorType.SEQUENCE) {
101
101
  const id = decodeSequenceLongStream(data, offset, dataStreamMetadata);
102
102
  return new LongSequenceVector(column.name, id[0], id[1], dataStreamMetadata.numRleValues);
103
103
  }
104
- else {
105
- const constValue = decodeConstLongStream(data, offset, dataStreamMetadata, isSigned);
106
- return new LongConstVector(column.name, constValue, sizeOrNullabilityBuffer);
107
- }
104
+ const constValue = decodeConstLongStream(data, offset, dataStreamMetadata, isSigned);
105
+ return new LongConstVector(column.name, constValue, sizeOrNullabilityBuffer);
108
106
  }
109
107
  function decodeIntColumn(data, offset, column, scalarColumn, sizeOrNullabilityBuffer) {
110
108
  const dataStreamMetadata = decodeStreamMetadata(data, offset);
@@ -115,14 +113,12 @@ function decodeIntColumn(data, offset, column, scalarColumn, sizeOrNullabilityBu
115
113
  const dataStream = decodeIntStream(data, offset, dataStreamMetadata, isSigned, undefined, nullabilityBuffer);
116
114
  return new IntFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
117
115
  }
118
- else if (vectorType === VectorType.SEQUENCE) {
116
+ if (vectorType === VectorType.SEQUENCE) {
119
117
  const id = decodeSequenceIntStream(data, offset, dataStreamMetadata);
120
118
  return new IntSequenceVector(column.name, id[0], id[1], dataStreamMetadata.numRleValues);
121
119
  }
122
- else {
123
- const constValue = decodeConstIntStream(data, offset, dataStreamMetadata, isSigned);
124
- return new IntConstVector(column.name, constValue, sizeOrNullabilityBuffer);
125
- }
120
+ const constValue = decodeConstIntStream(data, offset, dataStreamMetadata, isSigned);
121
+ return new IntConstVector(column.name, constValue, sizeOrNullabilityBuffer);
126
122
  }
127
123
  function isNullabilityBuffer(sizeOrNullabilityBuffer) {
128
124
  return sizeOrNullabilityBuffer instanceof BitVector;
@@ -1 +1 @@
1
- {"version":3,"file":"propertyDecoder.js","sourceRoot":"","sources":["../../src/decoding/propertyDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type IntWrapper from \"./intWrapper\";\nimport { type Column, type ScalarColumn, ScalarType } from \"../metadata/tileset/tilesetMetadata\";\nimport type Vector from \"../vector/vector\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { decodeStreamMetadata, type RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { VectorType } from \"../vector/vectorType\";\nimport { BooleanFlatVector } from \"../vector/flat/booleanFlatVector\";\nimport { DoubleFlatVector } from \"../vector/flat/doubleFlatVector\";\nimport { FloatFlatVector } from \"../vector/flat/floatFlatVector\";\nimport { LongConstVector } from \"../vector/constant/longConstVector\";\nimport { LongFlatVector } from \"../vector/flat/longFlatVector\";\nimport { IntFlatVector } from \"../vector/flat/intFlatVector\";\nimport { IntConstVector } from \"../vector/constant/intConstVector\";\nimport { decodeBooleanRle, decodeDoublesLE, decodeFloatsLE, skipColumn } from \"./decodingUtils\";\nimport {\n decodeConstIntStream,\n decodeConstLongStream,\n decodeIntStream,\n decodeLongStream,\n decodeSequenceIntStream,\n decodeSequenceLongStream,\n getVectorType,\n} from \"./integerStreamDecoder\";\nimport { IntSequenceVector } from \"../vector/sequence/intSequenceVector\";\nimport { LongSequenceVector } from \"../vector/sequence/longSequenceVector\";\nimport { decodeSharedDictionary, decodeString } from \"./stringDecoder\";\n\nexport function decodePropertyColumn(\n data: Uint8Array,\n offset: IntWrapper,\n columnMetadata: Column,\n numStreams: number,\n numFeatures: number,\n propertyColumnNames?: Set<string>,\n): Vector | Vector[] {\n if (columnMetadata.type === \"scalarType\") {\n if (propertyColumnNames && !propertyColumnNames.has(columnMetadata.name)) {\n skipColumn(numStreams, data, offset);\n return null;\n }\n\n return decodeScalarPropertyColumn(\n numStreams,\n data,\n offset,\n numFeatures,\n columnMetadata.scalarType,\n columnMetadata,\n );\n }\n\n if (numStreams === 0) {\n return null;\n }\n\n return decodeSharedDictionary(data, offset, columnMetadata, numFeatures, propertyColumnNames);\n}\n\nfunction decodeScalarPropertyColumn(\n numStreams: number,\n data: Uint8Array,\n offset: IntWrapper,\n numFeatures: number,\n column: ScalarColumn,\n columnMetadata: Column,\n) {\n let nullabilityBuffer: BitVector = null;\n let numValues = 0;\n if (numStreams === 0) {\n /* Skip since this column has no values */\n return null;\n }\n\n // Read nullability stream if column is nullable\n if (columnMetadata.nullable) {\n const presentStreamMetadata = decodeStreamMetadata(data, offset);\n numValues = presentStreamMetadata.numValues;\n const streamDataStart = offset.get();\n const presentVector = decodeBooleanRle(data, numValues, presentStreamMetadata.byteLength, offset);\n offset.set(streamDataStart + presentStreamMetadata.byteLength);\n nullabilityBuffer = new BitVector(presentVector, presentStreamMetadata.numValues);\n }\n\n const sizeOrNullabilityBuffer = nullabilityBuffer ?? numFeatures;\n const scalarType = column.physicalType;\n switch (scalarType) {\n case ScalarType.UINT_32:\n case ScalarType.INT_32:\n return decodeIntColumn(data, offset, columnMetadata, column, sizeOrNullabilityBuffer);\n case ScalarType.STRING:\n // In embedded format: numStreams includes nullability stream if column is nullable\n const stringDataStreams = columnMetadata.nullable ? numStreams - 1 : numStreams;\n return decodeString(columnMetadata.name, data, offset, stringDataStreams, nullabilityBuffer);\n case ScalarType.BOOLEAN:\n return decodeBooleanColumn(data, offset, columnMetadata, numFeatures, sizeOrNullabilityBuffer);\n case ScalarType.UINT_64:\n case ScalarType.INT_64:\n return decodeLongColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer, column);\n case ScalarType.FLOAT:\n return decodeFloatColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);\n case ScalarType.DOUBLE:\n return decodeDoubleColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);\n default:\n throw new Error(`The specified data type for the field is currently not supported: ${column}`);\n }\n}\n\nfunction decodeBooleanColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n numFeatures: number,\n sizeOrNullabilityBuffer: number | BitVector,\n): BooleanFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const numValues = dataStreamMetadata.numValues;\n const streamDataStart = offset.get();\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeBooleanRle(data, numValues, dataStreamMetadata.byteLength, offset, nullabilityBuffer);\n offset.set(streamDataStart + dataStreamMetadata.byteLength);\n const dataVector = new BitVector(dataStream, numValues);\n return new BooleanFlatVector(column.name, dataVector, sizeOrNullabilityBuffer);\n}\n\nfunction decodeFloatColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n): FloatFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeFloatsLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);\n return new FloatFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n}\n\nfunction decodeDoubleColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n): DoubleFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeDoublesLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);\n return new DoubleFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n}\n\nfunction decodeLongColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n scalarColumn: ScalarColumn,\n): Vector<BigInt64Array, bigint> {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);\n const isSigned = scalarColumn.physicalType === ScalarType.INT_64;\n if (vectorType === VectorType.FLAT) {\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeLongStream(data, offset, dataStreamMetadata, isSigned, nullabilityBuffer);\n return new LongFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n } else if (vectorType === VectorType.SEQUENCE) {\n const id = decodeSequenceLongStream(data, offset, dataStreamMetadata);\n return new LongSequenceVector(\n column.name,\n id[0],\n id[1],\n (dataStreamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n } else {\n const constValue = decodeConstLongStream(data, offset, dataStreamMetadata, isSigned);\n return new LongConstVector(column.name, constValue, sizeOrNullabilityBuffer);\n }\n}\n\nfunction decodeIntColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n scalarColumn: ScalarColumn,\n sizeOrNullabilityBuffer: number | BitVector,\n): Vector<Int32Array, number> {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);\n const isSigned = scalarColumn.physicalType === ScalarType.INT_32;\n\n if (vectorType === VectorType.FLAT) {\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeIntStream(data, offset, dataStreamMetadata, isSigned, undefined, nullabilityBuffer);\n return new IntFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n } else if (vectorType === VectorType.SEQUENCE) {\n const id = decodeSequenceIntStream(data, offset, dataStreamMetadata);\n return new IntSequenceVector(\n column.name,\n id[0],\n id[1],\n (dataStreamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n } else {\n const constValue = decodeConstIntStream(data, offset, dataStreamMetadata, isSigned);\n return new IntConstVector(column.name, constValue, sizeOrNullabilityBuffer);\n }\n}\n\nfunction isNullabilityBuffer(sizeOrNullabilityBuffer: number | BitVector): sizeOrNullabilityBuffer is BitVector {\n return sizeOrNullabilityBuffer instanceof BitVector;\n}\n"]}
1
+ {"version":3,"file":"propertyDecoder.js","sourceRoot":"","sources":["../../src/decoding/propertyDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type IntWrapper from \"./intWrapper\";\nimport { type Column, type ScalarColumn, ScalarType } from \"../metadata/tileset/tilesetMetadata\";\nimport type Vector from \"../vector/vector\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { decodeStreamMetadata, type RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { VectorType } from \"../vector/vectorType\";\nimport { BooleanFlatVector } from \"../vector/flat/booleanFlatVector\";\nimport { DoubleFlatVector } from \"../vector/flat/doubleFlatVector\";\nimport { FloatFlatVector } from \"../vector/flat/floatFlatVector\";\nimport { LongConstVector } from \"../vector/constant/longConstVector\";\nimport { LongFlatVector } from \"../vector/flat/longFlatVector\";\nimport { IntFlatVector } from \"../vector/flat/intFlatVector\";\nimport { IntConstVector } from \"../vector/constant/intConstVector\";\nimport { decodeBooleanRle, decodeDoublesLE, decodeFloatsLE, skipColumn } from \"./decodingUtils\";\nimport {\n decodeConstIntStream,\n decodeConstLongStream,\n decodeIntStream,\n decodeLongStream,\n decodeSequenceIntStream,\n decodeSequenceLongStream,\n getVectorType,\n} from \"./integerStreamDecoder\";\nimport { IntSequenceVector } from \"../vector/sequence/intSequenceVector\";\nimport { LongSequenceVector } from \"../vector/sequence/longSequenceVector\";\nimport { decodeSharedDictionary, decodeString } from \"./stringDecoder\";\n\nexport function decodePropertyColumn(\n data: Uint8Array,\n offset: IntWrapper,\n columnMetadata: Column,\n numStreams: number,\n numFeatures: number,\n propertyColumnNames?: Set<string>,\n): Vector | Vector[] {\n if (columnMetadata.type === \"scalarType\") {\n if (propertyColumnNames && !propertyColumnNames.has(columnMetadata.name)) {\n skipColumn(numStreams, data, offset);\n return null;\n }\n\n return decodeScalarPropertyColumn(\n numStreams,\n data,\n offset,\n numFeatures,\n columnMetadata.scalarType,\n columnMetadata,\n );\n }\n\n if (numStreams === 0) {\n return null;\n }\n\n return decodeSharedDictionary(data, offset, columnMetadata, numFeatures, propertyColumnNames);\n}\n\nfunction decodeScalarPropertyColumn(\n numStreams: number,\n data: Uint8Array,\n offset: IntWrapper,\n numFeatures: number,\n column: ScalarColumn,\n columnMetadata: Column,\n) {\n let nullabilityBuffer: BitVector = null;\n if (numStreams === 0) {\n /* Skip since this column has no values */\n return null;\n }\n\n // Read nullability stream if column is nullable\n if (columnMetadata.nullable) {\n const presentStreamMetadata = decodeStreamMetadata(data, offset);\n const numValues = presentStreamMetadata.numValues;\n const streamDataStart = offset.get();\n const presentVector = decodeBooleanRle(data, numValues, presentStreamMetadata.byteLength, offset);\n offset.set(streamDataStart + presentStreamMetadata.byteLength);\n nullabilityBuffer = new BitVector(presentVector, presentStreamMetadata.numValues);\n }\n\n const sizeOrNullabilityBuffer = nullabilityBuffer ?? numFeatures;\n const scalarType = column.physicalType;\n switch (scalarType) {\n case ScalarType.UINT_32:\n case ScalarType.INT_32:\n return decodeIntColumn(data, offset, columnMetadata, column, sizeOrNullabilityBuffer);\n case ScalarType.STRING: {\n // In embedded format: numStreams includes nullability stream if column is nullable\n const stringDataStreams = columnMetadata.nullable ? numStreams - 1 : numStreams;\n return decodeString(columnMetadata.name, data, offset, stringDataStreams, nullabilityBuffer);\n }\n case ScalarType.BOOLEAN:\n return decodeBooleanColumn(data, offset, columnMetadata, numFeatures, sizeOrNullabilityBuffer);\n case ScalarType.UINT_64:\n case ScalarType.INT_64:\n return decodeLongColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer, column);\n case ScalarType.FLOAT:\n return decodeFloatColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);\n case ScalarType.DOUBLE:\n return decodeDoubleColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);\n default:\n throw new Error(`The specified data type for the field is currently not supported: ${column}`);\n }\n}\n\nfunction decodeBooleanColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n _numFeatures: number,\n sizeOrNullabilityBuffer: number | BitVector,\n): BooleanFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const numValues = dataStreamMetadata.numValues;\n const streamDataStart = offset.get();\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeBooleanRle(data, numValues, dataStreamMetadata.byteLength, offset, nullabilityBuffer);\n offset.set(streamDataStart + dataStreamMetadata.byteLength);\n const dataVector = new BitVector(dataStream, numValues);\n return new BooleanFlatVector(column.name, dataVector, sizeOrNullabilityBuffer);\n}\n\nfunction decodeFloatColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n): FloatFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeFloatsLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);\n return new FloatFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n}\n\nfunction decodeDoubleColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n): DoubleFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeDoublesLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);\n return new DoubleFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n}\n\nfunction decodeLongColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n scalarColumn: ScalarColumn,\n): Vector<BigInt64Array, bigint> {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);\n const isSigned = scalarColumn.physicalType === ScalarType.INT_64;\n if (vectorType === VectorType.FLAT) {\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeLongStream(data, offset, dataStreamMetadata, isSigned, nullabilityBuffer);\n return new LongFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n }\n if (vectorType === VectorType.SEQUENCE) {\n const id = decodeSequenceLongStream(data, offset, dataStreamMetadata);\n return new LongSequenceVector(\n column.name,\n id[0],\n id[1],\n (dataStreamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n }\n const constValue = decodeConstLongStream(data, offset, dataStreamMetadata, isSigned);\n return new LongConstVector(column.name, constValue, sizeOrNullabilityBuffer);\n}\n\nfunction decodeIntColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n scalarColumn: ScalarColumn,\n sizeOrNullabilityBuffer: number | BitVector,\n): Vector<Int32Array, number> {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);\n const isSigned = scalarColumn.physicalType === ScalarType.INT_32;\n\n if (vectorType === VectorType.FLAT) {\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeIntStream(data, offset, dataStreamMetadata, isSigned, undefined, nullabilityBuffer);\n return new IntFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n }\n if (vectorType === VectorType.SEQUENCE) {\n const id = decodeSequenceIntStream(data, offset, dataStreamMetadata);\n return new IntSequenceVector(\n column.name,\n id[0],\n id[1],\n (dataStreamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n }\n const constValue = decodeConstIntStream(data, offset, dataStreamMetadata, isSigned);\n return new IntConstVector(column.name, constValue, sizeOrNullabilityBuffer);\n}\n\nfunction isNullabilityBuffer(sizeOrNullabilityBuffer: number | BitVector): sizeOrNullabilityBuffer is BitVector {\n return sizeOrNullabilityBuffer instanceof BitVector;\n}\n"]}
@@ -10,8 +10,6 @@ import { ScalarType } from "../metadata/tileset/tilesetMetadata";
10
10
  import { decodeVarintInt32 } from "./integerDecodingUtils";
11
11
  import { decodeBooleanRle, skipColumn } from "./decodingUtils";
12
12
  import { StringFsstDictionaryVector } from "../vector/fsst-dictionary/stringFsstDictionaryVector";
13
- const ROOT_COLUMN_NAME = "default";
14
- const NESTED_COLUMN_SEPARATOR = ":";
15
13
  export function decodeString(name, data, offset, numStreams, bitVector) {
16
14
  let dictionaryLengthStream = null;
17
15
  let offsetStream = null;
@@ -23,9 +21,6 @@ export function decodeString(name, data, offset, numStreams, bitVector) {
23
21
  let plainDataStream = null;
24
22
  for (let i = 0; i < numStreams; i++) {
25
23
  const streamMetadata = decodeStreamMetadata(data, offset);
26
- if (streamMetadata.byteLength === 0) {
27
- continue;
28
- }
29
24
  switch (streamMetadata.physicalStreamType) {
30
25
  case PhysicalStreamType.PRESENT: {
31
26
  const presentData = decodeBooleanRle(data, streamMetadata.numValues, streamMetadata.byteLength, offset);
@@ -148,15 +143,11 @@ export function decodeSharedDictionary(data, offset, column, numFeatures, proper
148
143
  let i = 0;
149
144
  for (const childField of childFields) {
150
145
  const numStreams = decodeVarintInt32(data, offset, 1)[0];
151
- if (numStreams == 0) {
146
+ if (numStreams === 0) {
152
147
  /* Column is not present in the tile */
153
148
  continue;
154
149
  }
155
- const columnName = childField.name === ROOT_COLUMN_NAME || !childField.name
156
- ? column.name
157
- : childField.name.startsWith(NESTED_COLUMN_SEPARATOR)
158
- ? `${column.name}${childField.name}`
159
- : `${column.name}${NESTED_COLUMN_SEPARATOR}${childField.name}`;
150
+ const columnName = childField.name ? `${column.name}${childField.name}` : column.name;
160
151
  if (propertyColumnNames) {
161
152
  if (!propertyColumnNames.has(columnName)) {
162
153
  //TODO: add size of sub column to Mlt for faster skipping
@@ -1 +1 @@
1
- {"version":3,"file":"stringDecoder.js","sourceRoot":"","sources":["../../src/decoding/stringDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { decodeStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { StringFlatVector } from \"../vector/flat/stringFlatVector\";\nimport { StringDictionaryVector } from \"../vector/dictionary/stringDictionaryVector\";\nimport type IntWrapper from \"./intWrapper\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport type Vector from \"../vector/vector\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { decodeIntStream, decodeLengthStreamToOffsetBuffer } from \"./integerStreamDecoder\";\nimport { type Column, ScalarType } from \"../metadata/tileset/tilesetMetadata\";\nimport { decodeVarintInt32 } from \"./integerDecodingUtils\";\nimport { decodeBooleanRle, skipColumn } from \"./decodingUtils\";\nimport { StringFsstDictionaryVector } from \"../vector/fsst-dictionary/stringFsstDictionaryVector\";\n\nconst ROOT_COLUMN_NAME = \"default\";\nconst NESTED_COLUMN_SEPARATOR = \":\";\n\nexport function decodeString(\n name: string,\n data: Uint8Array,\n offset: IntWrapper,\n numStreams: number,\n bitVector?: BitVector,\n): Vector {\n let dictionaryLengthStream: Uint32Array = null;\n let offsetStream: Int32Array = null;\n let dictionaryStream: Uint8Array = null;\n let symbolLengthStream: Uint32Array = null;\n let symbolTableStream: Uint8Array = null;\n let presentStream: BitVector = null;\n let plainLengthStream: Uint32Array = null;\n let plainDataStream: Uint8Array = null;\n\n for (let i = 0; i < numStreams; i++) {\n const streamMetadata = decodeStreamMetadata(data, offset);\n if (streamMetadata.byteLength === 0) {\n continue;\n }\n\n switch (streamMetadata.physicalStreamType) {\n case PhysicalStreamType.PRESENT: {\n const presentData = decodeBooleanRle(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n presentStream = new BitVector(presentData, streamMetadata.numValues);\n break;\n }\n case PhysicalStreamType.OFFSET: {\n const isNullable = bitVector != null || presentStream != null;\n const nullabilityBuffer = bitVector ?? presentStream;\n offsetStream = decodeIntStream(\n data,\n offset,\n streamMetadata,\n false,\n undefined,\n isNullable ? nullabilityBuffer : undefined,\n );\n break;\n }\n case PhysicalStreamType.LENGTH: {\n const ls = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {\n dictionaryLengthStream = ls;\n } else if (LengthType.SYMBOL === streamMetadata.logicalStreamType.lengthType) {\n symbolLengthStream = ls;\n } else {\n // Plain string encoding uses VAR_BINARY length type\n plainLengthStream = ls;\n }\n break;\n }\n case PhysicalStreamType.DATA: {\n const ds = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n offset.add(streamMetadata.byteLength);\n const dictType = streamMetadata.logicalStreamType.dictionaryType;\n if (DictionaryType.FSST === dictType) {\n symbolTableStream = ds;\n } else if (DictionaryType.SINGLE === dictType || DictionaryType.SHARED === dictType) {\n dictionaryStream = ds;\n } else if (DictionaryType.NONE === dictType) {\n plainDataStream = ds;\n }\n break;\n }\n }\n }\n\n return (\n decodeFsstDictionaryVector(\n name,\n symbolTableStream,\n offsetStream,\n dictionaryLengthStream,\n dictionaryStream,\n symbolLengthStream,\n bitVector ?? presentStream,\n ) ??\n decodeDictionaryVector(\n name,\n dictionaryStream,\n offsetStream,\n dictionaryLengthStream,\n bitVector ?? presentStream,\n ) ??\n decodePlainStringVector(name, plainLengthStream, plainDataStream, offsetStream, bitVector ?? presentStream)\n );\n}\n\nfunction decodeFsstDictionaryVector(\n name: string,\n symbolTableStream: Uint8Array | null,\n offsetStream: Int32Array | null,\n dictionaryLengthStream: Uint32Array | null,\n dictionaryStream: Uint8Array | null,\n symbolLengthStream: Uint32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!symbolTableStream) {\n return null;\n }\n return new StringFsstDictionaryVector(\n name,\n offsetStream,\n dictionaryLengthStream,\n dictionaryStream,\n symbolLengthStream,\n symbolTableStream,\n nullabilityBuffer,\n );\n}\n\nfunction decodeDictionaryVector(\n name: string,\n dictionaryStream: Uint8Array | null,\n offsetStream: Int32Array | null,\n dictionaryLengthStream: Uint32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!dictionaryStream) {\n return null;\n }\n return nullabilityBuffer\n ? new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream, nullabilityBuffer)\n : new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream);\n}\n\nfunction decodePlainStringVector(\n name: string,\n plainLengthStream: Uint32Array | null,\n plainDataStream: Uint8Array | null,\n offsetStream: Int32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!plainLengthStream || !plainDataStream) {\n return null;\n }\n\n if (offsetStream) {\n return nullabilityBuffer\n ? new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream, nullabilityBuffer)\n : new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream);\n }\n\n if (nullabilityBuffer && nullabilityBuffer.size() !== plainLengthStream.length - 1) {\n const sparseOffsetStream = new Int32Array(nullabilityBuffer.size());\n let valueIndex = 0;\n for (let i = 0; i < nullabilityBuffer.size(); i++) {\n if (nullabilityBuffer.get(i)) {\n sparseOffsetStream[i] = valueIndex++;\n } else {\n sparseOffsetStream[i] = 0;\n }\n }\n return new StringDictionaryVector(\n name,\n sparseOffsetStream,\n plainLengthStream,\n plainDataStream,\n nullabilityBuffer,\n );\n }\n\n return nullabilityBuffer\n ? new StringFlatVector(name, plainLengthStream, plainDataStream, nullabilityBuffer)\n : new StringFlatVector(name, plainLengthStream, plainDataStream);\n}\n\nexport function decodeSharedDictionary(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n numFeatures: number,\n propertyColumnNames?: Set<string>,\n): Vector[] {\n let dictionaryOffsetBuffer: Uint32Array = null;\n let dictionaryBuffer: Uint8Array = null;\n let symbolOffsetBuffer: Uint32Array = null;\n let symbolTableBuffer: Uint8Array = null;\n\n let dictionaryStreamDecoded = false;\n while (!dictionaryStreamDecoded) {\n const streamMetadata = decodeStreamMetadata(data, offset);\n switch (streamMetadata.physicalStreamType) {\n case PhysicalStreamType.LENGTH:\n if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {\n dictionaryOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n } else {\n symbolOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n }\n break;\n case PhysicalStreamType.DATA:\n if (\n DictionaryType.SINGLE === streamMetadata.logicalStreamType.dictionaryType ||\n DictionaryType.SHARED === streamMetadata.logicalStreamType.dictionaryType\n ) {\n dictionaryBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n dictionaryStreamDecoded = true;\n } else {\n symbolTableBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n }\n offset.add(streamMetadata.byteLength);\n break;\n }\n }\n\n const childFields = column.complexType.children;\n const stringDictionaryVectors = [];\n let i = 0;\n for (const childField of childFields) {\n const numStreams = decodeVarintInt32(data, offset, 1)[0];\n if (numStreams == 0) {\n /* Column is not present in the tile */\n continue;\n }\n\n const columnName = childField.name === ROOT_COLUMN_NAME || !childField.name\n ? column.name\n : childField.name.startsWith(NESTED_COLUMN_SEPARATOR)\n ? `${column.name}${childField.name}`\n : `${column.name}${NESTED_COLUMN_SEPARATOR}${childField.name}`;\n if (propertyColumnNames) {\n if (!propertyColumnNames.has(columnName)) {\n //TODO: add size of sub column to Mlt for faster skipping\n skipColumn(numStreams, data, offset);\n continue;\n }\n }\n\n if (\n numStreams !== 2 ||\n childField.type !== \"scalarField\" ||\n childField.scalarField.physicalType !== ScalarType.STRING\n ) {\n throw new Error(\"Currently only optional string fields are implemented for a struct.\");\n }\n\n const presentStreamMetadata = decodeStreamMetadata(data, offset);\n const presentStream = decodeBooleanRle(data, presentStreamMetadata.numValues, presentStreamMetadata.byteLength, offset);\n const offsetStreamMetadata = decodeStreamMetadata(data, offset);\n const offsetCount = offsetStreamMetadata.decompressedCount;\n const isNullable = offsetCount !== numFeatures;\n const offsetStream = decodeIntStream(\n data,\n offset,\n offsetStreamMetadata,\n false,\n undefined,\n isNullable ? new BitVector(presentStream, presentStreamMetadata.numValues) : undefined,\n );\n\n stringDictionaryVectors[i++] = symbolTableBuffer\n ? new StringFsstDictionaryVector(\n columnName,\n offsetStream,\n dictionaryOffsetBuffer,\n dictionaryBuffer,\n symbolOffsetBuffer,\n symbolTableBuffer,\n new BitVector(presentStream, presentStreamMetadata.numValues),\n )\n : new StringDictionaryVector(\n columnName,\n offsetStream,\n dictionaryOffsetBuffer,\n dictionaryBuffer,\n new BitVector(presentStream, presentStreamMetadata.numValues),\n );\n }\n\n return stringDictionaryVectors;\n}\n"]}
1
+ {"version":3,"file":"stringDecoder.js","sourceRoot":"","sources":["../../src/decoding/stringDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { decodeStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { StringFlatVector } from \"../vector/flat/stringFlatVector\";\nimport { StringDictionaryVector } from \"../vector/dictionary/stringDictionaryVector\";\nimport type IntWrapper from \"./intWrapper\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport type Vector from \"../vector/vector\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { decodeIntStream, decodeLengthStreamToOffsetBuffer } from \"./integerStreamDecoder\";\nimport { type Column, ScalarType } from \"../metadata/tileset/tilesetMetadata\";\nimport { decodeVarintInt32 } from \"./integerDecodingUtils\";\nimport { decodeBooleanRle, skipColumn } from \"./decodingUtils\";\nimport { StringFsstDictionaryVector } from \"../vector/fsst-dictionary/stringFsstDictionaryVector\";\n\nexport function decodeString(\n name: string,\n data: Uint8Array,\n offset: IntWrapper,\n numStreams: number,\n bitVector?: BitVector,\n): Vector {\n let dictionaryLengthStream: Uint32Array = null;\n let offsetStream: Int32Array = null;\n let dictionaryStream: Uint8Array = null;\n let symbolLengthStream: Uint32Array = null;\n let symbolTableStream: Uint8Array = null;\n let presentStream: BitVector = null;\n let plainLengthStream: Uint32Array = null;\n let plainDataStream: Uint8Array = null;\n\n for (let i = 0; i < numStreams; i++) {\n const streamMetadata = decodeStreamMetadata(data, offset);\n\n switch (streamMetadata.physicalStreamType) {\n case PhysicalStreamType.PRESENT: {\n const presentData = decodeBooleanRle(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n presentStream = new BitVector(presentData, streamMetadata.numValues);\n break;\n }\n case PhysicalStreamType.OFFSET: {\n const isNullable = bitVector != null || presentStream != null;\n const nullabilityBuffer = bitVector ?? presentStream;\n offsetStream = decodeIntStream(\n data,\n offset,\n streamMetadata,\n false,\n undefined,\n isNullable ? nullabilityBuffer : undefined,\n );\n break;\n }\n case PhysicalStreamType.LENGTH: {\n const ls = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {\n dictionaryLengthStream = ls;\n } else if (LengthType.SYMBOL === streamMetadata.logicalStreamType.lengthType) {\n symbolLengthStream = ls;\n } else {\n // Plain string encoding uses VAR_BINARY length type\n plainLengthStream = ls;\n }\n break;\n }\n case PhysicalStreamType.DATA: {\n const ds = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n offset.add(streamMetadata.byteLength);\n const dictType = streamMetadata.logicalStreamType.dictionaryType;\n if (DictionaryType.FSST === dictType) {\n symbolTableStream = ds;\n } else if (DictionaryType.SINGLE === dictType || DictionaryType.SHARED === dictType) {\n dictionaryStream = ds;\n } else if (DictionaryType.NONE === dictType) {\n plainDataStream = ds;\n }\n break;\n }\n }\n }\n\n return (\n decodeFsstDictionaryVector(\n name,\n symbolTableStream,\n offsetStream,\n dictionaryLengthStream,\n dictionaryStream,\n symbolLengthStream,\n bitVector ?? presentStream,\n ) ??\n decodeDictionaryVector(\n name,\n dictionaryStream,\n offsetStream,\n dictionaryLengthStream,\n bitVector ?? presentStream,\n ) ??\n decodePlainStringVector(name, plainLengthStream, plainDataStream, offsetStream, bitVector ?? presentStream)\n );\n}\n\nfunction decodeFsstDictionaryVector(\n name: string,\n symbolTableStream: Uint8Array | null,\n offsetStream: Int32Array | null,\n dictionaryLengthStream: Uint32Array | null,\n dictionaryStream: Uint8Array | null,\n symbolLengthStream: Uint32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!symbolTableStream) {\n return null;\n }\n return new StringFsstDictionaryVector(\n name,\n offsetStream,\n dictionaryLengthStream,\n dictionaryStream,\n symbolLengthStream,\n symbolTableStream,\n nullabilityBuffer,\n );\n}\n\nfunction decodeDictionaryVector(\n name: string,\n dictionaryStream: Uint8Array | null,\n offsetStream: Int32Array | null,\n dictionaryLengthStream: Uint32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!dictionaryStream) {\n return null;\n }\n return nullabilityBuffer\n ? new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream, nullabilityBuffer)\n : new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream);\n}\n\nfunction decodePlainStringVector(\n name: string,\n plainLengthStream: Uint32Array | null,\n plainDataStream: Uint8Array | null,\n offsetStream: Int32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!plainLengthStream || !plainDataStream) {\n return null;\n }\n\n if (offsetStream) {\n return nullabilityBuffer\n ? new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream, nullabilityBuffer)\n : new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream);\n }\n\n if (nullabilityBuffer && nullabilityBuffer.size() !== plainLengthStream.length - 1) {\n const sparseOffsetStream = new Int32Array(nullabilityBuffer.size());\n let valueIndex = 0;\n for (let i = 0; i < nullabilityBuffer.size(); i++) {\n if (nullabilityBuffer.get(i)) {\n sparseOffsetStream[i] = valueIndex++;\n } else {\n sparseOffsetStream[i] = 0;\n }\n }\n return new StringDictionaryVector(\n name,\n sparseOffsetStream,\n plainLengthStream,\n plainDataStream,\n nullabilityBuffer,\n );\n }\n\n return nullabilityBuffer\n ? new StringFlatVector(name, plainLengthStream, plainDataStream, nullabilityBuffer)\n : new StringFlatVector(name, plainLengthStream, plainDataStream);\n}\n\nexport function decodeSharedDictionary(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n numFeatures: number,\n propertyColumnNames?: Set<string>,\n): Vector[] {\n let dictionaryOffsetBuffer: Uint32Array = null;\n let dictionaryBuffer: Uint8Array = null;\n let symbolOffsetBuffer: Uint32Array = null;\n let symbolTableBuffer: Uint8Array = null;\n\n let dictionaryStreamDecoded = false;\n while (!dictionaryStreamDecoded) {\n const streamMetadata = decodeStreamMetadata(data, offset);\n switch (streamMetadata.physicalStreamType) {\n case PhysicalStreamType.LENGTH:\n if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {\n dictionaryOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n } else {\n symbolOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n }\n break;\n case PhysicalStreamType.DATA:\n if (\n DictionaryType.SINGLE === streamMetadata.logicalStreamType.dictionaryType ||\n DictionaryType.SHARED === streamMetadata.logicalStreamType.dictionaryType\n ) {\n dictionaryBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n dictionaryStreamDecoded = true;\n } else {\n symbolTableBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n }\n offset.add(streamMetadata.byteLength);\n break;\n }\n }\n\n const childFields = column.complexType.children;\n const stringDictionaryVectors = [];\n let i = 0;\n for (const childField of childFields) {\n const numStreams = decodeVarintInt32(data, offset, 1)[0];\n if (numStreams === 0) {\n /* Column is not present in the tile */\n continue;\n }\n\n const columnName = childField.name ? `${column.name}${childField.name}` : column.name;\n if (propertyColumnNames) {\n if (!propertyColumnNames.has(columnName)) {\n //TODO: add size of sub column to Mlt for faster skipping\n skipColumn(numStreams, data, offset);\n continue;\n }\n }\n\n if (\n numStreams !== 2 ||\n childField.type !== \"scalarField\" ||\n childField.scalarField.physicalType !== ScalarType.STRING\n ) {\n throw new Error(\"Currently only optional string fields are implemented for a struct.\");\n }\n\n const presentStreamMetadata = decodeStreamMetadata(data, offset);\n const presentStream = decodeBooleanRle(\n data,\n presentStreamMetadata.numValues,\n presentStreamMetadata.byteLength,\n offset,\n );\n const offsetStreamMetadata = decodeStreamMetadata(data, offset);\n const offsetCount = offsetStreamMetadata.decompressedCount;\n const isNullable = offsetCount !== numFeatures;\n const offsetStream = decodeIntStream(\n data,\n offset,\n offsetStreamMetadata,\n false,\n undefined,\n isNullable ? new BitVector(presentStream, presentStreamMetadata.numValues) : undefined,\n );\n\n stringDictionaryVectors[i++] = symbolTableBuffer\n ? new StringFsstDictionaryVector(\n columnName,\n offsetStream,\n dictionaryOffsetBuffer,\n dictionaryBuffer,\n symbolOffsetBuffer,\n symbolTableBuffer,\n new BitVector(presentStream, presentStreamMetadata.numValues),\n )\n : new StringDictionaryVector(\n columnName,\n offsetStream,\n dictionaryOffsetBuffer,\n dictionaryBuffer,\n new BitVector(presentStream, presentStreamMetadata.numValues),\n );\n }\n\n return stringDictionaryVectors;\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Serializes an `Int32Array` to a big-endian byte stream.
3
+ *
4
+ * @param values - Int32 words to serialize.
5
+ * @returns Big-endian byte stream (`values.length * 4` bytes).
6
+ */
7
+ export declare function encodeBigEndianInt32s(values: Int32Array): Uint8Array;
@@ -0,0 +1,16 @@
1
+ import { bswap32 } from "../decoding/fastPforShared";
2
+ /**
3
+ * Serializes an `Int32Array` to a big-endian byte stream.
4
+ *
5
+ * @param values - Int32 words to serialize.
6
+ * @returns Big-endian byte stream (`values.length * 4` bytes).
7
+ */
8
+ export function encodeBigEndianInt32s(values) {
9
+ const bytes = new Uint8Array(values.length * 4);
10
+ const u32 = new Uint32Array(bytes.buffer, bytes.byteOffset, values.length);
11
+ for (let i = 0; i < values.length; i++) {
12
+ u32[i] = bswap32(values[i]);
13
+ }
14
+ return bytes;
15
+ }
16
+ //# sourceMappingURL=bigEndianEncode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigEndianEncode.js","sourceRoot":"","sources":["../../src/encoding/bigEndianEncode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACpD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["import { bswap32 } from \"../decoding/fastPforShared\";\n\n/**\n * Serializes an `Int32Array` to a big-endian byte stream.\n *\n * @param values - Int32 words to serialize.\n * @returns Big-endian byte stream (`values.length * 4` bytes).\n */\nexport function encodeBigEndianInt32s(values: Int32Array): Uint8Array {\n const bytes = new Uint8Array(values.length * 4);\n const u32 = new Uint32Array(bytes.buffer, bytes.byteOffset, values.length);\n\n for (let i = 0; i < values.length; i++) {\n u32[i] = bswap32(values[i]);\n }\n return bytes;\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import type { GeometryVector, MortonSettings } from "../vector/geometry/geometryVector";
2
+ export declare const DEFAULT_MORTON_SETTINGS: MortonSettings;
3
+ export declare function encode(x: number, y: number): number;
4
+ export declare function encodePointGeometryVector(x: number, y: number): GeometryVector;
5
+ export declare function encodePointGeometryVectorWithOffset(x: number, y: number): GeometryVector;
6
+ export declare function encodePointGeometryVectorWithMortonEncoding(x: number, y: number): GeometryVector;
7
+ export declare function encodePointsGeometryVector(points: number[]): GeometryVector;
8
+ export declare function encodeMultiPointGeometryVector(points: number[][]): GeometryVector;
9
+ export declare function encodeLineStringGeometryVector(lines: [number, number][]): GeometryVector;
10
+ export declare function encodeLineStringGeometryVectorWithMortonEncoding(line: [number, number][]): GeometryVector;
11
+ export declare function encodePolygonGeometryVector(polygon: [number, number][][]): GeometryVector;
12
+ export declare function encodePolygonGeometryVectorWithOffsets(polygon: [number, number][][]): GeometryVector;
13
+ export declare function encodePolygonGeometryVectorWithMortonOffsets(polygon: [number, number][][]): GeometryVector;
14
+ export declare function encodeMultiLineStringGeometryVector(lines: [number, number][][]): GeometryVector;
15
+ export declare function encodeMultiLineStringGeometryVectorWithOffsets(lines: [number, number][][]): GeometryVector;
16
+ export declare function encodeMultiLineStringGeometryVectorWithMortonOffsets(lines: [number, number][][]): GeometryVector;
17
+ export declare function encodeMultiPolygonGeometryVector(polygons: [number, number][][][]): GeometryVector;
18
+ export declare function encodeMultiPolygonGeometryVectorWithOffsets(polygons: [number, number][][][]): GeometryVector;
19
+ export declare function encodeMultiPolygonGeometryVectorWithMortonOffsets(polygons: [number, number][][][]): GeometryVector;
@@ -0,0 +1,248 @@
1
+ import { ConstGeometryVector } from "../vector/geometry/constGeometryVector";
2
+ import { GEOMETRY_TYPE } from "../vector/geometry/geometryType";
3
+ import { VertexBufferType } from "../vector/geometry/vertexBufferType";
4
+ import { encodeZOrderCurve } from "./zOrderCurveEncoder";
5
+ export const DEFAULT_MORTON_SETTINGS = { numBits: 16, coordinateShift: 0 };
6
+ export function encode(x, y) {
7
+ return encodeZOrderCurve(x, y, DEFAULT_MORTON_SETTINGS.numBits, DEFAULT_MORTON_SETTINGS.coordinateShift);
8
+ }
9
+ export function encodePointGeometryVector(x, y) {
10
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.POINT, VertexBufferType.VEC_2, {
11
+ geometryOffsets: new Uint32Array([0]),
12
+ partOffsets: new Uint32Array([0]),
13
+ ringOffsets: new Uint32Array([0]),
14
+ }, undefined, new Int32Array([x, y]));
15
+ }
16
+ export function encodePointGeometryVectorWithOffset(x, y) {
17
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.POINT, VertexBufferType.VEC_2, {
18
+ geometryOffsets: new Uint32Array([0]),
19
+ partOffsets: new Uint32Array([0]),
20
+ ringOffsets: new Uint32Array([0]),
21
+ }, new Int32Array([1]), new Int32Array([99, 99, x, y]));
22
+ }
23
+ export function encodePointGeometryVectorWithMortonEncoding(x, y) {
24
+ const mortonEncoded = encode(x, y);
25
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.POINT, VertexBufferType.MORTON, {
26
+ geometryOffsets: new Uint32Array([0]),
27
+ partOffsets: new Uint32Array([0]),
28
+ ringOffsets: new Uint32Array([0]),
29
+ }, new Int32Array([0]), new Int32Array([mortonEncoded]), DEFAULT_MORTON_SETTINGS);
30
+ }
31
+ export function encodePointsGeometryVector(points) {
32
+ return new ConstGeometryVector(points.length / 2, GEOMETRY_TYPE.POINT, VertexBufferType.VEC_2, {
33
+ geometryOffsets: new Uint32Array([0]),
34
+ partOffsets: new Uint32Array([0]),
35
+ ringOffsets: new Uint32Array([0]),
36
+ }, undefined, new Int32Array(points));
37
+ }
38
+ export function encodeMultiPointGeometryVector(points) {
39
+ const vertexBuffer = new Int32Array(points.flatMap((point) => [point[0], point[1]]));
40
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.MULTIPOINT, VertexBufferType.VEC_2, {
41
+ geometryOffsets: new Uint32Array([0, points.length]),
42
+ partOffsets: undefined,
43
+ ringOffsets: undefined,
44
+ }, undefined, vertexBuffer);
45
+ }
46
+ export function encodeLineStringGeometryVector(lines) {
47
+ const vertexBuffer = new Int32Array(lines.flatMap((line) => [line[0], line[1]]));
48
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.LINESTRING, VertexBufferType.VEC_2, {
49
+ geometryOffsets: undefined,
50
+ partOffsets: new Uint32Array([0, vertexBuffer.length / 2]),
51
+ ringOffsets: undefined,
52
+ }, undefined, vertexBuffer);
53
+ }
54
+ export function encodeLineStringGeometryVectorWithMortonEncoding(line) {
55
+ const numVertices = line.length;
56
+ const vertexBuffer = new Int32Array(numVertices);
57
+ const offsetBuffer = new Int32Array(numVertices);
58
+ for (let i = 0; i < numVertices; i++) {
59
+ vertexBuffer[i] = encode(line[i][0], line[i][1]);
60
+ offsetBuffer[i] = i;
61
+ }
62
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.LINESTRING, VertexBufferType.MORTON, {
63
+ geometryOffsets: undefined,
64
+ partOffsets: new Uint32Array([0, numVertices]),
65
+ ringOffsets: undefined,
66
+ }, offsetBuffer, vertexBuffer, DEFAULT_MORTON_SETTINGS);
67
+ }
68
+ export function encodePolygonGeometryVector(polygon) {
69
+ const vertexBuffer = new Int32Array(polygon.flatMap((ring) => ring.flatMap((point) => [point[0], point[1]])));
70
+ const ringOffsets = new Uint32Array(polygon.length + 1);
71
+ ringOffsets[0] = 0;
72
+ let ringIndex = 1;
73
+ for (const ring of polygon) {
74
+ ringOffsets[ringIndex] = ringOffsets[ringIndex - 1] + ring.length;
75
+ ringIndex++;
76
+ }
77
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.POLYGON, VertexBufferType.VEC_2, {
78
+ geometryOffsets: undefined,
79
+ partOffsets: new Uint32Array([0, polygon.length]),
80
+ ringOffsets,
81
+ }, undefined, vertexBuffer);
82
+ }
83
+ export function encodePolygonGeometryVectorWithOffsets(polygon) {
84
+ const vertexBuffer = new Int32Array(polygon.flatMap((ring) => ring.flatMap((point) => [point[0], point[1]])));
85
+ const ringOffsets = new Uint32Array(polygon.length + 1);
86
+ ringOffsets[0] = 0;
87
+ let ringIndex = 1;
88
+ for (const ring of polygon) {
89
+ ringOffsets[ringIndex] = ringOffsets[ringIndex - 1] + ring.length;
90
+ ringIndex++;
91
+ }
92
+ const offsetBuffer = new Int32Array(vertexBuffer.length / 2);
93
+ for (let i = 0; i < offsetBuffer.length; i++) {
94
+ offsetBuffer[i] = i;
95
+ }
96
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.POLYGON, VertexBufferType.VEC_2, {
97
+ geometryOffsets: undefined,
98
+ partOffsets: new Uint32Array([0, polygon.length]),
99
+ ringOffsets,
100
+ }, offsetBuffer, vertexBuffer);
101
+ }
102
+ export function encodePolygonGeometryVectorWithMortonOffsets(polygon) {
103
+ const vertexBuffer = new Int32Array(polygon.flatMap((ring) => ring.flatMap((point) => encode(point[0], point[1]))));
104
+ const ringOffsets = new Uint32Array(polygon.length + 1);
105
+ ringOffsets[0] = 0;
106
+ let ringIndex = 1;
107
+ for (const ring of polygon) {
108
+ ringOffsets[ringIndex] = ringOffsets[ringIndex - 1] + ring.length;
109
+ ringIndex++;
110
+ }
111
+ const offsetBuffer = new Int32Array(vertexBuffer.length);
112
+ for (let i = 0; i < offsetBuffer.length; i++) {
113
+ offsetBuffer[i] = i;
114
+ }
115
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.POLYGON, VertexBufferType.MORTON, {
116
+ geometryOffsets: undefined,
117
+ partOffsets: new Uint32Array([0, polygon.length]),
118
+ ringOffsets,
119
+ }, offsetBuffer, vertexBuffer, DEFAULT_MORTON_SETTINGS);
120
+ }
121
+ export function encodeMultiLineStringGeometryVector(lines) {
122
+ const vertexBuffer = new Int32Array(lines.flatMap((line) => line.flatMap((point) => [point[0], point[1]])));
123
+ const partOffsets = new Uint32Array(lines.length + 1);
124
+ partOffsets[0] = 0;
125
+ let partIndex = 1;
126
+ for (const line of lines) {
127
+ partOffsets[partIndex] = partOffsets[partIndex - 1] + line.length;
128
+ partIndex++;
129
+ }
130
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.MULTILINESTRING, VertexBufferType.VEC_2, {
131
+ geometryOffsets: new Uint32Array([0, lines.length]),
132
+ partOffsets,
133
+ ringOffsets: undefined,
134
+ }, undefined, vertexBuffer);
135
+ }
136
+ export function encodeMultiLineStringGeometryVectorWithOffsets(lines) {
137
+ const vertexBuffer = new Int32Array(lines.flatMap((line) => line.flatMap((point) => [point[0], point[1]])));
138
+ const partOffsets = new Uint32Array(lines.length + 1);
139
+ partOffsets[0] = 0;
140
+ let partIndex = 1;
141
+ for (const line of lines) {
142
+ partOffsets[partIndex] = partOffsets[partIndex - 1] + line.length;
143
+ partIndex++;
144
+ }
145
+ const offsetBuffer = new Int32Array(vertexBuffer.length / 2);
146
+ for (let i = 0; i < offsetBuffer.length; i++) {
147
+ offsetBuffer[i] = i;
148
+ }
149
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.MULTILINESTRING, VertexBufferType.VEC_2, {
150
+ geometryOffsets: new Uint32Array([0, lines.length]),
151
+ partOffsets,
152
+ ringOffsets: undefined,
153
+ }, offsetBuffer, vertexBuffer);
154
+ }
155
+ export function encodeMultiLineStringGeometryVectorWithMortonOffsets(lines) {
156
+ const vertexBuffer = new Int32Array(lines.flatMap((line) => line.flatMap((point) => encode(point[0], point[1]))));
157
+ const partOffsets = new Uint32Array(lines.length + 1);
158
+ partOffsets[0] = 0;
159
+ let partIndex = 1;
160
+ for (const line of lines) {
161
+ partOffsets[partIndex] = partOffsets[partIndex - 1] + line.length;
162
+ partIndex++;
163
+ }
164
+ const offsetBuffer = new Int32Array(vertexBuffer.length);
165
+ for (let i = 0; i < offsetBuffer.length; i++) {
166
+ offsetBuffer[i] = i;
167
+ }
168
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.MULTILINESTRING, VertexBufferType.MORTON, {
169
+ geometryOffsets: new Uint32Array([0, lines.length]),
170
+ partOffsets,
171
+ ringOffsets: undefined,
172
+ }, offsetBuffer, vertexBuffer, DEFAULT_MORTON_SETTINGS);
173
+ }
174
+ export function encodeMultiPolygonGeometryVector(polygons) {
175
+ const vertexBuffer = new Int32Array(polygons.flatMap((polygon) => polygon.flatMap((ring) => ring.flatMap((point) => [point[0], point[1]]))));
176
+ const ringOffsets = new Uint32Array(polygons.reduce((sum, polygon) => sum + polygon.length, 0) + 1);
177
+ const partOffsets = new Uint32Array(polygons.length + 1);
178
+ ringOffsets[0] = 0;
179
+ partOffsets[0] = 0;
180
+ let ringIndex = 1;
181
+ let partIndex = 1;
182
+ for (const polygon of polygons) {
183
+ for (const ring of polygon) {
184
+ ringOffsets[ringIndex] = ringOffsets[ringIndex - 1] + ring.length;
185
+ ringIndex++;
186
+ }
187
+ partOffsets[partIndex] = partOffsets[partIndex - 1] + polygon.length;
188
+ partIndex++;
189
+ }
190
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.MULTIPOLYGON, VertexBufferType.VEC_2, {
191
+ geometryOffsets: new Uint32Array([0, polygons.length]),
192
+ partOffsets,
193
+ ringOffsets,
194
+ }, undefined, vertexBuffer);
195
+ }
196
+ export function encodeMultiPolygonGeometryVectorWithOffsets(polygons) {
197
+ const vertexBuffer = new Int32Array(polygons.flatMap((polygon) => polygon.flatMap((ring) => ring.flatMap((point) => [point[0], point[1]]))));
198
+ const ringOffsets = new Uint32Array(polygons.reduce((sum, polygon) => sum + polygon.length, 0) + 1);
199
+ const partOffsets = new Uint32Array(polygons.length + 1);
200
+ ringOffsets[0] = 0;
201
+ partOffsets[0] = 0;
202
+ let ringIndex = 1;
203
+ let partIndex = 1;
204
+ for (const polygon of polygons) {
205
+ for (const ring of polygon) {
206
+ ringOffsets[ringIndex] = ringOffsets[ringIndex - 1] + ring.length;
207
+ ringIndex++;
208
+ }
209
+ partOffsets[partIndex] = partOffsets[partIndex - 1] + polygon.length;
210
+ partIndex++;
211
+ }
212
+ const offsetBuffer = new Int32Array(vertexBuffer.length / 2);
213
+ for (let i = 0; i < offsetBuffer.length; i++) {
214
+ offsetBuffer[i] = i;
215
+ }
216
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.MULTIPOLYGON, VertexBufferType.VEC_2, {
217
+ geometryOffsets: new Uint32Array([0, polygons.length]),
218
+ partOffsets,
219
+ ringOffsets,
220
+ }, offsetBuffer, vertexBuffer);
221
+ }
222
+ export function encodeMultiPolygonGeometryVectorWithMortonOffsets(polygons) {
223
+ const vertexBuffer = new Int32Array(polygons.flatMap((polygon) => polygon.flatMap((ring) => ring.flatMap((point) => encode(point[0], point[1])))));
224
+ const ringOffsets = new Uint32Array(polygons.reduce((sum, polygon) => sum + polygon.length, 0) + 1);
225
+ const partOffsets = new Uint32Array(polygons.length + 1);
226
+ ringOffsets[0] = 0;
227
+ partOffsets[0] = 0;
228
+ let ringIndex = 1;
229
+ let partIndex = 1;
230
+ for (const polygon of polygons) {
231
+ for (const ring of polygon) {
232
+ ringOffsets[ringIndex] = ringOffsets[ringIndex - 1] + ring.length;
233
+ ringIndex++;
234
+ }
235
+ partOffsets[partIndex] = partOffsets[partIndex - 1] + polygon.length;
236
+ partIndex++;
237
+ }
238
+ const offsetBuffer = new Int32Array(vertexBuffer.length);
239
+ for (let i = 0; i < offsetBuffer.length; i++) {
240
+ offsetBuffer[i] = i;
241
+ }
242
+ return new ConstGeometryVector(1, GEOMETRY_TYPE.MULTIPOLYGON, VertexBufferType.MORTON, {
243
+ geometryOffsets: new Uint32Array([0, polygons.length]),
244
+ partOffsets,
245
+ ringOffsets,
246
+ }, offsetBuffer, vertexBuffer, DEFAULT_MORTON_SETTINGS);
247
+ }
248
+ //# sourceMappingURL=constGeometryVectorEncoder.js.map