@loaders.gl/las 3.3.0-alpha.1 → 3.3.0-alpha.11

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 (41) hide show
  1. package/dist/es5/bundle.js +0 -1
  2. package/dist/es5/bundle.js.map +1 -1
  3. package/dist/es5/index.js +4 -16
  4. package/dist/es5/index.js.map +1 -1
  5. package/dist/es5/las-loader.js +3 -1
  6. package/dist/es5/las-loader.js.map +1 -1
  7. package/dist/es5/lib/get-las-schema.js +0 -8
  8. package/dist/es5/lib/get-las-schema.js.map +1 -1
  9. package/dist/es5/lib/las-types.js.map +1 -1
  10. package/dist/es5/lib/laslaz-decoder.js +40 -57
  11. package/dist/es5/lib/laslaz-decoder.js.map +1 -1
  12. package/dist/es5/lib/libs/laz-perf.js.map +1 -1
  13. package/dist/es5/lib/parse-las.js +17 -49
  14. package/dist/es5/lib/parse-las.js.map +1 -1
  15. package/dist/es5/workers/las-worker.js +0 -2
  16. package/dist/es5/workers/las-worker.js.map +1 -1
  17. package/dist/esm/bundle.js +1 -1
  18. package/dist/esm/bundle.js.map +1 -1
  19. package/dist/esm/index.js +4 -1
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/las-loader.js +4 -1
  22. package/dist/esm/las-loader.js.map +1 -1
  23. package/dist/esm/lib/get-las-schema.js +1 -6
  24. package/dist/esm/lib/get-las-schema.js.map +1 -1
  25. package/dist/esm/lib/las-types.js.map +1 -1
  26. package/dist/esm/lib/laslaz-decoder.js +6 -63
  27. package/dist/esm/lib/laslaz-decoder.js.map +1 -1
  28. package/dist/esm/lib/libs/laz-perf.js.map +1 -1
  29. package/dist/esm/lib/parse-las.js +18 -26
  30. package/dist/esm/lib/parse-las.js.map +1 -1
  31. package/dist/esm/workers/las-worker.js.map +1 -1
  32. package/dist/index.d.ts +2 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/las-loader.d.ts +1 -1
  35. package/dist/las-loader.d.ts.map +1 -1
  36. package/dist/las-worker.js +1 -1
  37. package/dist/lib/las-types.d.ts +2 -2
  38. package/dist/lib/las-types.d.ts.map +1 -1
  39. package/dist/lib/laslaz-decoder.d.ts +1 -1
  40. package/dist/lib/laslaz-decoder.d.ts.map +1 -1
  41. package/package.json +4 -4
@@ -1,34 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = parseLAS;
9
8
  exports.parseLASChunked = parseLASChunked;
10
-
11
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
-
13
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
-
15
11
  var _schema = require("@loaders.gl/schema");
16
-
17
12
  var _laslazDecoder = require("./laslaz-decoder");
18
-
19
13
  var _getLasSchema = require("./get-las-schema");
20
-
21
- 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; }
22
-
23
- 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; }
24
-
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
16
  function parseLAS(arrayBuffer, options) {
26
17
  return parseLASMesh(arrayBuffer, options);
27
18
  }
28
19
 
