@loaders.gl/las 4.4.0-alpha.1 → 4.4.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/dist.dev.js +1022 -77
  2. package/dist/dist.min.js +21 -21
  3. package/dist/index.cjs +1024 -79
  4. package/dist/index.cjs.map +4 -4
  5. package/dist/index.d.ts +4 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -1
  8. package/dist/index.js.map +1 -0
  9. package/dist/las-arrow-loader.d.ts +10 -8
  10. package/dist/las-arrow-loader.d.ts.map +1 -1
  11. package/dist/las-arrow-loader.js +5 -4
  12. package/dist/las-arrow-loader.js.map +1 -0
  13. package/dist/las-format.d.ts +2 -2
  14. package/dist/las-format.js +3 -2
  15. package/dist/las-format.js.map +1 -0
  16. package/dist/las-loader.d.ts +2 -31
  17. package/dist/las-loader.d.ts.map +1 -1
  18. package/dist/las-loader.js +2 -20
  19. package/dist/las-loader.js.map +1 -0
  20. package/dist/las-worker.js +65 -71
  21. package/dist/laz-rs-loader.d.ts +29 -0
  22. package/dist/laz-rs-loader.d.ts.map +1 -0
  23. package/dist/laz-rs-loader.js +17 -0
  24. package/dist/laz-rs-loader.js.map +1 -0
  25. package/dist/lazperf-loader.d.ts +31 -0
  26. package/dist/lazperf-loader.d.ts.map +1 -0
  27. package/dist/lazperf-loader.js +15 -0
  28. package/dist/lazperf-loader.js.map +1 -0
  29. package/dist/lib/get-las-schema.d.ts +1 -1
  30. package/dist/lib/get-las-schema.js +2 -1
  31. package/dist/lib/get-las-schema.js.map +1 -0
  32. package/dist/lib/las-types.d.ts +1 -0
  33. package/dist/lib/las-types.d.ts.map +1 -1
  34. package/dist/lib/las-types.js +1 -0
  35. package/dist/lib/las-types.js.map +1 -0
  36. package/dist/lib/{laslaz-decoder.d.ts → laz-perf/laslaz-decoder.d.ts} +1 -1
  37. package/dist/lib/laz-perf/laslaz-decoder.d.ts.map +1 -0
  38. package/dist/lib/{laslaz-decoder.js → laz-perf/laslaz-decoder.js} +4 -2
  39. package/dist/lib/laz-perf/laslaz-decoder.js.map +1 -0
  40. package/dist/lib/{parse-las.d.ts → laz-perf/parse-las.d.ts} +3 -3
  41. package/dist/lib/laz-perf/parse-las.d.ts.map +1 -0
  42. package/dist/lib/{parse-las.js → laz-perf/parse-las.js} +6 -6
  43. package/dist/lib/laz-perf/parse-las.js.map +1 -0
  44. package/dist/lib/laz-rs-wasm/laslaz-decoder.d.ts +134 -0
  45. package/dist/lib/laz-rs-wasm/laslaz-decoder.d.ts.map +1 -0
  46. package/dist/lib/laz-rs-wasm/laslaz-decoder.js +446 -0
  47. package/dist/lib/laz-rs-wasm/laslaz-decoder.js.map +1 -0
  48. package/dist/lib/laz-rs-wasm/parse-las.d.ts +18 -0
  49. package/dist/lib/laz-rs-wasm/parse-las.d.ts.map +1 -0
  50. package/dist/lib/laz-rs-wasm/parse-las.js +188 -0
  51. package/dist/lib/laz-rs-wasm/parse-las.js.map +1 -0
  52. package/dist/libs/laz-perf/laz-perf.d.ts.map +1 -0
  53. package/dist/{lib/libs → libs/laz-perf}/laz-perf.js +1 -0
  54. package/dist/libs/laz-perf/laz-perf.js.map +1 -0
  55. package/dist/libs/laz-rs-wasm/laz_rs_wasm.d.ts +95 -0
  56. package/dist/libs/laz-rs-wasm/laz_rs_wasm.d.ts.map +1 -0
  57. package/dist/libs/laz-rs-wasm/laz_rs_wasm.js +425 -0
  58. package/dist/libs/laz-rs-wasm/laz_rs_wasm.js.map +1 -0
  59. package/dist/workers/las-worker.js +1 -0
  60. package/dist/workers/las-worker.js.map +1 -0
  61. package/package.json +9 -6
  62. package/src/index.ts +8 -1
  63. package/src/las-arrow-loader.ts +6 -5
  64. package/src/las-format.ts +2 -2
  65. package/src/las-loader.ts +1 -23
  66. package/src/laz-rs-loader.ts +22 -0
  67. package/src/lazperf-loader.ts +22 -0
  68. package/src/lib/get-las-schema.ts +1 -1
  69. package/src/lib/las-types.ts +1 -0
  70. package/src/lib/{laslaz-decoder.ts → laz-perf/laslaz-decoder.ts} +4 -3
  71. package/src/lib/{parse-las.ts → laz-perf/parse-las.ts} +7 -10
  72. package/src/lib/laz-rs-wasm/laslaz-decoder.ts +528 -0
  73. package/src/lib/laz-rs-wasm/parse-las.ts +232 -0
  74. package/src/libs/laz-rs-wasm/laz_rs_wasm.d.ts +80 -0
  75. package/src/libs/laz-rs-wasm/laz_rs_wasm.js +477 -0
  76. package/src/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  77. package/src/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +31 -0
  78. package/src/libs/laz-rs-wasm/package.json +19 -0
  79. package/dist/lib/laslaz-decoder.d.ts.map +0 -1
  80. package/dist/lib/libs/laz-perf.d.ts.map +0 -1
  81. package/dist/lib/parse-las.d.ts.map +0 -1
  82. /package/dist/{lib/libs → libs/laz-perf}/laz-perf.d.ts +0 -0
  83. /package/src/{lib/libs → libs/laz-perf}/laz-perf.ts +0 -0
