@loaders.gl/las 3.1.3 → 4.0.0-alpha.5

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 (56) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/bundle.js.map +1 -0
  3. package/dist/dist.min.js +14970 -100
  4. package/dist/index.js +8 -17
  5. package/dist/index.js.map +1 -0
  6. package/dist/las-loader.js +21 -28
  7. package/dist/las-loader.js.map +1 -0
  8. package/dist/las-worker.js +14908 -47
  9. package/dist/lib/get-las-schema.js +35 -44
  10. package/dist/lib/get-las-schema.js.map +1 -0
  11. package/dist/lib/las-types.js +2 -2
  12. package/dist/{es5/lib → lib}/las-types.js.map +0 -0
  13. package/dist/lib/laslaz-decoder.js +363 -366
  14. package/dist/lib/laslaz-decoder.js.map +1 -0
  15. package/dist/lib/libs/laz-perf.js +2 -19006
  16. package/dist/lib/libs/laz-perf.js.map +1 -0
  17. package/dist/lib/parse-las.js +178 -176
  18. package/dist/lib/parse-las.js.map +1 -0
  19. package/dist/workers/las-worker.js +4 -5
  20. package/dist/workers/las-worker.js.map +1 -0
  21. package/package.json +8 -7
  22. package/dist/es5/bundle.js +0 -7
  23. package/dist/es5/bundle.js.map +0 -1
  24. package/dist/es5/index.js +0 -61
  25. package/dist/es5/index.js.map +0 -1
  26. package/dist/es5/las-loader.js +0 -32
  27. package/dist/es5/las-loader.js.map +0 -1
  28. package/dist/es5/lib/get-las-schema.js +0 -47
  29. package/dist/es5/lib/get-las-schema.js.map +0 -1
  30. package/dist/es5/lib/las-types.js +0 -2
  31. package/dist/es5/lib/laslaz-decoder.js +0 -412
  32. package/dist/es5/lib/laslaz-decoder.js.map +0 -1
  33. package/dist/es5/lib/libs/laz-perf.js +0 -2
  34. package/dist/es5/lib/libs/laz-perf.js.map +0 -1
  35. package/dist/es5/lib/parse-las.js +0 -226
  36. package/dist/es5/lib/parse-las.js.map +0 -1
  37. package/dist/es5/workers/las-worker.js +0 -8
  38. package/dist/es5/workers/las-worker.js.map +0 -1
  39. package/dist/esm/bundle.js +0 -5
  40. package/dist/esm/bundle.js.map +0 -1
  41. package/dist/esm/index.js +0 -9
  42. package/dist/esm/index.js.map +0 -1
  43. package/dist/esm/las-loader.js +0 -24
  44. package/dist/esm/las-loader.js.map +0 -1
  45. package/dist/esm/lib/get-las-schema.js +0 -37
  46. package/dist/esm/lib/get-las-schema.js.map +0 -1
  47. package/dist/esm/lib/las-types.js +0 -2
  48. package/dist/esm/lib/las-types.js.map +0 -1
  49. package/dist/esm/lib/laslaz-decoder.js +0 -392
  50. package/dist/esm/lib/laslaz-decoder.js.map +0 -1
  51. package/dist/esm/lib/libs/laz-perf.js +0 -2
  52. package/dist/esm/lib/libs/laz-perf.js.map +0 -1
  53. package/dist/esm/lib/parse-las.js +0 -191
  54. package/dist/esm/lib/parse-las.js.map +0 -1
  55. package/dist/esm/workers/las-worker.js +0 -4
  56. package/dist/esm/workers/las-worker.js.map +0 -1
@@ -1,189 +1,191 @@
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');
1
+ import { Schema, getMeshBoundingBox, convertMesh } from '@loaders.gl/schema';
2
+ import { LASFile } from './laslaz-decoder';
3
+ import { getLASSchema } from './get-las-schema';
4
+ export default function parseLAS(arrayBuffer, options) {
5
+ var _options$las;
6
+
7
+ const mesh = parseLASMesh(arrayBuffer, options);
8
+ return convertMesh(mesh, (options === null || options === void 0 ? void 0 : (_options$las = options.las) === null || _options$las === void 0 ? void 0 : _options$las.shape) || 'mesh');
16
9
  }
17
- exports.default = parseLAS;
18
- /**
19
- * Parsing of .las file
20
- * @param arrayBuffer
21
- * @param options
22
- * @returns LASHeader
23
- */
10
+
24
11
  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
