@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.
- package/dist/bundle.js +2 -2
- package/dist/bundle.js.map +1 -0
- package/dist/dist.min.js +14970 -100
- package/dist/index.js +8 -17
- package/dist/index.js.map +1 -0
- package/dist/las-loader.js +21 -28
- package/dist/las-loader.js.map +1 -0
- package/dist/las-worker.js +14908 -47
- package/dist/lib/get-las-schema.js +35 -44
- package/dist/lib/get-las-schema.js.map +1 -0
- package/dist/lib/las-types.js +2 -2
- package/dist/{es5/lib → lib}/las-types.js.map +0 -0
- package/dist/lib/laslaz-decoder.js +363 -366
- package/dist/lib/laslaz-decoder.js.map +1 -0
- package/dist/lib/libs/laz-perf.js +2 -19006
- package/dist/lib/libs/laz-perf.js.map +1 -0
- package/dist/lib/parse-las.js +178 -176
- package/dist/lib/parse-las.js.map +1 -0
- package/dist/workers/las-worker.js +4 -5
- package/dist/workers/las-worker.js.map +1 -0
- package/package.json +8 -7
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/index.js +0 -61
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/las-loader.js +0 -32
- package/dist/es5/las-loader.js.map +0 -1
- package/dist/es5/lib/get-las-schema.js +0 -47
- package/dist/es5/lib/get-las-schema.js.map +0 -1
- package/dist/es5/lib/las-types.js +0 -2
- package/dist/es5/lib/laslaz-decoder.js +0 -412
- package/dist/es5/lib/laslaz-decoder.js.map +0 -1
- package/dist/es5/lib/libs/laz-perf.js +0 -2
- package/dist/es5/lib/libs/laz-perf.js.map +0 -1
- package/dist/es5/lib/parse-las.js +0 -226
- package/dist/es5/lib/parse-las.js.map +0 -1
- package/dist/es5/workers/las-worker.js +0 -8
- package/dist/es5/workers/las-worker.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/index.js +0 -9
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/las-loader.js +0 -24
- package/dist/esm/las-loader.js.map +0 -1
- package/dist/esm/lib/get-las-schema.js +0 -37
- package/dist/esm/lib/get-las-schema.js.map +0 -1
- package/dist/esm/lib/las-types.js +0 -2
- package/dist/esm/lib/las-types.js.map +0 -1
- package/dist/esm/lib/laslaz-decoder.js +0 -392
- package/dist/esm/lib/laslaz-decoder.js.map +0 -1
- package/dist/esm/lib/libs/laz-perf.js +0 -2
- package/dist/esm/lib/libs/laz-perf.js.map +0 -1
- package/dist/esm/lib/parse-las.js +0 -191
- package/dist/esm/lib/parse-las.js.map +0 -1
- package/dist/esm/workers/las-worker.js +0 -4
- package/dist/esm/workers/las-worker.js.map +0 -1
package/dist/lib/parse-las.js
CHANGED
|
@@ -1,189 +1,191 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Parsing of .las file
|
|
20
|
-
* @param arrayBuffer
|
|
21
|
-
* @param options
|
|
22
|
-
* @returns LASHeader
|
|
23
|
-
*/
|
|
10
|
+
|
|
24
11
|
function parseLASMesh(arrayBuffer, options = {}) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
if (colors) {
|
|
62
|
+
lasMesh.attributes.COLOR_0 = {
|
|
63
|
+
value: colors,
|
|
64
|
+
size: 4
|
|
101
65
|
};
|
|
102
|
-
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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
|
-
|
|
157
|
-
/**
|
|
158
|
-
* @param decoder
|
|
159
|
-
* @param batchSize
|
|
160
|
-
* @param colorDepth
|
|
161
|
-
* @returns boolean
|
|
162
|
-
*/
|
|
156
|
+
|
|
163
157
|
function detectTwoByteColors(decoder = {}, batchSize, colorDepth) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
+
"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/
|
|
24
|
-
"module": "dist/
|
|
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": "
|
|
45
|
-
"@loaders.gl/schema": "
|
|
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": "
|
|
48
|
+
"gitHead": "7a71a54bdf1ddf985cc3af3db90b82e7fa97d025"
|
|
48
49
|
}
|
package/dist/es5/bundle.js
DELETED
package/dist/es5/bundle.js.map
DELETED
|
@@ -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
|
package/dist/es5/index.js.map
DELETED
|
@@ -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"}
|
package/dist/es5/las-loader.js
DELETED
|
@@ -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"}
|