@loaders.gl/las 4.0.0-alpha.4 → 4.0.0-alpha.6

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 (82) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/dist.min.js +19087 -0
  5. package/dist/es5/bundle.js +6 -0
  6. package/dist/es5/bundle.js.map +1 -0
  7. package/dist/es5/index.js +44 -0
  8. package/dist/es5/index.js.map +1 -0
  9. package/dist/es5/las-loader.js +30 -0
  10. package/dist/es5/las-loader.js.map +1 -0
  11. package/dist/es5/lib/get-las-schema.js +38 -0
  12. package/dist/es5/lib/get-las-schema.js.map +1 -0
  13. package/dist/es5/lib/las-types.js +2 -0
  14. package/dist/es5/lib/las-types.js.map +1 -0
  15. package/dist/es5/lib/laslaz-decoder.js +364 -0
  16. package/dist/es5/lib/laslaz-decoder.js.map +1 -0
  17. package/dist/es5/lib/libs/laz-perf.js +2 -0
  18. package/dist/es5/lib/libs/laz-perf.js.map +1 -0
  19. package/dist/es5/lib/parse-las.js +187 -0
  20. package/dist/es5/lib/parse-las.js.map +1 -0
  21. package/dist/es5/workers/las-worker.js +6 -0
  22. package/dist/es5/workers/las-worker.js.map +1 -0
  23. package/dist/esm/bundle.js +4 -0
  24. package/dist/esm/bundle.js.map +1 -0
  25. package/dist/esm/index.js +9 -0
  26. package/dist/esm/index.js.map +1 -0
  27. package/dist/esm/las-loader.js +23 -0
  28. package/dist/esm/las-loader.js.map +1 -0
  29. package/dist/esm/lib/get-las-schema.js +31 -0
  30. package/dist/esm/lib/get-las-schema.js.map +1 -0
  31. package/dist/esm/lib/las-types.js +2 -0
  32. package/dist/esm/lib/las-types.js.map +1 -0
  33. package/dist/esm/lib/laslaz-decoder.js +317 -0
  34. package/dist/esm/lib/laslaz-decoder.js.map +1 -0
  35. package/dist/esm/lib/libs/laz-perf.js +2 -0
  36. package/dist/esm/lib/libs/laz-perf.js.map +1 -0
  37. package/dist/esm/lib/parse-las.js +174 -0
  38. package/dist/esm/lib/parse-las.js.map +1 -0
  39. package/dist/esm/workers/las-worker.js +4 -0
  40. package/dist/esm/workers/las-worker.js.map +1 -0
  41. package/dist/index.d.ts +11 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +13 -8
  44. package/dist/las-loader.d.ts +16 -0
  45. package/dist/las-loader.d.ts.map +1 -0
  46. package/dist/las-loader.js +27 -21
  47. package/dist/las-worker.js +18210 -33163
  48. package/dist/lib/get-las-schema.d.ts +16 -0
  49. package/dist/lib/get-las-schema.d.ts.map +1 -0
  50. package/dist/lib/get-las-schema.js +45 -35
  51. package/dist/lib/las-types.d.ts +28 -0
  52. package/dist/lib/las-types.d.ts.map +1 -0
  53. package/dist/lib/las-types.js +2 -2
  54. package/dist/lib/laslaz-decoder.d.ts +134 -0
  55. package/dist/lib/laslaz-decoder.d.ts.map +1 -0
  56. package/dist/lib/laslaz-decoder.js +366 -363
  57. package/dist/lib/libs/laz-perf.d.ts +2 -0
  58. package/dist/lib/libs/laz-perf.d.ts.map +1 -0
  59. package/dist/lib/libs/laz-perf.js +19006 -0
  60. package/dist/lib/parse-las.d.ts +18 -0
  61. package/dist/lib/parse-las.d.ts.map +1 -0
  62. package/dist/lib/parse-las.js +178 -178
  63. package/dist/workers/las-worker.d.ts +2 -0
  64. package/dist/workers/las-worker.d.ts.map +1 -0
  65. package/dist/workers/las-worker.js +5 -4
  66. package/package.json +10 -10
  67. package/src/index.ts +3 -4
  68. package/src/las-loader.ts +3 -3
  69. package/src/lib/get-las-schema.ts +16 -15
  70. package/src/lib/laslaz-decoder.ts +1 -1
  71. package/src/lib/libs/laz-perf.ts +20615 -0
  72. package/src/lib/parse-las.ts +8 -9
  73. package/dist/bundle.js.map +0 -1
  74. package/dist/index.js.map +0 -1
  75. package/dist/las-loader.js.map +0 -1
  76. package/dist/lib/get-las-schema.js.map +0 -1
  77. package/dist/lib/las-types.js.map +0 -1
  78. package/dist/lib/laslaz-decoder.js.map +0 -1
  79. package/dist/lib/parse-las.js.map +0 -1
  80. package/dist/libs/laz-perf.js +0 -19492
  81. package/src/libs/laz-perf.js +0 -19492
  82. /package/src/workers/{las-worker.js → las-worker.ts} +0 -0