- ]
12
+ var _options$las2;
13
+
14
+ let pointIndex = 0;
15
+ let positions;
16
+ let colors;
17
+ let intensities;
18
+ let classifications;
19
+ let originalHeader;
20
+ const lasMesh = {
21
+ loader: 'las',
22
+ loaderData: {},
23
+ schema: new Schema([]),
24
+ header: {
25
+ vertexCount: 0,
26
+ boundingBox: [[0, 0, 0], [0, 0, 0]]
27
+ },
28
+ attributes: {},
29
+ topology: 'point-list',
30
+ mode: 0
31
+ };
32
+ parseLASChunked(arrayBuffer, (_options$las2 = options.las) === null || _options$las2 === void 0 ? void 0 : _options$las2.skip, (decoder = {}, lasHeader) => {
33
+ var _options$las4, _options$onProgress;
34
+
35
+ if (!originalHeader) {
36
+ var _options$las3;
37
+
38
+ originalHeader = lasHeader;
39
+ const total = lasHeader.totalToRead;
40
+ const PositionsType = (_options$las3 = options.las) !== null && _options$las3 !== void 0 && _options$las3.fp64 ? Float64Array : Float32Array;
41
+ positions = new PositionsType(total * 3);
42
+ colors = lasHeader.pointsFormatId >= 2 ? new Uint8Array(total * 4) : null;
43
+ intensities = new Uint16Array(total);
44
+ classifications = new Uint8Array(total);
45
+ lasMesh.loaderData = lasHeader;
46
+ lasMesh.attributes = {
47
+ POSITION: {
48
+ value: positions,
49
+ size: 3
42
50
  },
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++;
51
+ intensity: {
52
+ value: intensities,
53
+ size: 1
54
+ },
55
+ classification: {
56
+ value: classifications,
57
+ size: 1
94
58
  }
95
- const meshBatch = {
96
- ...lasMesh,
97
- header: {
98
- vertexCount: lasHeader.totalRead
99
- },
100
- progress: lasHeader.totalRead / lasHeader.totalToRead
59
+ };
60
+
61
+ if (colors) {
62
+ lasMesh.attributes.COLOR_0 = {
63
+ value: colors,
64
+ size: 4
101
65
  };
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);
66
+ }
111
67
  }
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
- }
68
+
69
+ const batchSize = decoder.pointsCount;
70
+ const {
71
+ scale: [scaleX, scaleY, scaleZ],
72
+ offset: [offsetX, offsetY, offsetZ]
73
+ } = lasHeader;
74
+ const twoByteColor = detectTwoByteColors(decoder, batchSize, (_options$las4 = options.las) === null || _options$las4 === void 0 ? void 0 : _options$las4.colorDepth);
75
+
76
+ for (let i = 0; i < batchSize; i++) {
77
+ const {
78
+ position,
79
+ color,
80
+ intensity,
81
+ classification
82
+ } = decoder.getPoint(i);
83
+ positions[pointIndex * 3] = position[0] * scaleX + offsetX;
84
+ positions[pointIndex * 3 + 1] = position[1] * scaleY + offsetY;
85
+ positions[pointIndex * 3 + 2] = position[2] * scaleZ + offsetZ;
86
+
87
+ if (color && colors) {
88
+ if (twoByteColor) {
89
+ colors[pointIndex * 4] = color[0] / 256;
90
+ colors[pointIndex * 4 + 1] = color[1] / 256;
91
+ colors[pointIndex * 4 + 2] = color[2] / 256;
92
+ } else {
93
+ colors[pointIndex * 4] = color[0];
94
+ colors[pointIndex * 4 + 1] = color[1];
95
+ colors[pointIndex * 4 + 2] = color[2];
147
96
  }
97
+
98
+ colors[pointIndex * 4 + 3] = 255;
99
+ }
100
+
101
+ intensities[pointIndex] = intensity;
102
+ classifications[pointIndex] = classification;
103
+ pointIndex++;
148
104
  }
149
- catch (e) {
150
- throw e;
151
- }
152
- finally {
153
- dataHandler.close();
105
+
106
+ const meshBatch = { ...lasMesh,
107
+ header: {
108
+ vertexCount: lasHeader.totalRead
109
+ },
110
+ progress: lasHeader.totalRead / lasHeader.totalToRead
111
+ };
112
+ options === null || options === void 0 ? void 0 : (_options$onProgress = options.onProgress) === null || _options$onProgress === void 0 ? void 0 : _options$onProgress.call(options, meshBatch);
113
+ });
114
+ lasMesh.header = {
115
+ vertexCount: originalHeader.totalToRead,
116
+ boundingBox: getMeshBoundingBox((lasMesh === null || lasMesh === void 0 ? void 0 : lasMesh.attributes) || {})
117
+ };
118
+
119
+ if (lasMesh) {
120
+ lasMesh.schema = getLASSchema(lasMesh.loaderData, lasMesh.attributes);
121
+ }
122
+
123
+ return lasMesh;
124
+ }
125
+
126
+ export function parseLASChunked(rawData, skip, onParseData = {}) {
127
+ const dataHandler = new LASFile(rawData);
128
+
129
+ try {
130
+ dataHandler.open();
131
+ const header = dataHandler.getHeader();
132
+ const Unpacker = dataHandler.getUnpacker();
133
+ const totalToRead = Math.ceil(header.pointsCount / Math.max(1, skip));
134
+ header.totalToRead = totalToRead;
135
+ let totalRead = 0;
136
+
137
+ while (true) {
138
+ const chunk = dataHandler.readData(1000 * 100, 0, skip);
139
+ totalRead += chunk.count;
140
+ header.totalRead = totalRead;
141
+ header.versionAsString = chunk.versionAsString;
142
+ header.isCompressed = chunk.isCompressed;
143
+ const unpacker = new Unpacker(chunk.buffer, chunk.count, header);
144
+ onParseData(unpacker, header);
145
+
146
+ if (!chunk.hasMoreData || totalRead >= totalToRead) {
147
+ break;
148
+ }
154
149
  }
150
+ } catch (e) {
151
+ throw e;
152
+ } finally {
153
+ dataHandler.close();
154
+ }
155
155
  }