package/src/las-loader.ts CHANGED
@@ -3,10 +3,9 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  // LASER (LAS) FILE FORMAT
6
- import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
6
+ import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';
7
7
  import type {LASMesh} from './lib/las-types';
8
8
  import {LASFormat} from './las-format';
9
- import {parseLAS} from './lib/parse-las';
10
9
 
11
10
  // __VERSION__ is injected by babel-plugin-version-inline
12
11
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
@@ -26,7 +25,6 @@ export type LASLoaderOptions = LoaderOptions & {
26
25
 
27
26
  /**
28
27
  * Loader for the LAS (LASer) point cloud format
29
- * @note Does not support LAS v1.4
30
28
  */
31
29
  export const LASWorkerLoader = {
32
30
  ...LASFormat,
@@ -34,16 +32,8 @@ export const LASWorkerLoader = {
34
32
  dataType: null as unknown as LASMesh,
35
33
  batchType: null as never,
36
34
 
37
- name: 'LAS',
38
- id: 'las',
39
- module: 'las',
40
35
  version: VERSION,
41
36
  worker: true,
42
- extensions: ['las', 'laz'], // LAZ is the "compressed" flavor of LAS,
43
- mimeTypes: ['application/octet-stream'], // TODO - text version?
44
- text: true,
45
- binary: true,
46
- tests: ['LAS'],
47
37
  options: {
48
38
  las: {
49
39
  shape: 'mesh',
@@ -53,15 +43,3 @@ export const LASWorkerLoader = {
53
43
  }
54
44
  }
55
45
  } as const satisfies Loader<LASMesh, never, LASLoaderOptions>;
56
-
57
- /**
58
- * Loader for the LAS (LASer) point cloud format
59
- * @note Does not support LAS v1.4
60
- */
61
- export const LASLoader = {
62
- ...LASWorkerLoader,
63
- parse: async (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>
64
- parseLAS(arrayBuffer, options),
65
- parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>
66
- parseLAS(arrayBuffer, options)
67
- } as const satisfies LoaderWithParser<LASMesh, never, LASLoaderOptions>;
@@ -0,0 +1,22 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ // LASER (LAS) FILE FORMAT
6
+ import type {LoaderWithParser} from '@loaders.gl/loader-utils';
7
+ import type {LASLoaderOptions} from './las-loader';
8
+ import {LASWorkerLoader} from './las-loader';
9
+ import type {LASMesh} from './lib/las-types';
10
+ import {parseLAS} from './lib/laz-rs-wasm/parse-las';
11
+ import initLazRsWasm from './libs/laz-rs-wasm/laz_rs_wasm';
12
+
13
+ /**
14
+ * Loader for the LAS (LASer) point cloud format
15
+ */
16
+ export const LAZRsLoader = {
17
+ ...LASWorkerLoader,
18
+ parse: async (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) => {
19
+ await initLazRsWasm();
20
+ return parseLAS(arrayBuffer, {...options});
21
+ }
22
+ } as const satisfies LoaderWithParser<LASMesh, never, LASLoaderOptions>;
@@ -0,0 +1,22 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ // LASER (LAS) FILE FORMAT
6
+ import type {LoaderWithParser} from '@loaders.gl/loader-utils';
7
+ import type {LASLoaderOptions} from './las-loader';
8
+ import {LASWorkerLoader} from './las-loader';
9
+ import type {LASMesh} from './lib/las-types';
10
+ import {parseLAS} from './lib/laz-perf/parse-las';
11
+
12
+ /**
13
+ * Loader for the LAS (LASer) point cloud format
14
+ * @note Does not support LAS v1.4
15
+ */
16
+ export const LAZPerfLoader = {
17
+ ...LASWorkerLoader,
18
+ parse: async (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>
19
+ parseLAS(arrayBuffer, options),
20
+ parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>
21
+ parseLAS(arrayBuffer, options)
22
+ } as const satisfies LoaderWithParser<LASMesh, never, LASLoaderOptions>;
@@ -7,7 +7,7 @@ import {deduceMeshSchema} from '@loaders.gl/schema-utils';
7
7
  import type {LASHeader} from './las-types';
8
8
 
9
9
  /**
10
- * Gets schema from PLY header
10
+ * Gets schema from LAS header
11
11
  * @param lasHeader
12
12
  * @param metadata
13
13
  * @returns Schema
@@ -18,6 +18,7 @@ export type LASHeader = {
18
18
  mins?: number[];
19
19
  totalToRead: number;
20
20
  totalRead: number;
21
+ hasColor: boolean;
21
22
  versionAsString?: string;
22
23
  isCompressed?: boolean;
23
24
  };
@@ -8,8 +8,8 @@
8
8
  MIT License
9
9
  */
10
10
  // laslaz.js - treat as compiled code
11
- import type {LASHeader} from './las-types';
12
- import getModule from './libs/laz-perf';
11
+ import type {LASHeader} from '../las-types';
12
+ import getModule from '../../libs/laz-perf/laz-perf';
13
13
 
14
14
  let Module: any = null;
15
15
 
@@ -130,7 +130,8 @@ class LASLoader {
130
130
  totalToRead: 0,
131
131
  totalRead: 0,
132
132
  versionAsString: '',
133
- isCompressed: true
133
+ isCompressed: true,
134
+ hasColor: false
134
135
  };
135
136
 
136
137
  constructor(arraybuffer: ArrayBuffer) {
@@ -4,25 +4,23 @@
4
4
 
5
5
  // ported and es6-ified from https://github.com/verma/plasio/
6
6
  // import type {ArrowTable, ColumnarTable} from '@loaders.gl/schema';
7
- import type {LASLoaderOptions} from '../las-loader';
8
- import type {LASMesh, LASHeader} from './las-types';
7
+ import type {LASLoaderOptions} from '../../las-loader';
8
+ import type {LASMesh, LASHeader} from '../las-types';
9
9
  import {getMeshBoundingBox /* , convertMeshToTable */} from '@loaders.gl/schema-utils';
10
+ import {getLASSchema} from '../get-las-schema';
10
11
  import {LASFile} from './laslaz-decoder';
11
- import {getLASSchema} from './get-las-schema';
12
12
 
13
13
  type LASChunk = {
14
14
  count: number;
15
15
  buffer: ArrayBuffer;
16
16
  hasMoreData: boolean;
17
- versionAsString?: string;
18
- isCompressed?: boolean;
19
17
  };
20
18
 
21
19
  /**
22
20
  * Parsing of .las file
23
21
  * @param arrayBuffer
24
22
  * @param options
25
- * @returns LASHeader
23
+ * @returns LASMesh
26
24
  */
27
25
  export function parseLAS(arrayBuffer: ArrayBuffer, options?: LASLoaderOptions): LASMesh {
28
26
  return parseLASMesh(arrayBuffer, options);
@@ -73,7 +71,7 @@ function parseLASMesh(arrayBuffer: ArrayBuffer, options: LASLoaderOptions = {}):
73
71
  const PositionsType = options.las?.fp64 ? Float64Array : Float32Array;
74
72
  positions = new PositionsType(total * 3);
75
73
  // laslaz-decoder.js `pointFormatReaders`
76
- colors = lasHeader.pointsFormatId >= 2 ? new Uint8Array(total * 4) : null;
74
+ colors = lasHeader.hasColor ? new Uint8Array(total * 4) : null;
77
75
  intensities = new Uint16Array(total);
78
76
  classifications = new Uint8Array(total);
79
77
 
@@ -172,13 +170,12 @@ export function parseLASChunked(rawData: ArrayBuffer, skip: number, onParseData:
172
170
 
173
171
  /* eslint-disable no-constant-condition */
174
172
  while (true) {
175
- const chunk: LASChunk = dataHandler.readData(1000 * 100, 0, skip);
173
+ // @ts-ignore TODO - fix this, looks like we are not passing the right params?
174
+ const chunk: LASChunk = dataHandler.readData(1000 * 100, skip);
176
175
 
177
176
  totalRead += chunk.count;
178
177
 
179
178
  header.totalRead = totalRead;
180
- header.versionAsString = chunk.versionAsString;
181
- header.isCompressed = chunk.isCompressed;
182
179
 
183
180
  const unpacker = new Unpacker(chunk.buffer, chunk.count, header);
184
181