@loaders.gl/pointclouds 5.0.0-beta.2 → 5.0.0-beta.4

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.
@@ -28,7 +28,7 @@ __export(las_loader_shared_exports, {
28
28
  module.exports = __toCommonJS(las_loader_shared_exports);
29
29
  var import_schema = require("@loaders.gl/core/schema");
30
30
  var import_las_format = require("./las-format.cjs");
31
- var VERSION = true ? "5.0.0-beta.2" : "latest";
31
+ var VERSION = true ? "5.0.0-beta.4" : "latest";
32
32
  var DEFAULT_LAS_SHAPE = "arrow-table";
33
33
  function getLASShape(options) {
34
34
  return options?.las?.shape || DEFAULT_LAS_SHAPE;
@@ -5,7 +5,7 @@ import { convertColorArrayToFloat16, convertColorArrayToFloat32 } from '@loaders
5
5
  import { LASFormat } from "./las-format.js";
6
6
  // __VERSION__ is injected by babel-plugin-version-inline
7
7
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
- const VERSION = typeof "5.0.0-beta.2" !== 'undefined' ? "5.0.0-beta.2" : 'latest';
8
+ const VERSION = typeof "5.0.0-beta.4" !== 'undefined' ? "5.0.0-beta.4" : 'latest';
9
9
  /** Default output shape for LAS and LAZ loaders. */
10
10
  export const DEFAULT_LAS_SHAPE = 'arrow-table';
11
11
  /** Resolve the LAS output shape, including the Arrow-primary default. */
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(las_writer_exports);
26
26
  var import_loader_utils = require("@loaders.gl/core/loader-utils");
27
27
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
28
28
  var import_las_format = require("./las-format.cjs");
29
- var VERSION = true ? "5.0.0-beta.2" : "latest";
29
+ var VERSION = true ? "5.0.0-beta.4" : "latest";
30
30
  var LAS_HEADER_LENGTH = 227;
31
31
  var LAS_1_4_HEADER_LENGTH = 375;
32
32
  var LAS_1_5_HEADER_LENGTH = 393;
@@ -6,7 +6,7 @@ import { convertMeshToTable, convertTableToMesh } from '@loaders.gl/core/schema-
6
6
  import { LASFormat } from "./las-format.js";
7
7
  // __VERSION__ is injected by babel-plugin-version-inline
8
8
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
9
- const VERSION = typeof "5.0.0-beta.2" !== 'undefined' ? "5.0.0-beta.2" : 'latest';
9
+ const VERSION = typeof "5.0.0-beta.4" !== 'undefined' ? "5.0.0-beta.4" : 'latest';
10
10
  const LAS_HEADER_LENGTH = 227;
11
11
  const LAS_1_4_HEADER_LENGTH = 375;
12
12
  const LAS_1_5_HEADER_LENGTH = 393;
@@ -133,7 +133,12 @@ function populateLASTypedExtraBytes(rawExtraBytes, pointCount, extraByteCount, a
133
133
  }
134
134
  }
135
135
  function readLASString(bytes, offset, length) {
136
- return new TextDecoder().decode(bytes.subarray(offset, offset + length)).replace(/\0+$/, "").trim();
136
+ const decoded = new TextDecoder().decode(bytes.subarray(offset, offset + length));
137
+ let end = decoded.length;
138
+ while (end > 0 && decoded[end - 1] === "\0") {
139
+ end--;
140
+ }
141
+ return decoded.slice(0, end).trim();
137
142
  }
138
143
  function sanitizeExtraBytesName(name) {
139
144
  return name.trim().replace(/[^A-Za-z0-9_]+/g, "_");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/las/lib/las-extra-bytes.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LASExtraBytesDescriptor} from './las-types';\n\n/** Typed-array values supported for LAS Extra Bytes Arrow attributes. */\nexport type LASTypedExtraBytesValue =\n | Uint8Array\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\n/** Prepared typed LAS Extra Bytes attribute and its source-record layout. */\nexport type LASTypedExtraBytesAttribute = {\n /** Stable Arrow attribute name. */\n name: string;\n /** Typed output values. */\n value: LASTypedExtraBytesValue;\n /** Number of components per point. */\n size: number;\n /** LAS scalar data type code. */\n scalarDataType: number;\n /** Byte offset within the packed Extra Bytes record. */\n byteOffset: number;\n /** Total source byte length per point. */\n byteLength: number;\n /** Per-component scales. */\n scales: number[];\n /** Per-component offsets. */\n offsets: number[];\n /** Whether transformed integer values require Float64 output. */\n outputFloat64: boolean;\n};\n\n/** Parse the 192-byte descriptors in an LAS Extra Bytes VLR payload. */\nexport function parseLASExtraBytes(data: Uint8Array): LASExtraBytesDescriptor[] {\n if (data.byteLength % 192 !== 0) {\n throw new Error(`LAS Extra Bytes VLR length ${data.byteLength} is not a multiple of 192`);\n }\n const descriptors: LASExtraBytesDescriptor[] = [];\n const dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n for (let descriptorOffset = 0; descriptorOffset < data.byteLength; descriptorOffset += 192) {\n const scales: [number, number, number] = [\n dataView.getFloat64(descriptorOffset + 112, true),\n dataView.getFloat64(descriptorOffset + 120, true),\n dataView.getFloat64(descriptorOffset + 128, true)\n ];\n const offsets: [number, number, number] = [\n dataView.getFloat64(descriptorOffset + 136, true),\n dataView.getFloat64(descriptorOffset + 144, true),\n dataView.getFloat64(descriptorOffset + 152, true)\n ];\n descriptors.push({\n dataType: data[descriptorOffset + 2],\n options: data[descriptorOffset + 3],\n name: readLASString(data, descriptorOffset + 4, 32),\n description: readLASString(data, descriptorOffset + 160, 32),\n scale: scales[0],\n offset: offsets[0],\n scales,\n offsets,\n data: data.slice(descriptorOffset, descriptorOffset + 192)\n });\n }\n return descriptors;\n}\n\n/** Allocate typed Arrow attributes described by an LAS Extra Bytes VLR. */\nexport function createLASTypedExtraBytesAttributes(\n pointCount: number,\n descriptors: readonly LASExtraBytesDescriptor[],\n extraByteCount: number\n): LASTypedExtraBytesAttribute[] {\n let byteOffset = 0;\n const usedNames = new Set<string>();\n const attributes: LASTypedExtraBytesAttribute[] = [];\n for (let descriptorIndex = 0; descriptorIndex < descriptors.length; descriptorIndex++) {\n const descriptor = descriptors[descriptorIndex];\n const scalarDataType = getExtraBytesScalarDataType(descriptor.dataType);\n const size = getExtraBytesComponentCount(descriptor.dataType);\n const scalarByteLength = getExtraBytesScalarByteLength(scalarDataType);\n const byteLength = scalarByteLength * size;\n if (descriptor.dataType < 1 || descriptor.dataType > 30 || !byteLength) {\n throw new Error(`Unsupported typed LAS Extra Bytes data type ${descriptor.dataType}`);\n }\n let name = `EXTRA_BYTES_${sanitizeExtraBytesName(descriptor.name)}`;\n if (name === 'EXTRA_BYTES_') {\n name = `EXTRA_BYTES_${descriptorIndex}`;\n }\n const baseName = name;\n let suffix = 1;\n while (usedNames.has(name)) {\n name = `${baseName}_${suffix++}`;\n }\n usedNames.add(name);\n const scales =\n descriptor.options & 0x08 ? descriptor.scales.slice(0, size) : new Array(size).fill(1);\n const offsets =\n descriptor.options & 0x10 ? descriptor.offsets.slice(0, size) : new Array(size).fill(0);\n const isBigInt = scalarDataType === 7 || scalarDataType === 8;\n const outputFloat64 =\n scalarDataType !== 10 &&\n (isBigInt\n ? scales.some(scale => scale !== 1) || offsets.some(offset => offset !== 0)\n : Boolean(descriptor.options & 0x18));\n attributes.push({\n name,\n value: createLASTypedExtraBytesValue(scalarDataType, pointCount * size, outputFloat64),\n size,\n scalarDataType,\n byteOffset,\n byteLength,\n outputFloat64,\n scales,\n offsets\n });\n byteOffset += byteLength;\n }\n if (byteOffset !== extraByteCount) {\n throw new Error(\n `LAS Extra Bytes descriptors use ${byteOffset} bytes; point records provide ${extraByteCount}`\n );\n }\n return attributes;\n}\n\n/** Populate typed attributes from packed Extra Bytes records. */\nexport function populateLASTypedExtraBytes(\n rawExtraBytes: Uint8Array,\n pointCount: number,\n extraByteCount: number,\n attributes: readonly LASTypedExtraBytesAttribute[]\n): void {\n if (rawExtraBytes.byteLength < pointCount * extraByteCount) {\n throw new Error('Packed LAS Extra Bytes data is truncated');\n }\n const dataView = new DataView(\n rawExtraBytes.buffer,\n rawExtraBytes.byteOffset,\n rawExtraBytes.byteLength\n );\n for (let pointIndex = 0; pointIndex < pointCount; pointIndex++) {\n const recordOffset = pointIndex * extraByteCount;\n for (const attribute of attributes) {\n const targetOffset = pointIndex * attribute.size;\n const sourceOffset = recordOffset + attribute.byteOffset;\n const scalarByteLength = getExtraBytesScalarByteLength(attribute.scalarDataType);\n for (let componentIndex = 0; componentIndex < attribute.size; componentIndex++) {\n populateLASTypedExtraBytesComponent(\n dataView,\n sourceOffset + componentIndex * scalarByteLength,\n attribute,\n targetOffset + componentIndex,\n componentIndex\n );\n }\n }\n }\n}\n\nfunction readLASString(bytes: Uint8Array, offset: number, length: number): string {\n return new TextDecoder()\n .decode(bytes.subarray(offset, offset + length))\n .replace(/\\0+$/, '')\n .trim();\n}\n\nfunction sanitizeExtraBytesName(name: string): string {\n return name.trim().replace(/[^A-Za-z0-9_]+/g, '_');\n}\n\nfunction getExtraBytesScalarDataType(dataType: number): number {\n return dataType > 20 ? dataType - 20 : dataType > 10 ? dataType - 10 : dataType;\n}\n\nfunction getExtraBytesComponentCount(dataType: number): number {\n return dataType > 20 ? 3 : dataType > 10 ? 2 : 1;\n}\n\nfunction getExtraBytesScalarByteLength(dataType: number): number {\n if (dataType <= 2) return 1;\n if (dataType <= 4) return 2;\n if (dataType <= 6 || dataType === 9) return 4;\n if (dataType === 7 || dataType === 8 || dataType === 10) return 8;\n return 0;\n}\n\nfunction readExtraBytesValue(\n dataView: DataView,\n offset: number,\n scalarDataType: number\n): number | bigint {\n switch (scalarDataType) {\n case 1:\n return dataView.getUint8(offset);\n case 2:\n return dataView.getInt8(offset);\n case 3:\n return dataView.getUint16(offset, true);\n case 4:\n return dataView.getInt16(offset, true);\n case 5:\n return dataView.getUint32(offset, true);\n case 6:\n return dataView.getInt32(offset, true);\n case 7:\n return dataView.getBigUint64(offset, true);\n case 8:\n return dataView.getBigInt64(offset, true);\n case 9:\n return dataView.getFloat32(offset, true);\n case 10:\n return dataView.getFloat64(offset, true);\n default:\n throw new Error(`Unsupported typed LAS Extra Bytes scalar data type ${scalarDataType}`);\n }\n}\n\n/** Allocate the typed-array representation for one LAS Extra Bytes scalar type. */\nexport function createLASTypedExtraBytesValue(\n scalarDataType: number,\n length: number,\n outputFloat64: boolean\n): LASTypedExtraBytesValue {\n if (outputFloat64 && scalarDataType !== 10) return new Float64Array(length);\n switch (scalarDataType) {\n case 1:\n return new Uint8Array(length);\n case 2:\n return new Int8Array(length);\n case 3:\n return new Uint16Array(length);\n case 4:\n return new Int16Array(length);\n case 5:\n return new Uint32Array(length);\n case 6:\n return new Int32Array(length);\n case 7:\n return new BigUint64Array(length);\n case 8:\n return new BigInt64Array(length);\n case 9:\n return new Float32Array(length);\n case 10:\n return new Float64Array(length);\n default:\n throw new Error(`Unsupported typed LAS Extra Bytes scalar data type ${scalarDataType}`);\n }\n}\n\n/** Decode one descriptor component, retaining integer precision unless a transform is requested. */\nexport function populateLASTypedExtraBytesComponent(\n dataView: DataView,\n sourceOffset: number,\n attribute: LASTypedExtraBytesAttribute,\n targetOffset: number,\n componentIndex: number\n): void {\n const value = readExtraBytesValue(dataView, sourceOffset, attribute.scalarDataType);\n if (attribute.value instanceof BigInt64Array || attribute.value instanceof BigUint64Array) {\n attribute.value[targetOffset] = value as bigint;\n } else {\n attribute.value[targetOffset] =\n Number(value) * attribute.scales[componentIndex] + attribute.offsets[componentIndex];\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LASExtraBytesDescriptor} from './las-types';\n\n/** Typed-array values supported for LAS Extra Bytes Arrow attributes. */\nexport type LASTypedExtraBytesValue =\n | Uint8Array\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\n/** Prepared typed LAS Extra Bytes attribute and its source-record layout. */\nexport type LASTypedExtraBytesAttribute = {\n /** Stable Arrow attribute name. */\n name: string;\n /** Typed output values. */\n value: LASTypedExtraBytesValue;\n /** Number of components per point. */\n size: number;\n /** LAS scalar data type code. */\n scalarDataType: number;\n /** Byte offset within the packed Extra Bytes record. */\n byteOffset: number;\n /** Total source byte length per point. */\n byteLength: number;\n /** Per-component scales. */\n scales: number[];\n /** Per-component offsets. */\n offsets: number[];\n /** Whether transformed integer values require Float64 output. */\n outputFloat64: boolean;\n};\n\n/** Parse the 192-byte descriptors in an LAS Extra Bytes VLR payload. */\nexport function parseLASExtraBytes(data: Uint8Array): LASExtraBytesDescriptor[] {\n if (data.byteLength % 192 !== 0) {\n throw new Error(`LAS Extra Bytes VLR length ${data.byteLength} is not a multiple of 192`);\n }\n const descriptors: LASExtraBytesDescriptor[] = [];\n const dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n for (let descriptorOffset = 0; descriptorOffset < data.byteLength; descriptorOffset += 192) {\n const scales: [number, number, number] = [\n dataView.getFloat64(descriptorOffset + 112, true),\n dataView.getFloat64(descriptorOffset + 120, true),\n dataView.getFloat64(descriptorOffset + 128, true)\n ];\n const offsets: [number, number, number] = [\n dataView.getFloat64(descriptorOffset + 136, true),\n dataView.getFloat64(descriptorOffset + 144, true),\n dataView.getFloat64(descriptorOffset + 152, true)\n ];\n descriptors.push({\n dataType: data[descriptorOffset + 2],\n options: data[descriptorOffset + 3],\n name: readLASString(data, descriptorOffset + 4, 32),\n description: readLASString(data, descriptorOffset + 160, 32),\n scale: scales[0],\n offset: offsets[0],\n scales,\n offsets,\n data: data.slice(descriptorOffset, descriptorOffset + 192)\n });\n }\n return descriptors;\n}\n\n/** Allocate typed Arrow attributes described by an LAS Extra Bytes VLR. */\nexport function createLASTypedExtraBytesAttributes(\n pointCount: number,\n descriptors: readonly LASExtraBytesDescriptor[],\n extraByteCount: number\n): LASTypedExtraBytesAttribute[] {\n let byteOffset = 0;\n const usedNames = new Set<string>();\n const attributes: LASTypedExtraBytesAttribute[] = [];\n for (let descriptorIndex = 0; descriptorIndex < descriptors.length; descriptorIndex++) {\n const descriptor = descriptors[descriptorIndex];\n const scalarDataType = getExtraBytesScalarDataType(descriptor.dataType);\n const size = getExtraBytesComponentCount(descriptor.dataType);\n const scalarByteLength = getExtraBytesScalarByteLength(scalarDataType);\n const byteLength = scalarByteLength * size;\n if (descriptor.dataType < 1 || descriptor.dataType > 30 || !byteLength) {\n throw new Error(`Unsupported typed LAS Extra Bytes data type ${descriptor.dataType}`);\n }\n let name = `EXTRA_BYTES_${sanitizeExtraBytesName(descriptor.name)}`;\n if (name === 'EXTRA_BYTES_') {\n name = `EXTRA_BYTES_${descriptorIndex}`;\n }\n const baseName = name;\n let suffix = 1;\n while (usedNames.has(name)) {\n name = `${baseName}_${suffix++}`;\n }\n usedNames.add(name);\n const scales =\n descriptor.options & 0x08 ? descriptor.scales.slice(0, size) : new Array(size).fill(1);\n const offsets =\n descriptor.options & 0x10 ? descriptor.offsets.slice(0, size) : new Array(size).fill(0);\n const isBigInt = scalarDataType === 7 || scalarDataType === 8;\n const outputFloat64 =\n scalarDataType !== 10 &&\n (isBigInt\n ? scales.some(scale => scale !== 1) || offsets.some(offset => offset !== 0)\n : Boolean(descriptor.options & 0x18));\n attributes.push({\n name,\n value: createLASTypedExtraBytesValue(scalarDataType, pointCount * size, outputFloat64),\n size,\n scalarDataType,\n byteOffset,\n byteLength,\n outputFloat64,\n scales,\n offsets\n });\n byteOffset += byteLength;\n }\n if (byteOffset !== extraByteCount) {\n throw new Error(\n `LAS Extra Bytes descriptors use ${byteOffset} bytes; point records provide ${extraByteCount}`\n );\n }\n return attributes;\n}\n\n/** Populate typed attributes from packed Extra Bytes records. */\nexport function populateLASTypedExtraBytes(\n rawExtraBytes: Uint8Array,\n pointCount: number,\n extraByteCount: number,\n attributes: readonly LASTypedExtraBytesAttribute[]\n): void {\n if (rawExtraBytes.byteLength < pointCount * extraByteCount) {\n throw new Error('Packed LAS Extra Bytes data is truncated');\n }\n const dataView = new DataView(\n rawExtraBytes.buffer,\n rawExtraBytes.byteOffset,\n rawExtraBytes.byteLength\n );\n for (let pointIndex = 0; pointIndex < pointCount; pointIndex++) {\n const recordOffset = pointIndex * extraByteCount;\n for (const attribute of attributes) {\n const targetOffset = pointIndex * attribute.size;\n const sourceOffset = recordOffset + attribute.byteOffset;\n const scalarByteLength = getExtraBytesScalarByteLength(attribute.scalarDataType);\n for (let componentIndex = 0; componentIndex < attribute.size; componentIndex++) {\n populateLASTypedExtraBytesComponent(\n dataView,\n sourceOffset + componentIndex * scalarByteLength,\n attribute,\n targetOffset + componentIndex,\n componentIndex\n );\n }\n }\n }\n}\n\nfunction readLASString(bytes: Uint8Array, offset: number, length: number): string {\n const decoded = new TextDecoder().decode(bytes.subarray(offset, offset + length));\n let end = decoded.length;\n while (end > 0 && decoded[end - 1] === '\\0') {\n end--;\n }\n return decoded.slice(0, end).trim();\n}\n\nfunction sanitizeExtraBytesName(name: string): string {\n return name.trim().replace(/[^A-Za-z0-9_]+/g, '_');\n}\n\nfunction getExtraBytesScalarDataType(dataType: number): number {\n return dataType > 20 ? dataType - 20 : dataType > 10 ? dataType - 10 : dataType;\n}\n\nfunction getExtraBytesComponentCount(dataType: number): number {\n return dataType > 20 ? 3 : dataType > 10 ? 2 : 1;\n}\n\nfunction getExtraBytesScalarByteLength(dataType: number): number {\n if (dataType <= 2) return 1;\n if (dataType <= 4) return 2;\n if (dataType <= 6 || dataType === 9) return 4;\n if (dataType === 7 || dataType === 8 || dataType === 10) return 8;\n return 0;\n}\n\nfunction readExtraBytesValue(\n dataView: DataView,\n offset: number,\n scalarDataType: number\n): number | bigint {\n switch (scalarDataType) {\n case 1:\n return dataView.getUint8(offset);\n case 2:\n return dataView.getInt8(offset);\n case 3:\n return dataView.getUint16(offset, true);\n case 4:\n return dataView.getInt16(offset, true);\n case 5:\n return dataView.getUint32(offset, true);\n case 6:\n return dataView.getInt32(offset, true);\n case 7:\n return dataView.getBigUint64(offset, true);\n case 8:\n return dataView.getBigInt64(offset, true);\n case 9:\n return dataView.getFloat32(offset, true);\n case 10:\n return dataView.getFloat64(offset, true);\n default:\n throw new Error(`Unsupported typed LAS Extra Bytes scalar data type ${scalarDataType}`);\n }\n}\n\n/** Allocate the typed-array representation for one LAS Extra Bytes scalar type. */\nexport function createLASTypedExtraBytesValue(\n scalarDataType: number,\n length: number,\n outputFloat64: boolean\n): LASTypedExtraBytesValue {\n if (outputFloat64 && scalarDataType !== 10) return new Float64Array(length);\n switch (scalarDataType) {\n case 1:\n return new Uint8Array(length);\n case 2:\n return new Int8Array(length);\n case 3:\n return new Uint16Array(length);\n case 4:\n return new Int16Array(length);\n case 5:\n return new Uint32Array(length);\n case 6:\n return new Int32Array(length);\n case 7:\n return new BigUint64Array(length);\n case 8:\n return new BigInt64Array(length);\n case 9:\n return new Float32Array(length);\n case 10:\n return new Float64Array(length);\n default:\n throw new Error(`Unsupported typed LAS Extra Bytes scalar data type ${scalarDataType}`);\n }\n}\n\n/** Decode one descriptor component, retaining integer precision unless a transform is requested. */\nexport function populateLASTypedExtraBytesComponent(\n dataView: DataView,\n sourceOffset: number,\n attribute: LASTypedExtraBytesAttribute,\n targetOffset: number,\n componentIndex: number\n): void {\n const value = readExtraBytesValue(dataView, sourceOffset, attribute.scalarDataType);\n if (attribute.value instanceof BigInt64Array || attribute.value instanceof BigUint64Array) {\n attribute.value[targetOffset] = value as bigint;\n } else {\n attribute.value[targetOffset] =\n Number(value) * attribute.scales[componentIndex] + attribute.offsets[componentIndex];\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"las-extra-bytes.d.ts","sourceRoot":"","sources":["../../../src/las/lib/las-extra-bytes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,uBAAuB,EAAC,uBAAoB;AAEzD,yEAAyE;AACzE,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,SAAS,GACT,WAAW,GACX,UAAU,GACV,WAAW,GACX,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,cAAc,CAAC;AAEnB,6EAA6E;AAC7E,MAAM,MAAM,2BAA2B,GAAG;IACxC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,uBAAuB,EAAE,CA8B9E;AAED,2EAA2E;AAC3E,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,SAAS,uBAAuB,EAAE,EAC/C,cAAc,EAAE,MAAM,GACrB,2BAA2B,EAAE,CAoD/B;AAED,iEAAiE;AACjE,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,UAAU,EACzB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,SAAS,2BAA2B,EAAE,GACjD,IAAI,CA0BN;AA4DD,mFAAmF;AACnF,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,uBAAuB,CA0BzB;AAED,oGAAoG;AACpG,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,2BAA2B,EACtC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB,IAAI,CAQN"}
1
+ {"version":3,"file":"las-extra-bytes.d.ts","sourceRoot":"","sources":["../../../src/las/lib/las-extra-bytes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,uBAAuB,EAAC,uBAAoB;AAEzD,yEAAyE;AACzE,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,SAAS,GACT,WAAW,GACX,UAAU,GACV,WAAW,GACX,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,cAAc,CAAC;AAEnB,6EAA6E;AAC7E,MAAM,MAAM,2BAA2B,GAAG;IACxC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,uBAAuB,EAAE,CA8B9E;AAED,2EAA2E;AAC3E,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,SAAS,uBAAuB,EAAE,EAC/C,cAAc,EAAE,MAAM,GACrB,2BAA2B,EAAE,CAoD/B;AAED,iEAAiE;AACjE,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,UAAU,EACzB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,SAAS,2BAA2B,EAAE,GACjD,IAAI,CA0BN;AA8DD,mFAAmF;AACnF,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GACrB,uBAAuB,CA0BzB;AAED,oGAAoG;AACpG,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,2BAA2B,EACtC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB,IAAI,CAQN"}
@@ -101,10 +101,12 @@ export function populateLASTypedExtraBytes(rawExtraBytes, pointCount, extraByteC
101
101
  }
102
102
  }
103
103
  function readLASString(bytes, offset, length) {
104
- return new TextDecoder()
105
- .decode(bytes.subarray(offset, offset + length))
106
- .replace(/\0+$/, '')
107
- .trim();
104
+ const decoded = new TextDecoder().decode(bytes.subarray(offset, offset + length));
105
+ let end = decoded.length;
106
+ while (end > 0 && decoded[end - 1] === '\0') {
107
+ end--;
108
+ }
109
+ return decoded.slice(0, end).trim();
108
110
  }
109
111
  function sanitizeExtraBytesName(name) {
110
112
  return name.trim().replace(/[^A-Za-z0-9_]+/g, '_');
@@ -1 +1 @@
1
- {"version":3,"file":"las-extra-bytes.js","sourceRoot":"","sources":["../../../src/las/lib/las-extra-bytes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"las-extra-bytes.js","sourceRoot":"","sources":["../../../src/las/lib/las-extra-bytes.ts"],"names":[],"mappings":"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"}