156
- exports.parseLASChunked = parseLASChunked;
157
- /**
158
- * @param decoder
159
- * @param batchSize
160
- * @param colorDepth
161
- * @returns boolean
162
- */
156
+
163
157
  function detectTwoByteColors(decoder = {}, batchSize, colorDepth) {
164
- let twoByteColor = false;
165
- switch (colorDepth) {
166
- case 8:
167
- twoByteColor = false;
168
- break;
169
- case 16:
158
+ let twoByteColor = false;
159
+
160
+ switch (colorDepth) {
161
+ case 8:
162
+ twoByteColor = false;
163
+ break;
164
+
165
+ case 16:
166
+ twoByteColor = true;
167
+ break;
168
+
169
+ case 'auto':
170
+ if (decoder.getPoint(0).color) {
171
+ for (let i = 0; i < batchSize; i++) {
172
+ const {
173
+ color
174
+ } = decoder.getPoint(i);
175
+
176
+ if (color[0] > 255 || color[1] > 255 || color[2] > 255) {
170
177
  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;
178
+ }
179
+ }
180
+ }
181
+
182
+ break;
183
+
184
+ default:
185
+ console.warn('las: illegal value for options.las.colorDepth');
186
+ break;
187
+ }
188
+
189
+ return twoByteColor;
189
190
  }
191
+ //# sourceMappingURL=parse-las.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/parse-las.ts"],"names":["Schema","getMeshBoundingBox","convertMesh","LASFile","getLASSchema","parseLAS","arrayBuffer","options","mesh","parseLASMesh","las","shape","pointIndex","positions","colors","intensities","classifications","originalHeader","lasMesh","loader","loaderData","schema","header","vertexCount","boundingBox","attributes","topology","mode","parseLASChunked","skip","decoder","lasHeader","total","totalToRead","PositionsType","fp64","Float64Array","Float32Array","pointsFormatId","Uint8Array","Uint16Array","POSITION","value","size","intensity","classification","COLOR_0","batchSize","pointsCount","scale","scaleX","scaleY","scaleZ","offset","offsetX","offsetY","offsetZ","twoByteColor","detectTwoByteColors","colorDepth","i","position","color","getPoint","meshBatch","totalRead","progress","onProgress","rawData","onParseData","dataHandler","open","getHeader","Unpacker","getUnpacker","Math","ceil","max","chunk","readData","count","versionAsString","isCompressed","unpacker","buffer","hasMoreData","e","close","console","warn"],"mappings":"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","sourcesContent":["// ported and es6-ified from https://github.com/verma/plasio/\nimport type {ArrowTable, ColumnarTable} from '@loaders.gl/schema';\nimport type {LASLoaderOptions} from '../las-loader';\nimport type {LASMesh, LASHeader} from './las-types';\nimport {Schema, getMeshBoundingBox, convertMesh} from '@loaders.gl/schema';\nimport {LASFile} from './laslaz-decoder';\nimport {getLASSchema} from './get-las-schema';\n\ntype LASChunk = {\n count: number;\n buffer: ArrayBuffer;\n hasMoreData: boolean;\n versionAsString?: string;\n isCompressed?: boolean;\n};\n\n/**\n * Parsing of .las file\n * @param arrayBuffer\n * @param options\n * @returns LASHeader\n */\nexport default function parseLAS(\n arrayBuffer: ArrayBuffer,\n options?: LASLoaderOptions\n): LASMesh | ArrowTable | ColumnarTable {\n const mesh = parseLASMesh(arrayBuffer, options);\n return convertMesh(mesh, options?.las?.shape || 'mesh') as LASMesh | ArrowTable | ColumnarTable;\n}\n\n/**\n * Parsing of .las file\n * @param arrayBuffer\n * @param options\n * @returns LASHeader\n */\nfunction parseLASMesh(arrayBuffer: ArrayBuffer, options: LASLoaderOptions = {}): LASMesh {\n let pointIndex: number = 0;\n\n let positions: Float32Array | Float64Array;\n let colors: Uint8Array | null;\n let intensities: Uint16Array;\n let classifications: Uint8Array;\n let originalHeader: any;\n\n const lasMesh: LASMesh = {\n loader: 'las',\n loaderData: {} as LASHeader,\n // shape: 'mesh',\n schema: new Schema([]),\n header: {\n vertexCount: 0,\n boundingBox: [\n [0, 0, 0],\n [0, 0, 0]\n ]\n },\n attributes: {},\n topology: 'point-list',\n mode: 0 // GL.POINTS\n };\n\n /* eslint-disable max-statements */\n // @ts-ignore Possibly undefined\n parseLASChunked(arrayBuffer, options.las?.skip, (decoder: any = {}, lasHeader: LASHeader) => {\n if (!originalHeader) {\n originalHeader = lasHeader;\n const total = lasHeader.totalToRead;\n\n const PositionsType = options.las?.fp64 ? Float64Array : Float32Array;\n positions = new PositionsType(total * 3);\n // laslaz-decoder.js `pointFormatReaders`\n colors = lasHeader.pointsFormatId >= 2 ? new Uint8Array(total * 4) : null;\n intensities = new Uint16Array(total);\n classifications = new Uint8Array(total);\n\n lasMesh.loaderData = lasHeader;\n lasMesh.attributes = {\n POSITION: {value: positions, size: 3},\n // non-gltf attributes, use non-capitalized names for now\n intensity: {value: intensities, size: 1},\n classification: {value: classifications, size: 1}\n };\n\n if (colors) {\n lasMesh.attributes.COLOR_0 = {value: colors, size: 4};\n }\n }\n\n const batchSize = decoder.pointsCount;\n const {\n scale: [scaleX, scaleY, scaleZ],\n offset: [offsetX, offsetY, offsetZ]\n } = lasHeader;\n\n const twoByteColor = detectTwoByteColors(decoder, batchSize, options.las?.colorDepth);\n\n for (let i = 0; i < batchSize; i++) {\n const {position, color, intensity, classification} = decoder.getPoint(i);\n\n positions[pointIndex * 3] = position[0] * scaleX + offsetX;\n positions[pointIndex * 3 + 1] = position[1] * scaleY + offsetY;\n positions[pointIndex * 3 + 2] = position[2] * scaleZ + offsetZ;\n\n if (color && colors) {\n if (twoByteColor) {\n colors[pointIndex * 4] = color[0] / 256;\n colors[pointIndex * 4 + 1] = color[1] / 256;\n colors[pointIndex * 4 + 2] = color[2] / 256;\n } else {\n colors[pointIndex * 4] = color[0];\n colors[pointIndex * 4 + 1] = color[1];\n colors[pointIndex * 4 + 2] = color[2];\n }\n colors[pointIndex * 4 + 3] = 255;\n }\n\n intensities[pointIndex] = intensity;\n classifications[pointIndex] = classification;\n\n pointIndex++;\n }\n\n const meshBatch = {\n ...lasMesh,\n header: {\n vertexCount: lasHeader.totalRead\n },\n progress: lasHeader.totalRead / lasHeader.totalToRead\n };\n\n options?.onProgress?.(meshBatch);\n });\n /* eslint-enable max-statements */\n\n lasMesh.header = {\n vertexCount: originalHeader.totalToRead,\n boundingBox: getMeshBoundingBox(lasMesh?.attributes || {})\n };\n\n if (lasMesh) {\n lasMesh.schema = getLASSchema(lasMesh.loaderData, lasMesh.attributes);\n }\n return lasMesh;\n}\n\n/**\n * parse laz data\n * @param rawData\n * @param skip\n * @param onParseData\n * @return parsed point cloud\n */\n/* eslint-enable max-statements */\nexport function parseLASChunked(rawData: ArrayBuffer, skip: number, onParseData: any = {}): void {\n const dataHandler = new LASFile(rawData);\n\n try {\n // open data\n dataHandler.open();\n\n const header = dataHandler.getHeader();\n // start loading\n const Unpacker = dataHandler.getUnpacker();\n\n const totalToRead = Math.ceil(header.pointsCount / Math.max(1, skip));\n header.totalToRead = totalToRead;\n let totalRead = 0;\n\n /* eslint-disable no-constant-condition */\n while (true) {\n const chunk: LASChunk = dataHandler.readData(1000 * 100, 0, skip);\n\n totalRead += chunk.count;\n\n header.totalRead = totalRead;\n header.versionAsString = chunk.versionAsString;\n header.isCompressed = chunk.isCompressed;\n\n const unpacker = new Unpacker(chunk.buffer, chunk.count, header);\n\n // surface unpacker and progress via call back\n // use unpacker.pointsCount and unpacker.getPoint(i) to handle data in app\n onParseData(unpacker, header);\n\n if (!chunk.hasMoreData || totalRead >= totalToRead) {\n break;\n }\n }\n } catch (e) {\n throw e;\n } finally {\n dataHandler.close();\n }\n}\n\n/**\n * @param decoder\n * @param batchSize\n * @param colorDepth\n * @returns boolean\n */\nfunction detectTwoByteColors(\n decoder: any = {},\n batchSize: number,\n colorDepth?: number | string\n): boolean {\n let twoByteColor = false;\n switch (colorDepth) {\n case 8:\n twoByteColor = false;\n break;\n case 16:\n twoByteColor = true;\n break;\n case 'auto':\n if (decoder.getPoint(0).color) {\n for (let i = 0; i < batchSize; i++) {\n const {color} = decoder.getPoint(i);\n // eslint-disable-next-line max-depth\n if (color[0] > 255 || color[1] > 255 || color[2] > 255) {\n twoByteColor = true;\n }\n }\n }\n break;\n default:\n // eslint-disable-next-line\n console.warn('las: illegal value for options.las.colorDepth');\n break;\n }\n return twoByteColor;\n}\n"],"file":"parse-las.js"}
@@ -1,5 +1,4 @@
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);
1
+ import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
+ import { LASLoader } from '../index';
3
+ createLoaderWorker(LASLoader);
4
+ //# sourceMappingURL=las-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workers/las-worker.ts"],"names":["createLoaderWorker","LASLoader"],"mappings":"AAAA,SAAQA,kBAAR,QAAiC,0BAAjC;AACA,SAAQC,SAAR,QAAwB,UAAxB;AAEAD,kBAAkB,CAACC,SAAD,CAAlB","sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {LASLoader} from '../index';\n\ncreateLoaderWorker(LASLoader);\n"],"file":"las-worker.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/las",
3
- "version": "3.1.3",
3
+ "version": "4.0.0-alpha.5",
4
4
  "description": "Framework-independent loader for the LAS and LAZ formats",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -20,8 +20,8 @@