29
20
  function parseLASMesh(arrayBuffer) {
30
21
  var _options$las;
31
-
32
22
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
33
23
  var pointIndex = 0;
34
24
  var positions;
@@ -48,15 +38,13 @@ function parseLASMesh(arrayBuffer) {
48
38
  topology: 'point-list',
49
39
  mode: 0
50
40
  };
41
+
51
42
  parseLASChunked(arrayBuffer, (_options$las = options.las) === null || _options$las === void 0 ? void 0 : _options$las.skip, function () {
52
43
  var _options$las3, _options$onProgress;
53
-
54
44
  var decoder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
55
45
  var lasHeader = arguments.length > 1 ? arguments[1] : undefined;
56
-
57
46
  if (!originalHeader) {
58
47
  var _options$las2;
59
-
60
48
  originalHeader = lasHeader;
61
49
  var total = lasHeader.totalToRead;
62
50
  var PositionsType = (_options$las2 = options.las) !== null && _options$las2 !== void 0 && _options$las2.fp64 ? Float64Array : Float32Array;
@@ -79,7 +67,6 @@ function parseLASMesh(arrayBuffer) {
79
67
  size: 1
80
68
  }
81
69
  };
82
-
83
70
  if (colors) {
84
71
  lasMesh.attributes.COLOR_0 = {
85
72
  value: colors,
@@ -87,31 +74,25 @@ function parseLASMesh(arrayBuffer) {
87
74
  };
88
75
  }
89
76
  }
90
-
91
77
  var batchSize = decoder.pointsCount;
92
-
93
78
  var _lasHeader$scale = (0, _slicedToArray2.default)(lasHeader.scale, 3),
94
- scaleX = _lasHeader$scale[0],
95
- scaleY = _lasHeader$scale[1],
96
- scaleZ = _lasHeader$scale[2],
97
- _lasHeader$offset = (0, _slicedToArray2.default)(lasHeader.offset, 3),
98
- offsetX = _lasHeader$offset[0],
99
- offsetY = _lasHeader$offset[1],
100
- offsetZ = _lasHeader$offset[2];
101
-
79
+ scaleX = _lasHeader$scale[0],
80
+ scaleY = _lasHeader$scale[1],
81
+ scaleZ = _lasHeader$scale[2],
82
+ _lasHeader$offset = (0, _slicedToArray2.default)(lasHeader.offset, 3),
83
+ offsetX = _lasHeader$offset[0],
84
+ offsetY = _lasHeader$offset[1],
85
+ offsetZ = _lasHeader$offset[2];
102
86
  var twoByteColor = detectTwoByteColors(decoder, batchSize, (_options$las3 = options.las) === null || _options$las3 === void 0 ? void 0 : _options$las3.colorDepth);
103
-
104
87
  for (var i = 0; i < batchSize; i++) {
105
88
  var _decoder$getPoint = decoder.getPoint(i),
106
- position = _decoder$getPoint.position,
107
- color = _decoder$getPoint.color,
108
- intensity = _decoder$getPoint.intensity,
109
- classification = _decoder$getPoint.classification;
110
-
89
+ position = _decoder$getPoint.position,
90
+ color = _decoder$getPoint.color,
91
+ intensity = _decoder$getPoint.intensity,
92
+ classification = _decoder$getPoint.classification;
111
93
  positions[pointIndex * 3] = position[0] * scaleX + offsetX;
112
94
  positions[pointIndex * 3 + 1] = position[1] * scaleY + offsetY;
113
95
  positions[pointIndex * 3 + 2] = position[2] * scaleZ + offsetZ;
114
-
115
96
  if (color && colors) {
116
97
  if (twoByteColor) {
117
98
  colors[pointIndex * 4] = color[0] / 256;
@@ -122,40 +103,34 @@ function parseLASMesh(arrayBuffer) {
122
103
  colors[pointIndex * 4 + 1] = color[1];
123
104
  colors[pointIndex * 4 + 2] = color[2];
124
105
  }
125
-
126
106
  colors[pointIndex * 4 + 3] = 255;
127
107
  }
128
-
129
108
  intensities[pointIndex] = intensity;
130
109
  classifications[pointIndex] = classification;
131
110
  pointIndex++;
132
111
  }
133
-
134
112
  var meshBatch = _objectSpread(_objectSpread({}, lasMesh), {}, {
135
113
  header: {
136
114
  vertexCount: lasHeader.totalRead
137
115
  },
138
116
  progress: lasHeader.totalRead / lasHeader.totalToRead
139
117
  });
140
-
141
118
  options === null || options === void 0 ? void 0 : (_options$onProgress = options.onProgress) === null || _options$onProgress === void 0 ? void 0 : _options$onProgress.call(options, meshBatch);
142
119
  });
120
+
143
121
  lasMesh.header = {
144
122
  vertexCount: originalHeader.totalToRead,
145
123
  boundingBox: (0, _schema.getMeshBoundingBox)((lasMesh === null || lasMesh === void 0 ? void 0 : lasMesh.attributes) || {})
146
124
  };
147
-
148
125
  if (lasMesh) {
149
126
  lasMesh.schema = (0, _getLasSchema.getLASSchema)(lasMesh.loaderData, lasMesh.attributes);
150
127
  }
151
-
152
128
  return lasMesh;
153
129
  }
154
130
 
155
131
  function parseLASChunked(rawData, skip) {
156
132
  var onParseData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
157
133
  var dataHandler = new _laslazDecoder.LASFile(rawData);
158
-
159
134
  try {
160
135
  dataHandler.open();
161
136
  var header = dataHandler.getHeader();
@@ -171,8 +146,8 @@ function parseLASChunked(rawData, skip) {
171
146
  header.versionAsString = chunk.versionAsString;
172
147
  header.isCompressed = chunk.isCompressed;
173
148
  var unpacker = new Unpacker(chunk.buffer, chunk.count, header);
174
- onParseData(unpacker, header);
175
149
 
150
+ onParseData(unpacker, header);
176
151
  if (!chunk.hasMoreData || totalRead >= totalToRead) {
177
152
  break;
178
153
  }
@@ -189,35 +164,28 @@ function detectTwoByteColors() {
189
164
  var batchSize = arguments.length > 1 ? arguments[1] : undefined;
190
165
  var colorDepth = arguments.length > 2 ? arguments[2] : undefined;
191
166
  var twoByteColor = false;
192
-
193
167
  switch (colorDepth) {
194
168
  case 8:
195
169
  twoByteColor = false;
196
170
  break;
197
-
198
171
  case 16:
199
172
  twoByteColor = true;
200
173
  break;
201
-
202
174
  case 'auto':
203
175
  if (decoder.getPoint(0).color) {
204
176
  for (var i = 0; i < batchSize; i++) {
205
177
  var _decoder$getPoint2 = decoder.getPoint(i),
206
- color = _decoder$getPoint2.color;
207
-
178
+ color = _decoder$getPoint2.color;
208
179
  if (color[0] > 255 || color[1] > 255 || color[2] > 255) {
209
180
  twoByteColor = true;
210
181
  }
211
182
  }
212
183
  }
213
-
214
184
  break;
215
-
216
185
  default:
217
186
  console.warn('las: illegal value for options.las.colorDepth');
218
187
  break;
219
188
  }
220
-
221
189
  return twoByteColor;
222
190
  }
223
191
  //# sourceMappingURL=parse-las.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/parse-las.ts"],"names":["parseLAS","arrayBuffer","options","parseLASMesh","pointIndex","positions","colors","intensities","classifications","originalHeader","lasMesh","loader","loaderData","schema","Schema","header","vertexCount","boundingBox","attributes","topology","mode","parseLASChunked","las","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","getPoint","position","color","meshBatch","totalRead","progress","onProgress","rawData","onParseData","dataHandler","LASFile","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 return parseLASMesh(arrayBuffer, options);\n // This code breaks pointcloud example on the website\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
+ {"version":3,"file":"parse-las.js","names":["parseLAS","arrayBuffer","options","parseLASMesh","pointIndex","positions","colors","intensities","classifications","originalHeader","lasMesh","loader","loaderData","schema","Schema","header","vertexCount","boundingBox","attributes","topology","mode","parseLASChunked","las","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","getPoint","position","color","meshBatch","totalRead","progress","onProgress","getMeshBoundingBox","getLASSchema","rawData","onParseData","dataHandler","LASFile","open","getHeader","Unpacker","getUnpacker","Math","ceil","max","chunk","readData","count","versionAsString","isCompressed","unpacker","buffer","hasMoreData","e","close","console","warn"],"sources":["../../../src/lib/parse-las.ts"],"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 return parseLASMesh(arrayBuffer, options);\n // This code breaks pointcloud example on the website\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"],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _loaderUtils = require("@loaders.gl/loader-utils");
4
-
5
4
  var _index = require("../index");
6
-
7
5
  (0, _loaderUtils.createLoaderWorker)(_index.LASLoader);
8
6
  //# sourceMappingURL=las-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/workers/las-worker.ts"],"names":["LASLoader"],"mappings":";;AAAA;;AACA;;AAEA,qCAAmBA,gBAAnB","sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {LASLoader} from '../index';\n\ncreateLoaderWorker(LASLoader);\n"],"file":"las-worker.js"}
1
+ {"version":3,"file":"las-worker.js","names":["createLoaderWorker","LASLoader"],"sources":["../../../src/workers/las-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {LASLoader} from '../index';\n\ncreateLoaderWorker(LASLoader);\n"],"mappings":";;AAAA;AACA;AAEA,IAAAA,+BAAkB,EAACC,gBAAS,CAAC"}
@@ -1,5 +1,5 @@
1
- const moduleExports = require('./index');
2
1
 
2
+ const moduleExports = require('./index');
3
3
  globalThis.loaders = globalThis.loaders || {};
4
4
  module.exports = Object.assign(globalThis.loaders, moduleExports);
5
5
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,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"}
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,7 +1,10 @@
1
1
  import { LASLoader as LASWorkerLoader } from './las-loader';
2
2
  import parseLAS from './lib/parse-las';
3
+
3
4
  export { LASWorkerLoader };
4
- export const LASLoader = { ...LASWorkerLoader,
5
+
6
+ export const LASLoader = {
7
+ ...LASWorkerLoader,
5
8
  parse: async (arrayBuffer, options) => parseLAS(arrayBuffer, options),
6
9
  parseSync: (arrayBuffer, options) => parseLAS(arrayBuffer, options)
7
10
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["LASLoader","LASWorkerLoader","parseLAS","parse","arrayBuffer","options","parseSync","_typecheckLoader"],"mappings":"AAEA,SAAQA,SAAS,IAAIC,eAArB,QAA2C,cAA3C;AACA,OAAOC,QAAP,MAAqB,iBAArB;AAKA,SAAQD,eAAR;AAKA,OAAO,MAAMD,SAAS,GAAG,EACvB,GAAGC,eADoB;AAEvBE,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAiCC,OAAjC,KACLH,QAAQ,CAACE,WAAD,EAAcC,OAAd,CAHa;AAIvBC,EAAAA,SAAS,EAAE,CAACF,WAAD,EAA2BC,OAA3B,KACTH,QAAQ,CAACE,WAAD,EAAcC,OAAd;AALa,CAAlB;AAQP,OAAO,MAAME,gBAAkC,GAAGP,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
+ {"version":3,"file":"index.js","names":["LASLoader","LASWorkerLoader","parseLAS","parse","arrayBuffer","options","parseSync","_typecheckLoader"],"sources":["../../src/index.ts"],"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"],"mappings":"AAEA,SAAQA,SAAS,IAAIC,eAAe,QAAO,cAAc;AACzD,OAAOC,QAAQ,MAAM,iBAAiB;;AAKtC,SAAQD,eAAe;;AAKvB,OAAO,MAAMD,SAAS,GAAG;EACvB,GAAGC,eAAe;EAClBE,KAAK,EAAE,OAAOC,WAAwB,EAAEC,OAA0B,KAChEH,QAAQ,CAACE,WAAW,EAAEC,OAAO,CAAC;EAChCC,SAAS,EAAE,CAACF,WAAwB,EAAEC,OAA0B,KAC9DH,QAAQ,CAACE,WAAW,EAAEC,OAAO;AACjC,CAAC;AAED,OAAO,MAAME,gBAAkC,GAAGP,SAAS"}
@@ -1,4 +1,6 @@
1
- const VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : 'latest';
1
+
2
+
3
+ const VERSION = typeof "3.3.0-alpha.11" !== 'undefined' ? "3.3.0-alpha.11" : 'latest';
2
4
  const DEFAULT_LAS_OPTIONS = {
3
5
  las: {
4
6
  shape: 'mesh',
@@ -7,6 +9,7 @@ const DEFAULT_LAS_OPTIONS = {
7
9
  colorDepth: 8
8
10
  }
9
11
  };
12
+
10
13
  export const LASLoader = {
11
14
  name: 'LAS',
12
15
  id: 'las',
@@ -1 +1 @@
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,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAWA,MAAMC,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;AAYA,OAAO,MAAMC,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;AAcP,OAAO,MAAMkB,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
+ {"version":3,"file":"las-loader.js","names":["VERSION","DEFAULT_LAS_OPTIONS","las","shape","fp64","skip","colorDepth","LASLoader","name","id","module","version","worker","extensions","mimeTypes","text","binary","tests","options","_typecheckLoader"],"sources":["../../src/las-loader.ts"],"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"],"mappings":";;AAKA,MAAMA,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAW3E,MAAMC,mBAAqC,GAAG;EAC5CC,GAAG,EAAE;IACHC,KAAK,EAAE,MAAM;IACbC,IAAI,EAAE,KAAK;IACXC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd;AACF,CAAC;;AAKD,OAAO,MAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEX,OAAO;EAChBY,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;EAC1BC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,KAAK,CAAC;EACdC,OAAO,EAAEjB;AACX,CAAC;AAED,OAAO,MAAMkB,gBAAwB,GAAGZ,SAAS"}
@@ -4,6 +4,7 @@ export function getLASSchema(lasHeader, attributes) {
4
4
  const schema = deduceMeshSchema(attributes, metadataMap);
5
5
  return schema;
6
6
  }
7
+
7
8
  export function makeMetadataFromLasHeader(lasHeader) {
8
9
  const metadataMap = new Map();
9
10
  metadataMap.set('las_pointsOffset', lasHeader.pointsOffset.toString(10));
@@ -12,26 +13,20 @@ export function makeMetadataFromLasHeader(lasHeader) {
12
13
  metadataMap.set('las_pointsCount', lasHeader.pointsCount.toString(10));
13
14
  metadataMap.set('las_scale', JSON.stringify(lasHeader.scale));
14
15
  metadataMap.set('las_offset', JSON.stringify(lasHeader.offset));
15
-
16
16
  if (lasHeader.maxs !== undefined) {
17
17
  metadataMap.set('las_maxs', JSON.stringify(lasHeader.maxs));
18
18
  }
19
-
20
19
  if (lasHeader.mins !== undefined) {
21
20
  metadataMap.set('las_mins', JSON.stringify(lasHeader.mins));
22
21
  }
23
-
24
22
  metadataMap.set('las_totalToRead', lasHeader.totalToRead.toString(10));
25
23
  metadataMap.set('las_pointsFortotalReadmatId', lasHeader.totalRead.toString(10));
26
-
27
24
  if (lasHeader.versionAsString !== undefined) {
28
25
  metadataMap.set('las_versionAsString', lasHeader.versionAsString);
29
26
  }
30
-
31
27
  if (lasHeader.isCompressed !== undefined) {
32
28
  metadataMap.set('las_isCompressed', lasHeader.isCompressed.toString());
33
29
  }
34
-
35
30
  return metadataMap;
36
31
  }
37
32
  //# sourceMappingURL=get-las-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/get-las-schema.ts"],"names":["deduceMeshSchema","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,SAAgCA,gBAAhC,QAAuD,oBAAvD;AASA,OAAO,SAASC,YAAT,CAAsBC,SAAtB,EAA4CC,UAA5C,EAAgF;AACrF,QAAMC,WAAW,GAAGC,yBAAyB,CAACH,SAAD,CAA7C;AACA,QAAMI,MAAM,GAAGN,gBAAgB,CAACG,UAAD,EAAaC,WAAb,CAA/B;AACA,SAAOE,MAAP;AACD;AAOD,OAAO,SAASD,yBAAT,CAAmCH,SAAnC,EAA8E;AACnF,QAAME,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
+ {"version":3,"file":"get-las-schema.js","names":["deduceMeshSchema","getLASSchema","lasHeader","attributes","metadataMap","makeMetadataFromLasHeader","schema","Map","set","pointsOffset","toString","pointsFormatId","pointsStructSize","pointsCount","JSON","stringify","scale","offset","maxs","undefined","mins","totalToRead","totalRead","versionAsString","isCompressed"],"sources":["../../../src/lib/get-las-schema.ts"],"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"],"mappings":"AAAA,SAAgCA,gBAAgB,QAAO,oBAAoB;AAS3E,OAAO,SAASC,YAAY,CAACC,SAAoB,EAAEC,UAA0B,EAAU;EACrF,MAAMC,WAAW,GAAGC,yBAAyB,CAACH,SAAS,CAAC;EACxD,MAAMI,MAAM,GAAGN,gBAAgB,CAACG,UAAU,EAAEC,WAAW,CAAC;EACxD,OAAOE,MAAM;AACf;;AAOA,OAAO,SAASD,yBAAyB,CAACH,SAAoB,EAAuB;EACnF,MAAME,WAAW,GAAG,IAAIG,GAAG,EAAE;EAC7BH,WAAW,CAACI,GAAG,CAAC,kBAAkB,EAAEN,SAAS,CAACO,YAAY,CAACC,QAAQ,CAAC,EAAE,CAAC,CAAC;EACxEN,WAAW,CAACI,GAAG,CAAC,oBAAoB,EAAEN,SAAS,CAACS,cAAc,CAACD,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC5EN,WAAW,CAACI,GAAG,CAAC,sBAAsB,EAAEN,SAAS,CAACU,gBAAgB,CAACF,QAAQ,CAAC,EAAE,CAAC,CAAC;EAChFN,WAAW,CAACI,GAAG,CAAC,iBAAiB,EAAEN,SAAS,CAACW,WAAW,CAACH,QAAQ,CAAC,EAAE,CAAC,CAAC;EACtEN,WAAW,CAACI,GAAG,CAAC,WAAW,EAAEM,IAAI,CAACC,SAAS,CAACb,SAAS,CAACc,KAAK,CAAC,CAAC;EAC7DZ,WAAW,CAACI,GAAG,CAAC,YAAY,EAAEM,IAAI,CAACC,SAAS,CAACb,SAAS,CAACe,MAAM,CAAC,CAAC;EAC/D,IAAIf,SAAS,CAACgB,IAAI,KAAKC,SAAS,EAAE;IAChCf,WAAW,CAACI,GAAG,CAAC,UAAU,EAAEM,IAAI,CAACC,SAAS,CAACb,SAAS,CAACgB,IAAI,CAAC,CAAC;EAC7D;EACA,IAAIhB,SAAS,CAACkB,IAAI,KAAKD,SAAS,EAAE;IAChCf,WAAW,CAACI,GAAG,CAAC,UAAU,EAAEM,IAAI,CAACC,SAAS,CAACb,SAAS,CAACkB,IAAI,CAAC,CAAC;EAC7D;EACAhB,WAAW,CAACI,GAAG,CAAC,iBAAiB,EAAEN,SAAS,CAACmB,WAAW,CAACX,QAAQ,CAAC,EAAE,CAAC,CAAC;EACtEN,WAAW,CAACI,GAAG,CAAC,6BAA6B,EAAEN,SAAS,CAACoB,SAAS,CAACZ,QAAQ,CAAC,EAAE,CAAC,CAAC;EAChF,IAAIR,SAAS,CAACqB,eAAe,KAAKJ,SAAS,EAAE;IAC3Cf,WAAW,CAACI,GAAG,CAAC,qBAAqB,EAAEN,SAAS,CAACqB,eAAe,CAAC;EACnE;EACA,IAAIrB,SAAS,CAACsB,YAAY,KAAKL,SAAS,EAAE;IACxCf,WAAW,CAACI,GAAG,CAAC,kBAAkB,EAAEN,SAAS,CAACsB,YAAY,CAACd,QAAQ,EAAE,CAAC;EACxE;EACA,OAAON,WAAW;AACpB"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"las-types.js"}
1
+ {"version":3,"file":"las-types.js","names":[],"sources":["../../../src/lib/las-types.ts"],"sourcesContent":["import {Mesh} from '@loaders.gl/schema';\n\n/**\n * Type for header of the .las file\n */\nexport type LASHeader = {\n pointsOffset: number;\n pointsFormatId: number;\n pointsStructSize: number;\n pointsCount: number;\n scale: [number, number, number];\n offset: [number, number, number];\n maxs?: number[];\n mins?: number[];\n totalToRead: number;\n totalRead: number;\n versionAsString?: string;\n isCompressed?: boolean;\n};\n\n/**\n * loaders.gl Mesh with Draco specific data\n */\nexport type LASMesh = Mesh & {\n loader: 'las';\n loaderData: LASHeader; // Draco specific data\n topology: 'point-list';\n mode: 0;\n};\n"],"mappings":""}