@loaders.gl/las 3.1.0-alpha.5 → 3.1.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.
Files changed (55) hide show
  1. package/dist/bundle.d.ts +1 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +19596 -0
  4. package/dist/es5/las-loader.js +1 -1
  5. package/dist/es5/las-loader.js.map +1 -1
  6. package/dist/es5/lib/laslaz-decoder.js +1 -1
  7. package/dist/es5/lib/laslaz-decoder.js.map +1 -1
  8. package/dist/es5/lib/libs/laz-perf.js +2 -0
  9. package/dist/es5/lib/libs/laz-perf.js.map +1 -0
  10. package/dist/es5/workers/las-worker.js +7 -3
  11. package/dist/es5/workers/las-worker.js.map +1 -0
  12. package/dist/esm/las-loader.js +1 -1
  13. package/dist/esm/las-loader.js.map +1 -1
  14. package/dist/esm/lib/laslaz-decoder.js +1 -1
  15. package/dist/esm/lib/laslaz-decoder.js.map +1 -1
  16. package/dist/esm/lib/libs/laz-perf.js +2 -0
  17. package/dist/esm/lib/libs/laz-perf.js.map +1 -0
  18. package/dist/esm/workers/las-worker.js +3 -3
  19. package/dist/esm/workers/las-worker.js.map +1 -0
  20. package/dist/index.d.ts +3 -2
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +18 -0
  23. package/dist/las-loader.d.ts +1 -0
  24. package/dist/las-loader.d.ts.map +1 -0
  25. package/dist/las-loader.js +31 -0
  26. package/dist/las-worker.js +19627 -2
  27. package/dist/lib/get-las-schema.d.ts +1 -0
  28. package/dist/lib/get-las-schema.d.ts.map +1 -0
  29. package/dist/lib/get-las-schema.js +46 -0
  30. package/dist/lib/las-types.d.ts +1 -0
  31. package/dist/lib/las-types.d.ts.map +1 -0
  32. package/dist/lib/las-types.js +2 -0
  33. package/dist/lib/laslaz-decoder.d.ts +1 -0
  34. package/dist/lib/laslaz-decoder.d.ts.map +1 -0
  35. package/dist/lib/laslaz-decoder.js +395 -0
  36. package/dist/lib/libs/laz-perf.d.ts +2 -0
  37. package/dist/lib/libs/laz-perf.d.ts.map +1 -0
  38. package/dist/lib/libs/laz-perf.js +19006 -0
  39. package/dist/lib/parse-las.d.ts +1 -0
  40. package/dist/lib/parse-las.d.ts.map +1 -0
  41. package/dist/lib/parse-las.js +189 -0
  42. package/dist/workers/las-worker.d.ts +1 -0
  43. package/dist/workers/las-worker.d.ts.map +1 -0
  44. package/dist/workers/las-worker.js +5 -0
  45. package/package.json +6 -8
  46. package/src/lib/laslaz-decoder.ts +1 -1
  47. package/src/lib/libs/laz-perf.ts +20615 -0
  48. package/src/workers/{las-worker.js → las-worker.ts} +0 -0
  49. package/dist/dist.min.js +0 -2
  50. package/dist/dist.min.js.map +0 -1
  51. package/dist/es5/libs/laz-perf.js +0 -19492
  52. package/dist/esm/libs/laz-perf.js +0 -19492
  53. package/dist/las-worker.js.map +0 -1
  54. package/dist/libs/laz-perf.d.ts +0 -3
  55. package/src/libs/laz-perf.js +0 -19492