20
20
  "LAZ"
21
21
  ],
22
22
  "types": "dist/index.d.ts",
23
- "main": "dist/es5/index.js",
24
- "module": "dist/esm/index.js",
23
+ "main": "dist/index.js",
24
+ "module": "dist/index.js",
25
25
  "sideEffects": false,
26
26
  "browser": {
27
27
  "fs": false,
@@ -37,12 +37,13 @@
37
37
  "scripts": {
38
38
  "pre-build": "npm run build-bundle && npm run build-worker",
39
39
  "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js",
40
- "build-worker": "esbuild src/workers/las-worker.ts --bundle --outfile=dist/las-worker.js"
40
+ "build-worker": "esbuild src/workers/las-worker.ts --bundle --outfile=dist/las-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
41
41
  },
42
42
  "dependencies": {
43
43
  "@babel/runtime": "^7.3.1",
44
- "@loaders.gl/loader-utils": "3.1.3",
45
- "@loaders.gl/schema": "3.1.3"
44
+ "@loaders.gl/loader-utils": "4.0.0-alpha.5",
45
+ "@loaders.gl/schema": "4.0.0-alpha.5",
46
+ "apache-arrow": "^4.0.0"
46
47
  },
47
- "gitHead": "4a690c369779346d73c9a27395d1c08d77d279a4"
48
+ "gitHead": "7a71a54bdf1ddf985cc3af3db90b82e7fa97d025"
48
49
  }
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- var moduleExports = require('./index');
4
-
5
- globalThis.loaders = globalThis.loaders || {};
6
- module.exports = Object.assign(globalThis.loaders, moduleExports);
7
- //# sourceMappingURL=bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
package/dist/es5/index.js DELETED
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- Object.defineProperty(exports, "LASWorkerLoader", {
9
- enumerable: true,
10
- get: function get() {
11
- return _lasLoader.LASLoader;
12
- }
13
- });
14
- exports._typecheckLoader = exports.LASLoader = void 0;
15
-
16
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
17
-
18
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
19
-
20
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
- var _lasLoader = require("./las-loader");
23
-
24
- var _parseLas = _interopRequireDefault(require("./lib/parse-las"));
25
-
26
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
27
-
28
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
29
-
30
- var LASLoader = _objectSpread(_objectSpread({}, _lasLoader.LASLoader), {}, {
31
- parse: function () {
32
- var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
33
- return _regenerator.default.wrap(function _callee$(_context) {
34
- while (1) {
35
- switch (_context.prev = _context.next) {
36
- case 0:
37
- return _context.abrupt("return", (0, _parseLas.default)(arrayBuffer, options));
38
-
39
- case 1:
40
- case "end":
41
- return _context.stop();
42
- }
43
- }
44
- }, _callee);
45
- }));
46
-
47
- function parse(_x, _x2) {
48
- return _parse.apply(this, arguments);
49
- }
50
-
51
- return parse;
52
- }(),
53
- parseSync: function parseSync(arrayBuffer, options) {
54
- return (0, _parseLas.default)(arrayBuffer, options);
55
- }
56
- });
57
-
58
- exports.LASLoader = LASLoader;
59
- var _typecheckLoader = LASLoader;
60
- exports._typecheckLoader = _typecheckLoader;
61
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["LASLoader","LASWorkerLoader","parse","arrayBuffer","options","parseSync","_typecheckLoader"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA;;AACA;;;;;;AAUO,IAAMA,SAAS,mCACjBC,oBADiB;AAEpBC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAiCC,OAAjC;AAAA;AAAA;AAAA;AAAA;AAAA,+CACL,uBAASD,WAAT,EAAsBC,OAAtB,CADK;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAFe;AAIpBC,EAAAA,SAAS,EAAE,mBAACF,WAAD,EAA2BC,OAA3B;AAAA,WACT,uBAASD,WAAT,EAAsBC,OAAtB,CADS;AAAA;AAJS,EAAf;;;AAQA,IAAME,gBAAkC,GAAGN,SAA3C","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {LASLoaderOptions} from './las-loader';\nimport {LASLoader as LASWorkerLoader} from './las-loader';\nimport parseLAS from './lib/parse-las';\n\n// LASLoader\n\nexport type {LASLoaderOptions};\nexport {LASWorkerLoader};\n\n/**\n * Loader for the LAS (LASer) point cloud format\n */\nexport const LASLoader = {\n ...LASWorkerLoader,\n parse: async (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>\n parseLAS(arrayBuffer, options),\n parseSync: (arrayBuffer: ArrayBuffer, options?: LASLoaderOptions) =>\n parseLAS(arrayBuffer, options)\n};\n\nexport const _typecheckLoader: LoaderWithParser = LASLoader;\n"],"file":"index.js"}
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports._typecheckLoader = exports.LASLoader = void 0;
7
- var VERSION = typeof "3.1.3" !== 'undefined' ? "3.1.3" : 'latest';
8
- var DEFAULT_LAS_OPTIONS = {
9
- las: {
10
- shape: 'mesh',
11
- fp64: false,
12
- skip: 1,
13
- colorDepth: 8
14
- }
15
- };
16
- var LASLoader = {
17
- name: 'LAS',
18
- id: 'las',
19
- module: 'las',
20
- version: VERSION,
21
- worker: true,
22
- extensions: ['las', 'laz'],
23
- mimeTypes: ['application/octet-stream'],
24
- text: true,
25
- binary: true,
26
- tests: ['LAS'],
27
- options: DEFAULT_LAS_OPTIONS
28
- };
29
- exports.LASLoader = LASLoader;
30
- var _typecheckLoader = LASLoader;
31
- exports._typecheckLoader = _typecheckLoader;
32
- //# sourceMappingURL=las-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/las-loader.ts"],"names":["VERSION","DEFAULT_LAS_OPTIONS","las","shape","fp64","skip","colorDepth","LASLoader","name","id","module","version","worker","extensions","mimeTypes","text","binary","tests","options","_typecheckLoader"],"mappings":";;;;;;AAKA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAWA,IAAMC,mBAAqC,GAAG;AAC5CC,EAAAA,GAAG,EAAE;AACHC,IAAAA,KAAK,EAAE,MADJ;AAEHC,IAAAA,IAAI,EAAE,KAFH;AAGHC,IAAAA,IAAI,EAAE,CAHH;AAIHC,IAAAA,UAAU,EAAE;AAJT;AADuC,CAA9C;AAYO,IAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,KADiB;AAEvBC,EAAAA,EAAE,EAAE,KAFmB;AAGvBC,EAAAA,MAAM,EAAE,KAHe;AAIvBC,EAAAA,OAAO,EAAEX,OAJc;AAKvBY,EAAAA,MAAM,EAAE,IALe;AAMvBC,EAAAA,UAAU,EAAE,CAAC,KAAD,EAAQ,KAAR,CANW;AAOvBC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPY;AAQvBC,EAAAA,IAAI,EAAE,IARiB;AASvBC,EAAAA,MAAM,EAAE,IATe;AAUvBC,EAAAA,KAAK,EAAE,CAAC,KAAD,CAVgB;AAWvBC,EAAAA,OAAO,EAAEjB;AAXc,CAAlB;;AAcA,IAAMkB,gBAAwB,GAAGZ,SAAjC","sourcesContent":["// LASER (LAS) FILE FORMAT\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type LASLoaderOptions = LoaderOptions & {\n las?: {\n shape?: 'mesh' | 'columnar-table' | 'arrow-table';\n fp64?: boolean;\n skip?: number;\n colorDepth?: number | string;\n };\n};\n\nconst DEFAULT_LAS_OPTIONS: LASLoaderOptions = {\n las: {\n shape: 'mesh',\n fp64: false,\n skip: 1,\n colorDepth: 8\n }\n};\n\n/**\n * Loader for the LAS (LASer) point cloud format\n */\nexport const LASLoader = {\n name: 'LAS',\n id: 'las',\n module: 'las',\n version: VERSION,\n worker: true,\n extensions: ['las', 'laz'], // LAZ is the \"compressed\" flavor of LAS,\n mimeTypes: ['application/octet-stream'], // TODO - text version?\n text: true,\n binary: true,\n tests: ['LAS'],\n options: DEFAULT_LAS_OPTIONS\n};\n\nexport const _typecheckLoader: Loader = LASLoader;\n"],"file":"las-loader.js"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getLASSchema = getLASSchema;
7
- exports.makeMetadataFromLasHeader = makeMetadataFromLasHeader;
8
-
9
- var _schema = require("@loaders.gl/schema");
10
-
11
- function getLASSchema(lasHeader, attributes) {
12
- var metadataMap = makeMetadataFromLasHeader(lasHeader);
13
- var schema = (0, _schema.deduceMeshSchema)(attributes, metadataMap);
14
- return schema;
15
- }
16
-
17
- function makeMetadataFromLasHeader(lasHeader) {
18
- var metadataMap = new Map();
19
- metadataMap.set('las_pointsOffset', lasHeader.pointsOffset.toString(10));
20
- metadataMap.set('las_pointsFormatId', lasHeader.pointsFormatId.toString(10));
21
- metadataMap.set('las_pointsStructSize', lasHeader.pointsStructSize.toString(10));
22
- metadataMap.set('las_pointsCount', lasHeader.pointsCount.toString(10));
23
- metadataMap.set('las_scale', JSON.stringify(lasHeader.scale));
24
- metadataMap.set('las_offset', JSON.stringify(lasHeader.offset));
25
-
26
- if (lasHeader.maxs !== undefined) {
27
- metadataMap.set('las_maxs', JSON.stringify(lasHeader.maxs));
28
- }
29
-
30
- if (lasHeader.mins !== undefined) {
31
- metadataMap.set('las_mins', JSON.stringify(lasHeader.mins));
32
- }
33
-
34
- metadataMap.set('las_totalToRead', lasHeader.totalToRead.toString(10));
35
- metadataMap.set('las_pointsFortotalReadmatId', lasHeader.totalRead.toString(10));
36
-
37
- if (lasHeader.versionAsString !== undefined) {
38
- metadataMap.set('las_versionAsString', lasHeader.versionAsString);
39
- }
40
-
41
- if (lasHeader.isCompressed !== undefined) {
42
- metadataMap.set('las_isCompressed', lasHeader.isCompressed.toString());
43
- }
44
-
45
- return metadataMap;
46
- }
47
- //# sourceMappingURL=get-las-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/get-las-schema.ts"],"names":["getLASSchema","lasHeader","attributes","metadataMap","makeMetadataFromLasHeader","schema","Map","set","pointsOffset","toString","pointsFormatId","pointsStructSize","pointsCount","JSON","stringify","scale","offset","maxs","undefined","mins","totalToRead","totalRead","versionAsString","isCompressed"],"mappings":";;;;;;;;AAAA;;AASO,SAASA,YAAT,CAAsBC,SAAtB,EAA4CC,UAA5C,EAAgF;AACrF,MAAMC,WAAW,GAAGC,yBAAyB,CAACH,SAAD,CAA7C;AACA,MAAMI,MAAM,GAAG,8BAAiBH,UAAjB,EAA6BC,WAA7B,CAAf;AACA,SAAOE,MAAP;AACD;;AAOM,SAASD,yBAAT,CAAmCH,SAAnC,EAA8E;AACnF,MAAME,WAAW,GAAG,IAAIG,GAAJ,EAApB;AACAH,EAAAA,WAAW,CAACI,GAAZ,CAAgB,kBAAhB,EAAoCN,SAAS,CAACO,YAAV,CAAuBC,QAAvB,CAAgC,EAAhC,CAApC;AACAN,EAAAA,WAAW,CAACI,GAAZ,CAAgB,oBAAhB,EAAsCN,SAAS,CAACS,cAAV,CAAyBD,QAAzB,CAAkC,EAAlC,CAAtC;AACAN,EAAAA,WAAW,CAACI,GAAZ,CAAgB,sBAAhB,EAAwCN,SAAS,CAACU,gBAAV,CAA2BF,QAA3B,CAAoC,EAApC,CAAxC;AACAN,EAAAA,WAAW,CAACI,GAAZ,CAAgB,iBAAhB,EAAmCN,SAAS,CAACW,WAAV,CAAsBH,QAAtB,CAA+B,EAA/B,CAAnC;AACAN,EAAAA,WAAW,CAACI,GAAZ,CAAgB,WAAhB,EAA6BM,IAAI,CAACC,SAAL,CAAeb,SAAS,CAACc,KAAzB,CAA7B;AACAZ,EAAAA,WAAW,CAACI,GAAZ,CAAgB,YAAhB,EAA8BM,IAAI,CAACC,SAAL,CAAeb,SAAS,CAACe,MAAzB,CAA9B;;AACA,MAAIf,SAAS,CAACgB,IAAV,KAAmBC,SAAvB,EAAkC;AAChCf,IAAAA,WAAW,CAACI,GAAZ,CAAgB,UAAhB,EAA4BM,IAAI,CAACC,SAAL,CAAeb,SAAS,CAACgB,IAAzB,CAA5B;AACD;;AACD,MAAIhB,SAAS,CAACkB,IAAV,KAAmBD,SAAvB,EAAkC;AAChCf,IAAAA,WAAW,CAACI,GAAZ,CAAgB,UAAhB,EAA4BM,IAAI,CAACC,SAAL,CAAeb,SAAS,CAACkB,IAAzB,CAA5B;AACD;;AACDhB,EAAAA,WAAW,CAACI,GAAZ,CAAgB,iBAAhB,EAAmCN,SAAS,CAACmB,WAAV,CAAsBX,QAAtB,CAA+B,EAA/B,CAAnC;AACAN,EAAAA,WAAW,CAACI,GAAZ,CAAgB,6BAAhB,EAA+CN,SAAS,CAACoB,SAAV,CAAoBZ,QAApB,CAA6B,EAA7B,CAA/C;;AACA,MAAIR,SAAS,CAACqB,eAAV,KAA8BJ,SAAlC,EAA6C;AAC3Cf,IAAAA,WAAW,CAACI,GAAZ,CAAgB,qBAAhB,EAAuCN,SAAS,CAACqB,eAAjD;AACD;;AACD,MAAIrB,SAAS,CAACsB,YAAV,KAA2BL,SAA/B,EAA0C;AACxCf,IAAAA,WAAW,CAACI,GAAZ,CAAgB,kBAAhB,EAAoCN,SAAS,CAACsB,YAAV,CAAuBd,QAAvB,EAApC;AACD;;AACD,SAAON,WAAP;AACD","sourcesContent":["import {Schema, MeshAttributes, deduceMeshSchema} from '@loaders.gl/schema';\nimport type {LASHeader} from './las-types';\n\n/**\n * Gets schema from PLY header\n * @param lasHeader\n * @param metadata\n * @returns Schema\n */\nexport function getLASSchema(lasHeader: LASHeader, attributes: MeshAttributes): Schema {\n const metadataMap = makeMetadataFromLasHeader(lasHeader);\n const schema = deduceMeshSchema(attributes, metadataMap);\n return schema;\n}\n\n/**\n * Make arrow like schema metadata by LASHeader properties\n * @param lasHeader\n * @returns\n */\nexport function makeMetadataFromLasHeader(lasHeader: LASHeader): Map<string, string> {\n const metadataMap = new Map();\n metadataMap.set('las_pointsOffset', lasHeader.pointsOffset.toString(10));\n metadataMap.set('las_pointsFormatId', lasHeader.pointsFormatId.toString(10));\n metadataMap.set('las_pointsStructSize', lasHeader.pointsStructSize.toString(10));\n metadataMap.set('las_pointsCount', lasHeader.pointsCount.toString(10));\n metadataMap.set('las_scale', JSON.stringify(lasHeader.scale));\n metadataMap.set('las_offset', JSON.stringify(lasHeader.offset));\n if (lasHeader.maxs !== undefined) {\n metadataMap.set('las_maxs', JSON.stringify(lasHeader.maxs));\n }\n if (lasHeader.mins !== undefined) {\n metadataMap.set('las_mins', JSON.stringify(lasHeader.mins));\n }\n metadataMap.set('las_totalToRead', lasHeader.totalToRead.toString(10));\n metadataMap.set('las_pointsFortotalReadmatId', lasHeader.totalRead.toString(10));\n if (lasHeader.versionAsString !== undefined) {\n metadataMap.set('las_versionAsString', lasHeader.versionAsString);\n }\n if (lasHeader.isCompressed !== undefined) {\n metadataMap.set('las_isCompressed', lasHeader.isCompressed.toString());\n }\n return metadataMap;\n}\n"],"file":"get-las-schema.js"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=las-types.js.map