@@ -0,0 +1,174 @@
1
+ import { getMeshBoundingBox } from '@loaders.gl/schema';
2
+ import { LASFile } from './laslaz-decoder';
3
+ import { getLASSchema } from './get-las-schema';
4
+ export function parseLAS(arrayBuffer, options) {
5
+ return parseLASMesh(arrayBuffer, options);
6
+ }
7
+ function parseLASMesh(arrayBuffer) {
8
+ var _options$las;
9
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
10
+ let pointIndex = 0;
11
+ let positions;
12
+ let colors;
13
+ let intensities;
14
+ let classifications;
15
+ let originalHeader;
16
+ const lasMesh = {
17
+ loader: 'las',
18
+ loaderData: {},
19
+ schema: {
20
+ fields: [],
21
+ metadata: {}
22
+ },
23
+ header: {
24
+ vertexCount: 0,
25
+ boundingBox: [[0, 0, 0], [0, 0, 0]]
26
+ },
27
+ attributes: {},
28
+ topology: 'point-list',
29
+ mode: 0
30
+ };
31
+ parseLASChunked(arrayBuffer, (_options$las = options.las) === null || _options$las === void 0 ? void 0 : _options$las.skip, function () {
32
+ var _options$las3, _options$onProgress;
33
+ let decoder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
34
+ let lasHeader = arguments.length > 1 ? arguments[1] : undefined;
35
+ if (!originalHeader) {
36
+ var _options$las2;
37
+ originalHeader = lasHeader;
38
+ const total = lasHeader.totalToRead;
39
+ const PositionsType = (_options$las2 = options.las) !== null && _options$las2 !== void 0 && _options$las2.fp64 ? Float64Array : Float32Array;
40
+ positions = new PositionsType(total * 3);
41
+ colors = lasHeader.pointsFormatId >= 2 ? new Uint8Array(total * 4) : null;
42
+ intensities = new Uint16Array(total);
43
+ classifications = new Uint8Array(total);
44
+ lasMesh.loaderData = lasHeader;
45
+ lasMesh.attributes = {
46
+ POSITION: {
47
+ value: positions,
48
+ size: 3
49
+ },
50
+ intensity: {
51
+ value: intensities,
52
+ size: 1
53
+ },
54
+ classification: {
55
+ value: classifications,
56
+ size: 1
57
+ }
58
+ };
59
+ if (colors) {
60
+ lasMesh.attributes.COLOR_0 = {
61
+ value: colors,
62
+ size: 4
63
+ };
64
+ }
65
+ }
66
+ const batchSize = decoder.pointsCount;
67
+ const {
68
+ scale: [scaleX, scaleY, scaleZ],
69
+ offset: [offsetX, offsetY, offsetZ]
70
+ } = lasHeader;
71
+ const twoByteColor = detectTwoByteColors(decoder, batchSize, (_options$las3 = options.las) === null || _options$las3 === void 0 ? void 0 : _options$las3.colorDepth);
72
+ for (let i = 0; i < batchSize; i++) {
73
+ const {
74
+ position,
75
+ color,
76
+ intensity,
77
+ classification
78
+ } = decoder.getPoint(i);
79
+ positions[pointIndex * 3] = position[0] * scaleX + offsetX;
80
+ positions[pointIndex * 3 + 1] = position[1] * scaleY + offsetY;
81
+ positions[pointIndex * 3 + 2] = position[2] * scaleZ + offsetZ;
82
+ if (color && colors) {
83
+ if (twoByteColor) {
84
+ colors[pointIndex * 4] = color[0] / 256;
85
+ colors[pointIndex * 4 + 1] = color[1] / 256;
86
+ colors[pointIndex * 4 + 2] = color[2] / 256;
87
+ } else {
88
+ colors[pointIndex * 4] = color[0];
89
+ colors[pointIndex * 4 + 1] = color[1];
90
+ colors[pointIndex * 4 + 2] = color[2];
91
+ }
92
+ colors[pointIndex * 4 + 3] = 255;
93
+ }
94
+ intensities[pointIndex] = intensity;
95
+ classifications[pointIndex] = classification;
96
+ pointIndex++;
97
+ }
98
+ const meshBatch = {
99
+ ...lasMesh,
100
+ header: {
101
+ vertexCount: lasHeader.totalRead
102
+ },
103
+ progress: lasHeader.totalRead / lasHeader.totalToRead
104
+ };
105
+ options === null || options === void 0 ? void 0 : (_options$onProgress = options.onProgress) === null || _options$onProgress === void 0 ? void 0 : _options$onProgress.call(options, meshBatch);
106
+ });
107
+ lasMesh.header = {
108
+ vertexCount: originalHeader.totalToRead,
109
+ boundingBox: getMeshBoundingBox((lasMesh === null || lasMesh === void 0 ? void 0 : lasMesh.attributes) || {})
110
+ };
111
+ if (lasMesh) {
112
+ lasMesh.schema = getLASSchema(lasMesh.loaderData, lasMesh.attributes);
113
+ }
114
+ return lasMesh;
115
+ }
116
+ export function parseLASChunked(rawData, skip) {
117
+ let onParseData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
118
+ const dataHandler = new LASFile(rawData);
119
+ try {
120
+ dataHandler.open();
121
+ const header = dataHandler.getHeader();
122
+ const Unpacker = dataHandler.getUnpacker();
123
+ const totalToRead = Math.ceil(header.pointsCount / Math.max(1, skip));
124
+ header.totalToRead = totalToRead;
125
+ let totalRead = 0;
126
+ while (true) {
127
+ const chunk = dataHandler.readData(1000 * 100, 0, skip);
128
+ totalRead += chunk.count;
129
+ header.totalRead = totalRead;
130
+ header.versionAsString = chunk.versionAsString;
131
+ header.isCompressed = chunk.isCompressed;
132
+ const unpacker = new Unpacker(chunk.buffer, chunk.count, header);
133
+ onParseData(unpacker, header);
134
+ if (!chunk.hasMoreData || totalRead >= totalToRead) {
135
+ break;
136
+ }
137
+ }
138
+ } catch (e) {
139
+ throw e;
140
+ } finally {
141
+ dataHandler.close();
142
+ }
143
+ }
144
+ function detectTwoByteColors() {
145
+ let decoder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
146
+ let batchSize = arguments.length > 1 ? arguments[1] : undefined;
147
+ let colorDepth = arguments.length > 2 ? arguments[2] : undefined;
148
+ let twoByteColor = false;
149
+ switch (colorDepth) {
150
+ case 8:
151
+ twoByteColor = false;
152
+ break;
153
+ case 16:
154
+ twoByteColor = true;
155
+ break;
156
+ case 'auto':
157
+ if (decoder.getPoint(0).color) {
158
+ for (let i = 0; i < batchSize; i++) {
159
+ const {
160
+ color
161
+ } = decoder.getPoint(i);
162
+ if (color[0] > 255 || color[1] > 255 || color[2] > 255) {
163
+ twoByteColor = true;
164
+ }
165
+ }
166
+ }
167
+ break;
168
+ default:
169
+ console.warn('las: illegal value for options.las.colorDepth');
170
+ break;
171
+ }
172
+ return twoByteColor;
173
+ }
174
+ //# sourceMappingURL=parse-las.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-las.js","names":["getMeshBoundingBox","LASFile","getLASSchema","parseLAS","arrayBuffer","options","parseLASMesh","_options$las","arguments","length","undefined","pointIndex","positions","colors","intensities","classifications","originalHeader","lasMesh","loader","loaderData","schema","fields","metadata","header","vertexCount","boundingBox","attributes","topology","mode","parseLASChunked","las","skip","_options$las3","_options$onProgress","decoder","lasHeader","_options$las2","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","call","rawData","onParseData","dataHandler","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/\n// import type {ArrowTable, ColumnarTable} from '@loaders.gl/schema';\nimport type {LASLoaderOptions} from '../las-loader';\nimport type {LASMesh, LASHeader} from './las-types';\nimport {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 function parseLAS(arrayBuffer: ArrayBuffer, options?: LASLoaderOptions): LASMesh {\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: {fields: [], metadata: {}},\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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"}
@@ -0,0 +1,4 @@
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,"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,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,SAAS,QAAO,UAAU;AAElCD,kBAAkB,CAACC,SAAS,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { LoaderWithParser } from '@loaders.gl/loader-utils';
2
+ import type { LASLoaderOptions } from './las-loader';
3
+ import type { LASMesh } from './lib/las-types';
4
+ import { LASLoader as LASWorkerLoader } from './las-loader';
5
+ export type { LASLoaderOptions };
6
+ export { LASWorkerLoader };
7
+ /**
8
+ * Loader for the LAS (LASer) point cloud format
9
+ */
10
+ export declare const LASLoader: LoaderWithParser<LASMesh, never, LASLoaderOptions>;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,SAAS,IAAI,eAAe,EAAC,MAAM,cAAc,CAAC;AAK1D,YAAY,EAAC,gBAAgB,EAAC,CAAC;AAC/B,OAAO,EAAC,eAAe,EAAC,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAMxE,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,14 @@
1
- import { LASLoader as LASWorkerLoader } from './las-loader';
2
- import parseLAS from './lib/parse-las';
3
- export { LASWorkerLoader };
4
- export const LASLoader = { ...LASWorkerLoader,
5
- parse: async (arrayBuffer, options) => parseLAS(arrayBuffer, options),
6
- parseSync: (arrayBuffer, options) => parseLAS(arrayBuffer, options)
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LASLoader = exports.LASWorkerLoader = void 0;
4
+ const las_loader_1 = require("./las-loader");
5
+ Object.defineProperty(exports, "LASWorkerLoader", { enumerable: true, get: function () { return las_loader_1.LASLoader; } });
6
+ const parse_las_1 = require("./lib/parse-las");
7
+ /**
8
+ * Loader for the LAS (LASer) point cloud format
9
+ */
10
+ exports.LASLoader = {
11
+ ...las_loader_1.LASLoader,
12
+ parse: async (arrayBuffer, options) => (0, parse_las_1.parseLAS)(arrayBuffer, options),
13
+ parseSync: (arrayBuffer, options) => (0, parse_las_1.parseLAS)(arrayBuffer, options)
7
14
  };
8
- export const _typecheckLoader = LASLoader;
9
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,16 @@
1
+ import type { Loader, LoaderOptions } from '@loaders.gl/loader-utils';
2
+ import type { LASMesh } from './lib/las-types';
3
+ export type LASLoaderOptions = LoaderOptions & {
4
+ las?: {
5
+ shape?: 'mesh' | 'columnar-table' | 'arrow-table';
6
+ fp64?: boolean;
7
+ skip?: number;
8
+ colorDepth?: number | string;
9
+ };
10
+ onProgress?: Function;
11
+ };
12
+ /**
13
+ * Loader for the LAS (LASer) point cloud format
14
+ */
15
+ export declare const LASLoader: Loader<LASMesh, never, LASLoaderOptions>;
16
+ //# sourceMappingURL=las-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"las-loader.d.ts","sourceRoot":"","sources":["../src/las-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAM7C,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,aAAa,CAAC;QAClD,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC9B,CAAC;IACF,UAAU,CAAC,EAAE,QAAQ,CAAC;CACvB,CAAC;AAWF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAY9D,CAAC"}
@@ -1,24 +1,30 @@
1
- const VERSION = typeof "4.0.0-alpha.4" !== 'undefined' ? "4.0.0-alpha.4" : 'latest';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LASLoader = void 0;
4
+ // __VERSION__ is injected by babel-plugin-version-inline
5
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
6
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
2
7
  const DEFAULT_LAS_OPTIONS = {
3
- las: {
4
- shape: 'mesh',
5
- fp64: false,
6
- skip: 1,
7
- colorDepth: 8
8
- }
8
+ las: {
9
+ shape: 'mesh',
10
+ fp64: false,
11
+ skip: 1,
12
+ colorDepth: 8
13
+ }
9
14
  };
10
- export const LASLoader = {
11
- name: 'LAS',
12
- id: 'las',
13
- module: 'las',
14
- version: VERSION,
15
- worker: true,
16
- extensions: ['las', 'laz'],
17
- mimeTypes: ['application/octet-stream'],
18
- text: true,
19
- binary: true,
20
- tests: ['LAS'],
21
- options: DEFAULT_LAS_OPTIONS
15
+ /**
16
+ * Loader for the LAS (LASer) point cloud format
17
+ */
18
+ exports.LASLoader = {
19
+ name: 'LAS',
20
+ id: 'las',
21
+ module: 'las',
22
+ version: VERSION,
23
+ worker: true,
24
+ extensions: ['las', 'laz'],
25
+ mimeTypes: ['application/octet-stream'],
26
+ text: true,
27
+ binary: true,
28
+ tests: ['LAS'],
29
+ options: DEFAULT_LAS_OPTIONS
22
30
  };
23
- export const _typecheckLoader = LASLoader;
24
- //# sourceMappingURL=las-loader.js.map