@@ -16,3 +16,4 @@ export default function parseLAS(arrayBuffer: ArrayBuffer, options?: LASLoaderOp
16
16
  * @return parsed point cloud
17
17
  */
18
18
  export declare function parseLASChunked(rawData: ArrayBuffer, skip: number, onParseData?: any): void;
19
+ //# sourceMappingURL=parse-las.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-las.d.ts","sourceRoot":"","sources":["../../src/lib/parse-las.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAC,OAAO,EAAY,MAAM,aAAa,CAAC;AAapD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC9B,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,GAAG,UAAU,GAAG,aAAa,CAGtC;AAsHD;;;;;;GAMG;AAEH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,GAAQ,GAAG,IAAI,CAwC/F"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseLASChunked = void 0;
4
+ const schema_1 = require("@loaders.gl/schema");
5
+ const laslaz_decoder_1 = require("./laslaz-decoder");
6
+ const get_las_schema_1 = require("./get-las-schema");
7
+ /**
8
+ * Parsing of .las file
9
+ * @param arrayBuffer
10
+ * @param options
11
+ * @returns LASHeader
12
+ */
13
+ function parseLAS(arrayBuffer, options) {
14
+ const mesh = parseLASMesh(arrayBuffer, options);
15
+ return (0, schema_1.convertMesh)(mesh, options?.las?.shape || 'mesh');
16
+ }
17
+ exports.default = parseLAS;
18
+ /**
19
+ * Parsing of .las file
20
+ * @param arrayBuffer
21
+ * @param options
22
+ * @returns LASHeader
23
+ */
24
+ function parseLASMesh(arrayBuffer, options = {}) {
25
+ let pointIndex = 0;
26
+ let positions;
27
+ let colors;
28
+ let intensities;
29
+ let classifications;
30
+ let originalHeader;
31
+ const lasMesh = {
32
+ loader: 'las',
33
+ loaderData: {},
34
+ // shape: 'mesh',
35
+ schema: new schema_1.Schema([]),
36
+ header: {
37
+ vertexCount: 0,
38
+ boundingBox: [
39
+ [0, 0, 0],
40
+ [0, 0, 0]
41
+ ]
42
+ },
43
+ attributes: {},
44
+ topology: 'point-list',
45
+ mode: 0 // GL.POINTS
46
+ };
47
+ /* eslint-disable max-statements */
48
+ // @ts-ignore Possibly undefined
49
+ parseLASChunked(arrayBuffer, options.las?.skip, (decoder = {}, lasHeader) => {
50
+ if (!originalHeader) {
51
+ originalHeader = lasHeader;
52
+ const total = lasHeader.totalToRead;
53
+ const PositionsType = options.las?.fp64 ? Float64Array : Float32Array;
54
+ positions = new PositionsType(total * 3);
55
+ // laslaz-decoder.js `pointFormatReaders`
56
+ colors = lasHeader.pointsFormatId >= 2 ? new Uint8Array(total * 4) : null;
57
+ intensities = new Uint16Array(total);
58
+ classifications = new Uint8Array(total);
59
+ lasMesh.loaderData = lasHeader;
60
+ lasMesh.attributes = {
61
+ POSITION: { value: positions, size: 3 },
62
+ // non-gltf attributes, use non-capitalized names for now
63
+ intensity: { value: intensities, size: 1 },
64
+ classification: { value: classifications, size: 1 }
65
+ };
66
+ if (colors) {
67
+ lasMesh.attributes.COLOR_0 = { value: colors, size: 4 };
68
+ }
69
+ }
70
+ const batchSize = decoder.pointsCount;
71
+ const { scale: [scaleX, scaleY, scaleZ], offset: [offsetX, offsetY, offsetZ] } = lasHeader;
72
+ const twoByteColor = detectTwoByteColors(decoder, batchSize, options.las?.colorDepth);
73
+ for (let i = 0; i < batchSize; i++) {
74
+ const { position, color, intensity, classification } = decoder.getPoint(i);
75
+ positions[pointIndex * 3] = position[0] * scaleX + offsetX;
76
+ positions[pointIndex * 3 + 1] = position[1] * scaleY + offsetY;
77
+ positions[pointIndex * 3 + 2] = position[2] * scaleZ + offsetZ;
78
+ if (color && colors) {
79
+ if (twoByteColor) {
80
+ colors[pointIndex * 4] = color[0] / 256;
81
+ colors[pointIndex * 4 + 1] = color[1] / 256;
82
+ colors[pointIndex * 4 + 2] = color[2] / 256;
83
+ }
84
+ else {
85
+ colors[pointIndex * 4] = color[0];
86
+ colors[pointIndex * 4 + 1] = color[1];
87
+ colors[pointIndex * 4 + 2] = color[2];
88
+ }
89
+ colors[pointIndex * 4 + 3] = 255;
90
+ }
91
+ intensities[pointIndex] = intensity;
92
+ classifications[pointIndex] = classification;
93
+ pointIndex++;
94
+ }
95
+ const meshBatch = {
96
+ ...lasMesh,
97
+ header: {
98
+ vertexCount: lasHeader.totalRead
99
+ },
100
+ progress: lasHeader.totalRead / lasHeader.totalToRead
101
+ };
102
+ options?.onProgress?.(meshBatch);
103
+ });
104
+ /* eslint-enable max-statements */
105
+ lasMesh.header = {
106
+ vertexCount: originalHeader.totalToRead,
107
+ boundingBox: (0, schema_1.getMeshBoundingBox)(lasMesh?.attributes || {})
108
+ };
109
+ if (lasMesh) {
110
+ lasMesh.schema = (0, get_las_schema_1.getLASSchema)(lasMesh.loaderData, lasMesh.attributes);
111
+ }
112
+ return lasMesh;
113
+ }
114
+ /**
115
+ * parse laz data
116
+ * @param rawData
117
+ * @param skip
118
+ * @param onParseData
119
+ * @return parsed point cloud
120
+ */
121
+ /* eslint-enable max-statements */
122
+ function parseLASChunked(rawData, skip, onParseData = {}) {
123
+ const dataHandler = new laslaz_decoder_1.LASFile(rawData);
124
+ try {
125
+ // open data
126
+ dataHandler.open();
127
+ const header = dataHandler.getHeader();
128
+ // start loading
129
+ const Unpacker = dataHandler.getUnpacker();
130
+ const totalToRead = Math.ceil(header.pointsCount / Math.max(1, skip));
131
+ header.totalToRead = totalToRead;
132
+ let totalRead = 0;
133
+ /* eslint-disable no-constant-condition */
134
+ while (true) {
135
+ const chunk = dataHandler.readData(1000 * 100, 0, skip);
136
+ totalRead += chunk.count;
137
+ header.totalRead = totalRead;
138
+ header.versionAsString = chunk.versionAsString;
139
+ header.isCompressed = chunk.isCompressed;
140
+ const unpacker = new Unpacker(chunk.buffer, chunk.count, header);
141
+ // surface unpacker and progress via call back
142
+ // use unpacker.pointsCount and unpacker.getPoint(i) to handle data in app
143
+ onParseData(unpacker, header);
144
+ if (!chunk.hasMoreData || totalRead >= totalToRead) {
145
+ break;
146
+ }
147
+ }
148
+ }
149
+ catch (e) {
150
+ throw e;
151
+ }
152
+ finally {
153
+ dataHandler.close();
154
+ }
155
+ }
156
+ exports.parseLASChunked = parseLASChunked;
157
+ /**
158
+ * @param decoder
159
+ * @param batchSize
160
+ * @param colorDepth
161
+ * @returns boolean
162
+ */
163
+ function detectTwoByteColors(decoder = {}, batchSize, colorDepth) {
164
+ let twoByteColor = false;
165
+ switch (colorDepth) {
166
+ case 8:
167
+ twoByteColor = false;
168
+ break;
169
+ case 16:
170
+ twoByteColor = true;
171
+ break;
172
+ case 'auto':
173
+ if (decoder.getPoint(0).color) {
174
+ for (let i = 0; i < batchSize; i++) {
175
+ const { color } = decoder.getPoint(i);
176
+ // eslint-disable-next-line max-depth
177
+ if (color[0] > 255 || color[1] > 255 || color[2] > 255) {
178
+ twoByteColor = true;
179
+ }
180
+ }
181
+ }
182
+ break;
183
+ default:
184
+ // eslint-disable-next-line
185
+ console.warn('las: illegal value for options.las.colorDepth');
186
+ break;
187
+ }
188
+ return twoByteColor;
189
+ }
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=las-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"las-worker.d.ts","sourceRoot":"","sources":["../../src/workers/las-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const loader_utils_1 = require("@loaders.gl/loader-utils");
4
+ const index_1 = require("../index");
5
+ (0, loader_utils_1.createLoaderWorker)(index_1.LASLoader);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/las",
3
- "version": "3.1.0-alpha.5",
3
+ "version": "3.1.0-beta.4",
4
4
  "description": "Framework-independent loader for the LAS and LAZ formats",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -36,15 +36,13 @@
36
36
  ],
37
37
  "scripts": {
38
38
  "pre-build": "npm run build-bundle && npm run build-worker",
39
- "post-build": "tsc",
40
- "build-bundle": "webpack --display=minimal --config ../../scripts/webpack/bundle.js",
41
- "build-worker": "webpack --entry ./src/workers/las-worker.js --output ./dist/las-worker.js --config ../../scripts/webpack/worker.js"
39
+ "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/bundle.js",
40
+ "build-worker": "esbuild src/workers/las-worker.ts --bundle --outfile=dist/las-worker.js"
42
41
  },
43
42
  "dependencies": {
44
43
  "@babel/runtime": "^7.3.1",
45
- "@loaders.gl/loader-utils": "3.1.0-alpha.5",
46
- "@loaders.gl/schema": "3.1.0-alpha.5",
47
- "apache-arrow": "^4.0.0"
44
+ "@loaders.gl/loader-utils": "3.1.0-beta.4",
45
+ "@loaders.gl/schema": "3.1.0-beta.4"
48
46
  },
49
- "gitHead": "352241dd910a8c6307a235dadbe154ca915b885b"
47
+ "gitHead": "5c7c74215416b30fcea98f5cecc820c8a21023b3"
50
48
  }
@@ -5,7 +5,7 @@
5
5
  */
6
6
  // laslaz.js - treat as compiled code
7
7
  import type {LASHeader} from './las-types';
8
- import getModule from '../libs/laz-perf';
8
+ import getModule from './libs/laz-perf';
9
9
 
10
10
  let Module: any = null;
11
11