@loaders.gl/las 4.3.4 → 4.4.0-alpha.10
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/dist.dev.js +15429 -2519
- package/dist/dist.min.js +25 -16
- package/dist/index.cjs +1037 -63
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +7 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -0
- package/dist/las-arrow-loader.d.ts +30 -0
- package/dist/las-arrow-loader.d.ts.map +1 -0
- package/dist/las-arrow-loader.js +21 -0
- package/dist/las-arrow-loader.js.map +1 -0
- package/dist/las-format.d.ts +14 -0
- package/dist/las-format.d.ts.map +1 -0
- package/dist/las-format.js +17 -0
- package/dist/las-format.js.map +1 -0
- package/dist/las-loader.d.ts +9 -10
- package/dist/las-loader.d.ts.map +1 -1
- package/dist/las-loader.js +8 -11
- package/dist/las-loader.js.map +1 -0
- package/dist/las-worker.js +65 -58
- package/dist/laz-rs-loader.d.ts +29 -0
- package/dist/laz-rs-loader.d.ts.map +1 -0
- package/dist/laz-rs-loader.js +17 -0
- package/dist/laz-rs-loader.js.map +1 -0
- package/dist/lazperf-loader.d.ts +31 -0
- package/dist/lazperf-loader.d.ts.map +1 -0
- package/dist/lazperf-loader.js +15 -0
- package/dist/lazperf-loader.js.map +1 -0
- package/dist/lib/get-las-schema.d.ts +1 -1
- package/dist/lib/get-las-schema.d.ts.map +1 -1
- package/dist/lib/get-las-schema.js +6 -2
- package/dist/lib/get-las-schema.js.map +1 -0
- package/dist/lib/las-types.d.ts +2 -1
- package/dist/lib/las-types.d.ts.map +1 -1
- package/dist/lib/las-types.js +4 -0
- package/dist/lib/las-types.js.map +1 -0
- package/dist/lib/{laslaz-decoder.d.ts → laz-perf/laslaz-decoder.d.ts} +1 -1
- package/dist/lib/laz-perf/laslaz-decoder.d.ts.map +1 -0
- package/dist/lib/{laslaz-decoder.js → laz-perf/laslaz-decoder.js} +7 -2
- package/dist/lib/laz-perf/laslaz-decoder.js.map +1 -0
- package/dist/lib/{parse-las.d.ts → laz-perf/parse-las.d.ts} +3 -3
- package/dist/lib/laz-perf/parse-las.d.ts.map +1 -0
- package/dist/lib/laz-perf/parse-las.js +189 -0
- package/dist/lib/laz-perf/parse-las.js.map +1 -0
- package/dist/lib/laz-rs-wasm/laslaz-decoder.d.ts +134 -0
- package/dist/lib/laz-rs-wasm/laslaz-decoder.d.ts.map +1 -0
- package/dist/lib/laz-rs-wasm/laslaz-decoder.js +446 -0
- package/dist/lib/laz-rs-wasm/laslaz-decoder.js.map +1 -0
- package/dist/lib/laz-rs-wasm/parse-las.d.ts +18 -0
- package/dist/lib/laz-rs-wasm/parse-las.d.ts.map +1 -0
- package/dist/lib/{parse-las.js → laz-rs-wasm/parse-las.js} +10 -8
- package/dist/lib/laz-rs-wasm/parse-las.js.map +1 -0
- package/dist/libs/laz-perf/laz-perf.d.ts.map +1 -0
- package/dist/{lib/libs → libs/laz-perf}/laz-perf.js +1 -0
- package/dist/libs/laz-perf/laz-perf.js.map +1 -0
- package/dist/libs/laz-rs-wasm/laz_rs_wasm.d.ts +95 -0
- package/dist/libs/laz-rs-wasm/laz_rs_wasm.d.ts.map +1 -0
- package/dist/libs/laz-rs-wasm/laz_rs_wasm.js +425 -0
- package/dist/libs/laz-rs-wasm/laz_rs_wasm.js.map +1 -0
- package/dist/workers/las-worker.js +4 -0
- package/dist/workers/las-worker.js.map +1 -0
- package/package.json +9 -5
- package/src/index.ts +14 -18
- package/src/las-arrow-loader.ts +26 -0
- package/src/las-format.ts +19 -0
- package/src/las-loader.ts +8 -10
- package/src/laz-rs-loader.ts +22 -0
- package/src/lazperf-loader.ts +22 -0
- package/src/lib/get-las-schema.ts +7 -2
- package/src/lib/las-types.ts +6 -1
- package/src/lib/{laslaz-decoder.ts → laz-perf/laslaz-decoder.ts} +8 -3
- package/src/lib/laz-perf/parse-las.ts +233 -0
- package/src/lib/laz-rs-wasm/laslaz-decoder.ts +528 -0
- package/src/lib/{parse-las.ts → laz-rs-wasm/parse-las.ts} +12 -12
- package/src/libs/laz-rs-wasm/laz_rs_wasm.d.ts +80 -0
- package/src/libs/laz-rs-wasm/laz_rs_wasm.js +477 -0
- package/src/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
- package/src/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +31 -0
- package/src/libs/laz-rs-wasm/package.json +19 -0
- package/src/workers/las-worker.ts +4 -0
- package/dist/lib/laslaz-decoder.d.ts.map +0 -1
- package/dist/lib/libs/laz-perf.d.ts.map +0 -1
- package/dist/lib/parse-las.d.ts.map +0 -1
- /package/dist/{lib/libs → libs/laz-perf}/laz-perf.d.ts +0 -0
- /package/src/{lib/libs → libs/laz-perf}/laz-perf.ts +0 -0
package/dist/index.cjs
CHANGED
|
@@ -20,28 +20,37 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// dist/index.js
|
|
21
21
|
var dist_exports = {};
|
|
22
22
|
__export(dist_exports, {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
LASArrowLoader: () => LASArrowLoader,
|
|
24
|
+
LASFormat: () => LASFormat,
|
|
25
|
+
LASLoader: () => LAZPerfLoader,
|
|
26
|
+
LASWorkerLoader: () => LASWorkerLoader,
|
|
27
|
+
LAZPerfLoader: () => LAZPerfLoader,
|
|
28
|
+
LAZRsLoader: () => LAZRsLoader
|
|
25
29
|
});
|
|
26
30
|
module.exports = __toCommonJS(dist_exports);
|
|
27
31
|
|
|
28
|
-
// dist/las-
|
|
29
|
-
var
|
|
30
|
-
var LASLoader = {
|
|
31
|
-
dataType: null,
|
|
32
|
-
batchType: null,
|
|
32
|
+
// dist/las-format.js
|
|
33
|
+
var LASFormat = {
|
|
33
34
|
name: "LAS",
|
|
34
35
|
id: "las",
|
|
35
36
|
module: "las",
|
|
36
|
-
version: VERSION,
|
|
37
|
-
worker: true,
|
|
38
37
|
extensions: ["las", "laz"],
|
|
39
38
|
// LAZ is the "compressed" flavor of LAS,
|
|
40
39
|
mimeTypes: ["application/octet-stream"],
|
|
41
40
|
// TODO - text version?
|
|
42
|
-
text:
|
|
41
|
+
text: false,
|
|
43
42
|
binary: true,
|
|
44
|
-
tests: ["
|
|
43
|
+
tests: ["LASF"]
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// dist/las-loader.js
|
|
47
|
+
var VERSION = true ? "4.4.0-alpha.10" : "latest";
|
|
48
|
+
var LASWorkerLoader = {
|
|
49
|
+
...LASFormat,
|
|
50
|
+
dataType: null,
|
|
51
|
+
batchType: null,
|
|
52
|
+
version: VERSION,
|
|
53
|
+
worker: true,
|
|
45
54
|
options: {
|
|
46
55
|
las: {
|
|
47
56
|
shape: "mesh",
|
|
@@ -52,10 +61,42 @@ var LASLoader = {
|
|
|
52
61
|
}
|
|
53
62
|
};
|
|
54
63
|
|
|
55
|
-
// dist/lib/parse-las.js
|
|
56
|
-
var
|
|
64
|
+
// dist/lib/laz-perf/parse-las.js
|
|
65
|
+
var import_schema_utils2 = require("@loaders.gl/schema-utils");
|
|
66
|
+
|
|
67
|
+
// dist/lib/get-las-schema.js
|
|
68
|
+
var import_schema_utils = require("@loaders.gl/schema-utils");
|
|
69
|
+
function getLASSchema(lasHeader, attributes) {
|
|
70
|
+
const metadataMap = makeMetadataFromLasHeader(lasHeader);
|
|
71
|
+
const schema = (0, import_schema_utils.deduceMeshSchema)(attributes, metadataMap);
|
|
72
|
+
return schema;
|
|
73
|
+
}
|
|
74
|
+
function makeMetadataFromLasHeader(lasHeader) {
|
|
75
|
+
const metadata = {};
|
|
76
|
+
metadata.las_pointsOffset = lasHeader.pointsOffset.toString(10);
|
|
77
|
+
metadata.las_pointsFormatId = lasHeader.pointsFormatId.toString(10);
|
|
78
|
+
metadata.las_pointsStructSize = lasHeader.pointsStructSize.toString(10);
|
|
79
|
+
metadata.las_pointsCount = lasHeader.pointsCount.toString(10);
|
|
80
|
+
metadata.las_scale = JSON.stringify(lasHeader.scale);
|
|
81
|
+
metadata.las_offset = JSON.stringify(lasHeader.offset);
|
|
82
|
+
if (lasHeader.maxs !== void 0) {
|
|
83
|
+
metadata.las_maxs = JSON.stringify(lasHeader.maxs);
|
|
84
|
+
}
|
|
85
|
+
if (lasHeader.mins !== void 0) {
|
|
86
|
+
metadata.las_mins = JSON.stringify(lasHeader.mins);
|
|
87
|
+
}
|
|
88
|
+
metadata.las_totalToRead = lasHeader.totalToRead.toString(10);
|
|
89
|
+
metadata.las_pointsFortotalReadmatId = lasHeader.totalRead.toString(10);
|
|
90
|
+
if (lasHeader.versionAsString !== void 0) {
|
|
91
|
+
metadata.las_versionAsString = lasHeader.versionAsString;
|
|
92
|
+
}
|
|
93
|
+
if (lasHeader.isCompressed !== void 0) {
|
|
94
|
+
metadata.las_isCompressed = lasHeader.isCompressed.toString();
|
|
95
|
+
}
|
|
96
|
+
return metadata;
|
|
97
|
+
}
|
|
57
98
|
|
|
58
|
-
// dist/
|
|
99
|
+
// dist/libs/laz-perf/laz-perf.js
|
|
59
100
|
function getModule() {
|
|
60
101
|
var Module2 = typeof Module2 !== "undefined" ? Module2 : {};
|
|
61
102
|
var moduleOverrides = {};
|
|
@@ -2075,10 +2116,10 @@ function getModule() {
|
|
|
2075
2116
|
}
|
|
2076
2117
|
function __embind_register_std_wstring(rawType, charSize, name) {
|
|
2077
2118
|
name = readLatin1String(name);
|
|
2078
|
-
var decodeString,
|
|
2119
|
+
var decodeString, encodeString2, getHeap, lengthBytesUTF, shift;
|
|
2079
2120
|
if (charSize === 2) {
|
|
2080
2121
|
decodeString = UTF16ToString;
|
|
2081
|
-
|
|
2122
|
+
encodeString2 = stringToUTF16;
|
|
2082
2123
|
lengthBytesUTF = lengthBytesUTF16;
|
|
2083
2124
|
getHeap = function() {
|
|
2084
2125
|
return HEAPU16;
|
|
@@ -2086,7 +2127,7 @@ function getModule() {
|
|
|
2086
2127
|
shift = 1;
|
|
2087
2128
|
} else if (charSize === 4) {
|
|
2088
2129
|
decodeString = UTF32ToString;
|
|
2089
|
-
|
|
2130
|
+
encodeString2 = stringToUTF32;
|
|
2090
2131
|
lengthBytesUTF = lengthBytesUTF32;
|
|
2091
2132
|
getHeap = function() {
|
|
2092
2133
|
return HEAPU32;
|
|
@@ -2124,7 +2165,7 @@ function getModule() {
|
|
|
2124
2165
|
var length = lengthBytesUTF(value);
|
|
2125
2166
|
var ptr = _malloc(4 + length + charSize);
|
|
2126
2167
|
HEAPU32[ptr >> 2] = length >> shift;
|
|
2127
|
-
|
|
2168
|
+
encodeString2(value, ptr + 4, length + charSize);
|
|
2128
2169
|
if (destructors !== null) {
|
|
2129
2170
|
destructors.push(_free, ptr);
|
|
2130
2171
|
}
|
|
@@ -18470,7 +18511,7 @@ function getModule() {
|
|
|
18470
18511
|
return Module2;
|
|
18471
18512
|
}
|
|
18472
18513
|
|
|
18473
|
-
// dist/lib/laslaz-decoder.js
|
|
18514
|
+
// dist/lib/laz-perf/laslaz-decoder.js
|
|
18474
18515
|
var Module = null;
|
|
18475
18516
|
var POINT_FORMAT_READERS = {
|
|
18476
18517
|
0: (dv) => {
|
|
@@ -18535,7 +18576,7 @@ function parseLASHeader(arraybuffer) {
|
|
|
18535
18576
|
o.mins = [bounds[1], bounds[3], bounds[5]];
|
|
18536
18577
|
return o;
|
|
18537
18578
|
}
|
|
18538
|
-
var
|
|
18579
|
+
var LASLoader = class {
|
|
18539
18580
|
arraybuffer;
|
|
18540
18581
|
readOffset = 0;
|
|
18541
18582
|
header = {
|
|
@@ -18550,7 +18591,8 @@ var LASLoader2 = class {
|
|
|
18550
18591
|
totalToRead: 0,
|
|
18551
18592
|
totalRead: 0,
|
|
18552
18593
|
versionAsString: "",
|
|
18553
|
-
isCompressed: true
|
|
18594
|
+
isCompressed: true,
|
|
18595
|
+
hasColor: false
|
|
18554
18596
|
};
|
|
18555
18597
|
constructor(arraybuffer) {
|
|
18556
18598
|
this.arraybuffer = arraybuffer;
|
|
@@ -18772,7 +18814,7 @@ var LASFile = class {
|
|
|
18772
18814
|
if (POINT_FORMAT_READERS[this.formatId] === void 0) {
|
|
18773
18815
|
throw new Error("The point format ID is not supported");
|
|
18774
18816
|
}
|
|
18775
|
-
this.loader = this.isCompressed ? new LAZLoader(this.arraybuffer) : new
|
|
18817
|
+
this.loader = this.isCompressed ? new LAZLoader(this.arraybuffer) : new LASLoader(this.arraybuffer);
|
|
18776
18818
|
}
|
|
18777
18819
|
/**
|
|
18778
18820
|
* Determines format in parameters of LASHeaer
|
|
@@ -18837,39 +18879,7 @@ var LASFile = class {
|
|
|
18837
18879
|
}
|
|
18838
18880
|
};
|
|
18839
18881
|
|
|
18840
|
-
// dist/lib/
|
|
18841
|
-
var import_schema = require("@loaders.gl/schema");
|
|
18842
|
-
function getLASSchema(lasHeader, attributes) {
|
|
18843
|
-
const metadataMap = makeMetadataFromLasHeader(lasHeader);
|
|
18844
|
-
const schema = (0, import_schema.deduceMeshSchema)(attributes, metadataMap);
|
|
18845
|
-
return schema;
|
|
18846
|
-
}
|
|
18847
|
-
function makeMetadataFromLasHeader(lasHeader) {
|
|
18848
|
-
const metadata = {};
|
|
18849
|
-
metadata.las_pointsOffset = lasHeader.pointsOffset.toString(10);
|
|
18850
|
-
metadata.las_pointsFormatId = lasHeader.pointsFormatId.toString(10);
|
|
18851
|
-
metadata.las_pointsStructSize = lasHeader.pointsStructSize.toString(10);
|
|
18852
|
-
metadata.las_pointsCount = lasHeader.pointsCount.toString(10);
|
|
18853
|
-
metadata.las_scale = JSON.stringify(lasHeader.scale);
|
|
18854
|
-
metadata.las_offset = JSON.stringify(lasHeader.offset);
|
|
18855
|
-
if (lasHeader.maxs !== void 0) {
|
|
18856
|
-
metadata.las_maxs = JSON.stringify(lasHeader.maxs);
|
|
18857
|
-
}
|
|
18858
|
-
if (lasHeader.mins !== void 0) {
|
|
18859
|
-
metadata.las_mins = JSON.stringify(lasHeader.mins);
|
|
18860
|
-
}
|
|
18861
|
-
metadata.las_totalToRead = lasHeader.totalToRead.toString(10);
|
|
18862
|
-
metadata.las_pointsFortotalReadmatId = lasHeader.totalRead.toString(10);
|
|
18863
|
-
if (lasHeader.versionAsString !== void 0) {
|
|
18864
|
-
metadata.las_versionAsString = lasHeader.versionAsString;
|
|
18865
|
-
}
|
|
18866
|
-
if (lasHeader.isCompressed !== void 0) {
|
|
18867
|
-
metadata.las_isCompressed = lasHeader.isCompressed.toString();
|
|
18868
|
-
}
|
|
18869
|
-
return metadata;
|
|
18870
|
-
}
|
|
18871
|
-
|
|
18872
|
-
// dist/lib/parse-las.js
|
|
18882
|
+
// dist/lib/laz-perf/parse-las.js
|
|
18873
18883
|
function parseLAS(arrayBuffer, options) {
|
|
18874
18884
|
return parseLASMesh(arrayBuffer, options);
|
|
18875
18885
|
}
|
|
@@ -18905,7 +18915,7 @@ function parseLASMesh(arrayBuffer, options = {}) {
|
|
|
18905
18915
|
const total = lasHeader.totalToRead;
|
|
18906
18916
|
const PositionsType = ((_a2 = options.las) == null ? void 0 : _a2.fp64) ? Float64Array : Float32Array;
|
|
18907
18917
|
positions = new PositionsType(total * 3);
|
|
18908
|
-
colors = lasHeader.
|
|
18918
|
+
colors = lasHeader.hasColor ? new Uint8Array(total * 4) : null;
|
|
18909
18919
|
intensities = new Uint16Array(total);
|
|
18910
18920
|
classifications = new Uint8Array(total);
|
|
18911
18921
|
lasMesh.loaderData = lasHeader;
|
|
@@ -18954,7 +18964,7 @@ function parseLASMesh(arrayBuffer, options = {}) {
|
|
|
18954
18964
|
});
|
|
18955
18965
|
lasMesh.header = {
|
|
18956
18966
|
vertexCount: originalHeader.totalToRead,
|
|
18957
|
-
boundingBox: (0,
|
|
18967
|
+
boundingBox: (0, import_schema_utils2.getMeshBoundingBox)((lasMesh == null ? void 0 : lasMesh.attributes) || {})
|
|
18958
18968
|
};
|
|
18959
18969
|
if (lasMesh) {
|
|
18960
18970
|
lasMesh.schema = getLASSchema(lasMesh.loaderData, lasMesh.attributes);
|
|
@@ -18971,11 +18981,9 @@ function parseLASChunked(rawData, skip, onParseData = {}) {
|
|
|
18971
18981
|
header.totalToRead = totalToRead;
|
|
18972
18982
|
let totalRead = 0;
|
|
18973
18983
|
while (true) {
|
|
18974
|
-
const chunk = dataHandler.readData(1e3 * 100,
|
|
18984
|
+
const chunk = dataHandler.readData(1e3 * 100, skip);
|
|
18975
18985
|
totalRead += chunk.count;
|
|
18976
18986
|
header.totalRead = totalRead;
|
|
18977
|
-
header.versionAsString = chunk.versionAsString;
|
|
18978
|
-
header.isCompressed = chunk.isCompressed;
|
|
18979
18987
|
const unpacker = new Unpacker(chunk.buffer, chunk.count, header);
|
|
18980
18988
|
onParseData(unpacker, header);
|
|
18981
18989
|
if (!chunk.hasMoreData || totalRead >= totalToRead) {
|
|
@@ -19014,10 +19022,976 @@ function detectTwoByteColors(decoder = {}, batchSize, colorDepth) {
|
|
|
19014
19022
|
return twoByteColor;
|
|
19015
19023
|
}
|
|
19016
19024
|
|
|
19017
|
-
// dist/
|
|
19018
|
-
var
|
|
19019
|
-
...
|
|
19025
|
+
// dist/lazperf-loader.js
|
|
19026
|
+
var LAZPerfLoader = {
|
|
19027
|
+
...LASWorkerLoader,
|
|
19020
19028
|
parse: async (arrayBuffer, options) => parseLAS(arrayBuffer, options),
|
|
19021
19029
|
parseSync: (arrayBuffer, options) => parseLAS(arrayBuffer, options)
|
|
19022
19030
|
};
|
|
19031
|
+
|
|
19032
|
+
// dist/las-arrow-loader.js
|
|
19033
|
+
var import_schema_utils3 = require("@loaders.gl/schema-utils");
|
|
19034
|
+
var LASArrowLoader = {
|
|
19035
|
+
...LAZPerfLoader,
|
|
19036
|
+
dataType: null,
|
|
19037
|
+
batchType: null,
|
|
19038
|
+
worker: false,
|
|
19039
|
+
parse: async (arrayBuffer) => {
|
|
19040
|
+
const mesh = await LAZPerfLoader.parse(arrayBuffer);
|
|
19041
|
+
const arrowTable = (0, import_schema_utils3.convertMeshToTable)(mesh, "arrow-table");
|
|
19042
|
+
return arrowTable;
|
|
19043
|
+
}
|
|
19044
|
+
// @ts-expect-error parseSync
|
|
19045
|
+
};
|
|
19046
|
+
|
|
19047
|
+
// dist/lib/laz-rs-wasm/parse-las.js
|
|
19048
|
+
var import_schema_utils4 = require("@loaders.gl/schema-utils");
|
|
19049
|
+
|
|
19050
|
+
// dist/libs/laz-rs-wasm/laz_rs_wasm.js
|
|
19051
|
+
var import_meta = {};
|
|
19052
|
+
var wasm;
|
|
19053
|
+
var cachedUint8ArrayMemory0 = null;
|
|
19054
|
+
function getUint8ArrayMemory0() {
|
|
19055
|
+
if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
|
|
19056
|
+
cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
|
|
19057
|
+
}
|
|
19058
|
+
return cachedUint8ArrayMemory0;
|
|
19059
|
+
}
|
|
19060
|
+
function getArrayU8FromWasm0(ptr, len) {
|
|
19061
|
+
ptr = ptr >>> 0;
|
|
19062
|
+
return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
|
|
19063
|
+
}
|
|
19064
|
+
var cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => {
|
|
19065
|
+
throw Error("TextDecoder not available");
|
|
19066
|
+
} };
|
|
19067
|
+
if (typeof TextDecoder !== "undefined") {
|
|
19068
|
+
cachedTextDecoder.decode();
|
|
19069
|
+
}
|
|
19070
|
+
function getStringFromWasm0(ptr, len) {
|
|
19071
|
+
ptr = ptr >>> 0;
|
|
19072
|
+
return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
|
|
19073
|
+
}
|
|
19074
|
+
function _assertClass(instance, klass) {
|
|
19075
|
+
if (!(instance instanceof klass)) {
|
|
19076
|
+
throw new Error(`expected instance of ${klass.name}`);
|
|
19077
|
+
}
|
|
19078
|
+
return instance.ptr;
|
|
19079
|
+
}
|
|
19080
|
+
function takeFromExternrefTable0(idx) {
|
|
19081
|
+
const value = wasm.__wbindgen_export_0.get(idx);
|
|
19082
|
+
wasm.__externref_table_dealloc(idx);
|
|
19083
|
+
return value;
|
|
19084
|
+
}
|
|
19085
|
+
var WASM_VECTOR_LEN = 0;
|
|
19086
|
+
function passArray8ToWasm0(arg, malloc) {
|
|
19087
|
+
const ptr = malloc(arg.length * 1, 1) >>> 0;
|
|
19088
|
+
getUint8ArrayMemory0().set(arg, ptr / 1);
|
|
19089
|
+
WASM_VECTOR_LEN = arg.length;
|
|
19090
|
+
return ptr;
|
|
19091
|
+
}
|
|
19092
|
+
var cachedTextEncoder = typeof TextEncoder !== "undefined" ? new TextEncoder("utf-8") : { encode: () => {
|
|
19093
|
+
throw Error("TextEncoder not available");
|
|
19094
|
+
} };
|
|
19095
|
+
var encodeString = typeof cachedTextEncoder.encodeInto === "function" ? function(arg, view) {
|
|
19096
|
+
return cachedTextEncoder.encodeInto(arg, view);
|
|
19097
|
+
} : function(arg, view) {
|
|
19098
|
+
const buf = cachedTextEncoder.encode(arg);
|
|
19099
|
+
view.set(buf);
|
|
19100
|
+
return {
|
|
19101
|
+
read: arg.length,
|
|
19102
|
+
written: buf.length
|
|
19103
|
+
};
|
|
19104
|
+
};
|
|
19105
|
+
function passStringToWasm0(arg, malloc, realloc) {
|
|
19106
|
+
if (realloc === void 0) {
|
|
19107
|
+
const buf = cachedTextEncoder.encode(arg);
|
|
19108
|
+
const ptr2 = malloc(buf.length, 1) >>> 0;
|
|
19109
|
+
getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);
|
|
19110
|
+
WASM_VECTOR_LEN = buf.length;
|
|
19111
|
+
return ptr2;
|
|
19112
|
+
}
|
|
19113
|
+
let len = arg.length;
|
|
19114
|
+
let ptr = malloc(len, 1) >>> 0;
|
|
19115
|
+
const mem = getUint8ArrayMemory0();
|
|
19116
|
+
let offset = 0;
|
|
19117
|
+
for (; offset < len; offset++) {
|
|
19118
|
+
const code = arg.charCodeAt(offset);
|
|
19119
|
+
if (code > 127)
|
|
19120
|
+
break;
|
|
19121
|
+
mem[ptr + offset] = code;
|
|
19122
|
+
}
|
|
19123
|
+
if (offset !== len) {
|
|
19124
|
+
if (offset !== 0) {
|
|
19125
|
+
arg = arg.slice(offset);
|
|
19126
|
+
}
|
|
19127
|
+
ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
|
|
19128
|
+
const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
|
|
19129
|
+
const ret = encodeString(arg, view);
|
|
19130
|
+
offset += ret.written;
|
|
19131
|
+
ptr = realloc(ptr, len, offset, 1) >>> 0;
|
|
19132
|
+
}
|
|
19133
|
+
WASM_VECTOR_LEN = offset;
|
|
19134
|
+
return ptr;
|
|
19135
|
+
}
|
|
19136
|
+
var cachedDataViewMemory0 = null;
|
|
19137
|
+
function getDataViewMemory0() {
|
|
19138
|
+
if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === void 0 && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {
|
|
19139
|
+
cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
|
|
19140
|
+
}
|
|
19141
|
+
return cachedDataViewMemory0;
|
|
19142
|
+
}
|
|
19143
|
+
var WasmLasZipDecompressorFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
|
|
19144
|
+
}, unregister: () => {
|
|
19145
|
+
} } : new FinalizationRegistry((ptr) => wasm.__wbg_wasmlaszipdecompressor_free(ptr >>> 0, 1));
|
|
19146
|
+
var WasmLasZipDecompressor = class {
|
|
19147
|
+
__destroy_into_raw() {
|
|
19148
|
+
const ptr = this.__wbg_ptr;
|
|
19149
|
+
this.__wbg_ptr = 0;
|
|
19150
|
+
WasmLasZipDecompressorFinalization.unregister(this);
|
|
19151
|
+
return ptr;
|
|
19152
|
+
}
|
|
19153
|
+
free() {
|
|
19154
|
+
const ptr = this.__destroy_into_raw();
|
|
19155
|
+
wasm.__wbg_wasmlaszipdecompressor_free(ptr, 0);
|
|
19156
|
+
}
|
|
19157
|
+
/**
|
|
19158
|
+
* @returns {WasmQuickHeader}
|
|
19159
|
+
*/
|
|
19160
|
+
get header() {
|
|
19161
|
+
const ret = wasm.__wbg_get_wasmlaszipdecompressor_header(this.__wbg_ptr);
|
|
19162
|
+
return WasmQuickHeader.__wrap(ret);
|
|
19163
|
+
}
|
|
19164
|
+
/**
|
|
19165
|
+
* @param {WasmQuickHeader} arg0
|
|
19166
|
+
*/
|
|
19167
|
+
set header(arg0) {
|
|
19168
|
+
_assertClass(arg0, WasmQuickHeader);
|
|
19169
|
+
var ptr0 = arg0.__destroy_into_raw();
|
|
19170
|
+
wasm.__wbg_set_wasmlaszipdecompressor_header(this.__wbg_ptr, ptr0);
|
|
19171
|
+
}
|
|
19172
|
+
/**
|
|
19173
|
+
* @param {Uint8Array} buf
|
|
19174
|
+
*/
|
|
19175
|
+
constructor(buf) {
|
|
19176
|
+
const ret = wasm.wasmlaszipdecompressor_new(buf);
|
|
19177
|
+
if (ret[2]) {
|
|
19178
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
19179
|
+
}
|
|
19180
|
+
this.__wbg_ptr = ret[0] >>> 0;
|
|
19181
|
+
WasmLasZipDecompressorFinalization.register(this, this.__wbg_ptr, this);
|
|
19182
|
+
return this;
|
|
19183
|
+
}
|
|
19184
|
+
/**
|
|
19185
|
+
* @param {Uint8Array} out
|
|
19186
|
+
*/
|
|
19187
|
+
decompress_many(out) {
|
|
19188
|
+
var ptr0 = passArray8ToWasm0(out, wasm.__wbindgen_malloc);
|
|
19189
|
+
var len0 = WASM_VECTOR_LEN;
|
|
19190
|
+
const ret = wasm.wasmlaszipdecompressor_decompress_many(this.__wbg_ptr, ptr0, len0, out);
|
|
19191
|
+
if (ret[1]) {
|
|
19192
|
+
throw takeFromExternrefTable0(ret[0]);
|
|
19193
|
+
}
|
|
19194
|
+
}
|
|
19195
|
+
};
|
|
19196
|
+
var WasmQuickHeaderFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
|
|
19197
|
+
}, unregister: () => {
|
|
19198
|
+
} } : new FinalizationRegistry((ptr) => wasm.__wbg_wasmquickheader_free(ptr >>> 0, 1));
|
|
19199
|
+
var WasmQuickHeader = class {
|
|
19200
|
+
static __wrap(ptr) {
|
|
19201
|
+
ptr = ptr >>> 0;
|
|
19202
|
+
const obj = Object.create(WasmQuickHeader.prototype);
|
|
19203
|
+
obj.__wbg_ptr = ptr;
|
|
19204
|
+
WasmQuickHeaderFinalization.register(obj, obj.__wbg_ptr, obj);
|
|
19205
|
+
return obj;
|
|
19206
|
+
}
|
|
19207
|
+
__destroy_into_raw() {
|
|
19208
|
+
const ptr = this.__wbg_ptr;
|
|
19209
|
+
this.__wbg_ptr = 0;
|
|
19210
|
+
WasmQuickHeaderFinalization.unregister(this);
|
|
19211
|
+
return ptr;
|
|
19212
|
+
}
|
|
19213
|
+
free() {
|
|
19214
|
+
const ptr = this.__destroy_into_raw();
|
|
19215
|
+
wasm.__wbg_wasmquickheader_free(ptr, 0);
|
|
19216
|
+
}
|
|
19217
|
+
/**
|
|
19218
|
+
* @returns {number}
|
|
19219
|
+
*/
|
|
19220
|
+
get major() {
|
|
19221
|
+
const ret = wasm.__wbg_get_wasmquickheader_major(this.__wbg_ptr);
|
|
19222
|
+
return ret;
|
|
19223
|
+
}
|
|
19224
|
+
/**
|
|
19225
|
+
* @param {number} arg0
|
|
19226
|
+
*/
|
|
19227
|
+
set major(arg0) {
|
|
19228
|
+
wasm.__wbg_set_wasmquickheader_major(this.__wbg_ptr, arg0);
|
|
19229
|
+
}
|
|
19230
|
+
/**
|
|
19231
|
+
* @returns {number}
|
|
19232
|
+
*/
|
|
19233
|
+
get minor() {
|
|
19234
|
+
const ret = wasm.__wbg_get_wasmquickheader_minor(this.__wbg_ptr);
|
|
19235
|
+
return ret;
|
|
19236
|
+
}
|
|
19237
|
+
/**
|
|
19238
|
+
* @param {number} arg0
|
|
19239
|
+
*/
|
|
19240
|
+
set minor(arg0) {
|
|
19241
|
+
wasm.__wbg_set_wasmquickheader_minor(this.__wbg_ptr, arg0);
|
|
19242
|
+
}
|
|
19243
|
+
/**
|
|
19244
|
+
* @returns {number}
|
|
19245
|
+
*/
|
|
19246
|
+
get offset_to_points() {
|
|
19247
|
+
const ret = wasm.__wbg_get_wasmquickheader_offset_to_points(this.__wbg_ptr);
|
|
19248
|
+
return ret >>> 0;
|
|
19249
|
+
}
|
|
19250
|
+
/**
|
|
19251
|
+
* @param {number} arg0
|
|
19252
|
+
*/
|
|
19253
|
+
set offset_to_points(arg0) {
|
|
19254
|
+
wasm.__wbg_set_wasmquickheader_offset_to_points(this.__wbg_ptr, arg0);
|
|
19255
|
+
}
|
|
19256
|
+
/**
|
|
19257
|
+
* @returns {number}
|
|
19258
|
+
*/
|
|
19259
|
+
get num_vlrs() {
|
|
19260
|
+
const ret = wasm.__wbg_get_wasmquickheader_num_vlrs(this.__wbg_ptr);
|
|
19261
|
+
return ret >>> 0;
|
|
19262
|
+
}
|
|
19263
|
+
/**
|
|
19264
|
+
* @param {number} arg0
|
|
19265
|
+
*/
|
|
19266
|
+
set num_vlrs(arg0) {
|
|
19267
|
+
wasm.__wbg_set_wasmquickheader_num_vlrs(this.__wbg_ptr, arg0);
|
|
19268
|
+
}
|
|
19269
|
+
/**
|
|
19270
|
+
* @returns {number}
|
|
19271
|
+
*/
|
|
19272
|
+
get point_format_id() {
|
|
19273
|
+
const ret = wasm.__wbg_get_wasmquickheader_point_format_id(this.__wbg_ptr);
|
|
19274
|
+
return ret;
|
|
19275
|
+
}
|
|
19276
|
+
/**
|
|
19277
|
+
* @param {number} arg0
|
|
19278
|
+
*/
|
|
19279
|
+
set point_format_id(arg0) {
|
|
19280
|
+
wasm.__wbg_set_wasmquickheader_point_format_id(this.__wbg_ptr, arg0);
|
|
19281
|
+
}
|
|
19282
|
+
/**
|
|
19283
|
+
* @returns {number}
|
|
19284
|
+
*/
|
|
19285
|
+
get point_size() {
|
|
19286
|
+
const ret = wasm.__wbg_get_wasmquickheader_point_size(this.__wbg_ptr);
|
|
19287
|
+
return ret;
|
|
19288
|
+
}
|
|
19289
|
+
/**
|
|
19290
|
+
* @param {number} arg0
|
|
19291
|
+
*/
|
|
19292
|
+
set point_size(arg0) {
|
|
19293
|
+
wasm.__wbg_set_wasmquickheader_point_size(this.__wbg_ptr, arg0);
|
|
19294
|
+
}
|
|
19295
|
+
/**
|
|
19296
|
+
* @returns {bigint}
|
|
19297
|
+
*/
|
|
19298
|
+
get num_points() {
|
|
19299
|
+
const ret = wasm.__wbg_get_wasmquickheader_num_points(this.__wbg_ptr);
|
|
19300
|
+
return BigInt.asUintN(64, ret);
|
|
19301
|
+
}
|
|
19302
|
+
/**
|
|
19303
|
+
* @param {bigint} arg0
|
|
19304
|
+
*/
|
|
19305
|
+
set num_points(arg0) {
|
|
19306
|
+
wasm.__wbg_set_wasmquickheader_num_points(this.__wbg_ptr, arg0);
|
|
19307
|
+
}
|
|
19308
|
+
/**
|
|
19309
|
+
* @returns {number}
|
|
19310
|
+
*/
|
|
19311
|
+
get header_size() {
|
|
19312
|
+
const ret = wasm.__wbg_get_wasmquickheader_header_size(this.__wbg_ptr);
|
|
19313
|
+
return ret;
|
|
19314
|
+
}
|
|
19315
|
+
/**
|
|
19316
|
+
* @param {number} arg0
|
|
19317
|
+
*/
|
|
19318
|
+
set header_size(arg0) {
|
|
19319
|
+
wasm.__wbg_set_wasmquickheader_header_size(this.__wbg_ptr, arg0);
|
|
19320
|
+
}
|
|
19321
|
+
};
|
|
19322
|
+
async function __wbg_load(module2, imports) {
|
|
19323
|
+
if (typeof Response === "function" && module2 instanceof Response) {
|
|
19324
|
+
if (typeof WebAssembly.instantiateStreaming === "function") {
|
|
19325
|
+
try {
|
|
19326
|
+
return await WebAssembly.instantiateStreaming(module2, imports);
|
|
19327
|
+
} catch (e) {
|
|
19328
|
+
if (module2.headers.get("Content-Type") != "application/wasm") {
|
|
19329
|
+
console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
|
|
19330
|
+
} else {
|
|
19331
|
+
throw e;
|
|
19332
|
+
}
|
|
19333
|
+
}
|
|
19334
|
+
}
|
|
19335
|
+
const bytes = await module2.arrayBuffer();
|
|
19336
|
+
return await WebAssembly.instantiate(bytes, imports);
|
|
19337
|
+
} else {
|
|
19338
|
+
const instance = await WebAssembly.instantiate(module2, imports);
|
|
19339
|
+
if (instance instanceof WebAssembly.Instance) {
|
|
19340
|
+
return { instance, module: module2 };
|
|
19341
|
+
} else {
|
|
19342
|
+
return instance;
|
|
19343
|
+
}
|
|
19344
|
+
}
|
|
19345
|
+
}
|
|
19346
|
+
function __wbg_get_imports() {
|
|
19347
|
+
const imports = {};
|
|
19348
|
+
imports.wbg = {};
|
|
19349
|
+
imports.wbg.__wbindgen_copy_to_typed_array = function(arg0, arg1, arg2) {
|
|
19350
|
+
new Uint8Array(arg2.buffer, arg2.byteOffset, arg2.byteLength).set(getArrayU8FromWasm0(arg0, arg1));
|
|
19351
|
+
};
|
|
19352
|
+
imports.wbg.__wbg_buffer_ccaed51a635d8a2d = function(arg0) {
|
|
19353
|
+
const ret = arg0.buffer;
|
|
19354
|
+
return ret;
|
|
19355
|
+
};
|
|
19356
|
+
imports.wbg.__wbg_new_fec2611eb9180f95 = function(arg0) {
|
|
19357
|
+
const ret = new Uint8Array(arg0);
|
|
19358
|
+
return ret;
|
|
19359
|
+
};
|
|
19360
|
+
imports.wbg.__wbg_set_ec2fcf81bc573fd9 = function(arg0, arg1, arg2) {
|
|
19361
|
+
arg0.set(arg1, arg2 >>> 0);
|
|
19362
|
+
};
|
|
19363
|
+
imports.wbg.__wbg_length_9254c4bd3b9f23c4 = function(arg0) {
|
|
19364
|
+
const ret = arg0.length;
|
|
19365
|
+
return ret;
|
|
19366
|
+
};
|
|
19367
|
+
imports.wbg.__wbg_new_abda76e883ba8a5f = function() {
|
|
19368
|
+
const ret = new Error();
|
|
19369
|
+
return ret;
|
|
19370
|
+
};
|
|
19371
|
+
imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {
|
|
19372
|
+
const ret = arg1.stack;
|
|
19373
|
+
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
19374
|
+
const len1 = WASM_VECTOR_LEN;
|
|
19375
|
+
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
|
|
19376
|
+
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
|
|
19377
|
+
};
|
|
19378
|
+
imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {
|
|
19379
|
+
let deferred0_0;
|
|
19380
|
+
let deferred0_1;
|
|
19381
|
+
try {
|
|
19382
|
+
deferred0_0 = arg0;
|
|
19383
|
+
deferred0_1 = arg1;
|
|
19384
|
+
console.error(getStringFromWasm0(arg0, arg1));
|
|
19385
|
+
} finally {
|
|
19386
|
+
wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
|
|
19387
|
+
}
|
|
19388
|
+
};
|
|
19389
|
+
imports.wbg.__wbindgen_throw = function(arg0, arg1) {
|
|
19390
|
+
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
19391
|
+
};
|
|
19392
|
+
imports.wbg.__wbindgen_memory = function() {
|
|
19393
|
+
const ret = wasm.memory;
|
|
19394
|
+
return ret;
|
|
19395
|
+
};
|
|
19396
|
+
imports.wbg.__wbindgen_init_externref_table = function() {
|
|
19397
|
+
const table = wasm.__wbindgen_export_0;
|
|
19398
|
+
const offset = table.grow(4);
|
|
19399
|
+
table.set(0, void 0);
|
|
19400
|
+
table.set(offset + 0, void 0);
|
|
19401
|
+
table.set(offset + 1, null);
|
|
19402
|
+
table.set(offset + 2, true);
|
|
19403
|
+
table.set(offset + 3, false);
|
|
19404
|
+
;
|
|
19405
|
+
};
|
|
19406
|
+
return imports;
|
|
19407
|
+
}
|
|
19408
|
+
function __wbg_init_memory(imports, memory) {
|
|
19409
|
+
}
|
|
19410
|
+
function __wbg_finalize_init(instance, module2) {
|
|
19411
|
+
wasm = instance.exports;
|
|
19412
|
+
__wbg_init.__wbindgen_wasm_module = module2;
|
|
19413
|
+
cachedDataViewMemory0 = null;
|
|
19414
|
+
cachedUint8ArrayMemory0 = null;
|
|
19415
|
+
wasm.__wbindgen_start();
|
|
19416
|
+
return wasm;
|
|
19417
|
+
}
|
|
19418
|
+
async function __wbg_init(module_or_path) {
|
|
19419
|
+
if (wasm !== void 0)
|
|
19420
|
+
return wasm;
|
|
19421
|
+
if (typeof module_or_path !== "undefined") {
|
|
19422
|
+
if (Object.getPrototypeOf(module_or_path) === Object.prototype) {
|
|
19423
|
+
({ module_or_path } = module_or_path);
|
|
19424
|
+
} else {
|
|
19425
|
+
console.warn("using deprecated parameters for the initialization function; pass a single object instead");
|
|
19426
|
+
}
|
|
19427
|
+
}
|
|
19428
|
+
if (typeof module_or_path === "undefined") {
|
|
19429
|
+
module_or_path = new URL("laz_rs_wasm_bg.wasm", import_meta.url);
|
|
19430
|
+
}
|
|
19431
|
+
const imports = __wbg_get_imports();
|
|
19432
|
+
if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {
|
|
19433
|
+
module_or_path = fetch(module_or_path);
|
|
19434
|
+
}
|
|
19435
|
+
__wbg_init_memory(imports);
|
|
19436
|
+
const { instance, module: module2 } = await __wbg_load(await module_or_path, imports);
|
|
19437
|
+
return __wbg_finalize_init(instance, module2);
|
|
19438
|
+
}
|
|
19439
|
+
var laz_rs_wasm_default = __wbg_init;
|
|
19440
|
+
|
|
19441
|
+
// dist/lib/laz-rs-wasm/laslaz-decoder.js
|
|
19442
|
+
var POINT_FORMAT_READERS2 = {
|
|
19443
|
+
0: (dv) => {
|
|
19444
|
+
return {
|
|
19445
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19446
|
+
intensity: dv.getUint16(12, true),
|
|
19447
|
+
classification: dv.getUint8(15)
|
|
19448
|
+
};
|
|
19449
|
+
},
|
|
19450
|
+
1: (dv) => {
|
|
19451
|
+
return {
|
|
19452
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19453
|
+
intensity: dv.getUint16(12, true),
|
|
19454
|
+
classification: dv.getUint8(15)
|
|
19455
|
+
};
|
|
19456
|
+
},
|
|
19457
|
+
2: (dv) => {
|
|
19458
|
+
return {
|
|
19459
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19460
|
+
intensity: dv.getUint16(12, true),
|
|
19461
|
+
classification: dv.getUint8(15),
|
|
19462
|
+
color: [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)]
|
|
19463
|
+
};
|
|
19464
|
+
},
|
|
19465
|
+
3: (dv) => {
|
|
19466
|
+
return {
|
|
19467
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19468
|
+
intensity: dv.getUint16(12, true),
|
|
19469
|
+
classification: dv.getUint8(15),
|
|
19470
|
+
color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]
|
|
19471
|
+
};
|
|
19472
|
+
},
|
|
19473
|
+
4: (dv) => {
|
|
19474
|
+
return {
|
|
19475
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19476
|
+
intensity: dv.getUint16(12, true),
|
|
19477
|
+
classification: dv.getUint8(15)
|
|
19478
|
+
};
|
|
19479
|
+
},
|
|
19480
|
+
5: (dv) => {
|
|
19481
|
+
return {
|
|
19482
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19483
|
+
intensity: dv.getUint16(12, true),
|
|
19484
|
+
classification: dv.getUint8(15),
|
|
19485
|
+
color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]
|
|
19486
|
+
};
|
|
19487
|
+
},
|
|
19488
|
+
6: (dv) => {
|
|
19489
|
+
return {
|
|
19490
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19491
|
+
intensity: dv.getUint16(12, true),
|
|
19492
|
+
classification: dv.getUint8(16)
|
|
19493
|
+
};
|
|
19494
|
+
},
|
|
19495
|
+
7: (dv) => {
|
|
19496
|
+
return {
|
|
19497
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19498
|
+
intensity: dv.getUint16(12, true),
|
|
19499
|
+
classification: dv.getUint8(16),
|
|
19500
|
+
color: [dv.getUint16(30, true), dv.getUint16(32, true), dv.getUint16(34, true)]
|
|
19501
|
+
};
|
|
19502
|
+
},
|
|
19503
|
+
8: (dv) => {
|
|
19504
|
+
return {
|
|
19505
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19506
|
+
intensity: dv.getUint16(12, true),
|
|
19507
|
+
classification: dv.getUint8(16),
|
|
19508
|
+
color: [dv.getUint16(30, true), dv.getUint16(32, true), dv.getUint16(34, true)]
|
|
19509
|
+
};
|
|
19510
|
+
},
|
|
19511
|
+
9: (dv) => {
|
|
19512
|
+
return {
|
|
19513
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19514
|
+
intensity: dv.getUint16(12, true),
|
|
19515
|
+
classification: dv.getUint8(16)
|
|
19516
|
+
};
|
|
19517
|
+
},
|
|
19518
|
+
10: (dv) => {
|
|
19519
|
+
return {
|
|
19520
|
+
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
19521
|
+
intensity: dv.getUint16(12, true),
|
|
19522
|
+
classification: dv.getUint8(16),
|
|
19523
|
+
color: [dv.getUint16(30, true), dv.getUint16(32, true), dv.getUint16(34, true)]
|
|
19524
|
+
};
|
|
19525
|
+
}
|
|
19526
|
+
};
|
|
19527
|
+
function readAs2(buf, Type = {}, offset, count) {
|
|
19528
|
+
count = count === void 0 || count === 0 ? 1 : count;
|
|
19529
|
+
const sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count);
|
|
19530
|
+
const r = new Type(sub);
|
|
19531
|
+
if (count === 1) {
|
|
19532
|
+
return r[0];
|
|
19533
|
+
}
|
|
19534
|
+
const ret = [];
|
|
19535
|
+
for (let i = 0; i < count; i++) {
|
|
19536
|
+
ret.push(r[i]);
|
|
19537
|
+
}
|
|
19538
|
+
return ret;
|
|
19539
|
+
}
|
|
19540
|
+
function parseLASHeader2(arraybuffer) {
|
|
19541
|
+
const ver = new Uint8Array(arraybuffer, 24, 2);
|
|
19542
|
+
const version = ver[0] * 10 + ver[1];
|
|
19543
|
+
const versionAsString = `${ver[0]}.${ver[1]}`;
|
|
19544
|
+
const rawPointsFormatId = readAs2(arraybuffer, Uint8Array, 32 * 3 + 8);
|
|
19545
|
+
const bit7 = (rawPointsFormatId & 128) >> 7;
|
|
19546
|
+
const bit6 = (rawPointsFormatId & 64) >> 6;
|
|
19547
|
+
const isCompressed = bit7 === 1 || bit6 === 1;
|
|
19548
|
+
const pointsFormatId = rawPointsFormatId & 63;
|
|
19549
|
+
const o = {
|
|
19550
|
+
pointsOffset: readAs2(arraybuffer, Uint32Array, 32 * 3),
|
|
19551
|
+
pointsFormatId,
|
|
19552
|
+
pointsStructSize: readAs2(arraybuffer, Uint16Array, 32 * 3 + 8 + 1),
|
|
19553
|
+
pointsCount: readAs2(arraybuffer, Uint32Array, 32 * 3 + 11),
|
|
19554
|
+
versionAsString,
|
|
19555
|
+
isCompressed
|
|
19556
|
+
};
|
|
19557
|
+
let start = 32 * 3 + 35;
|
|
19558
|
+
o.scale = readAs2(arraybuffer, Float64Array, start, 3);
|
|
19559
|
+
start += 24;
|
|
19560
|
+
o.offset = readAs2(arraybuffer, Float64Array, start, 3);
|
|
19561
|
+
start += 24;
|
|
19562
|
+
const bounds = readAs2(arraybuffer, Float64Array, start, 6);
|
|
19563
|
+
start += 48;
|
|
19564
|
+
o.maxs = [bounds[0], bounds[2], bounds[4]];
|
|
19565
|
+
o.mins = [bounds[1], bounds[3], bounds[5]];
|
|
19566
|
+
start += 20;
|
|
19567
|
+
if (version === 14) {
|
|
19568
|
+
o.pointsCount = Number(readAs2(arraybuffer, BigUint64Array, start));
|
|
19569
|
+
}
|
|
19570
|
+
const colorPointFormats = /* @__PURE__ */ new Set([2, 3, 5, 7, 8, 10]);
|
|
19571
|
+
o.hasColor = colorPointFormats.has(pointsFormatId);
|
|
19572
|
+
return o;
|
|
19573
|
+
}
|
|
19574
|
+
var LASLoader2 = class {
|
|
19575
|
+
arraybuffer;
|
|
19576
|
+
readOffset = 0;
|
|
19577
|
+
header = null;
|
|
19578
|
+
constructor(arraybuffer) {
|
|
19579
|
+
this.arraybuffer = arraybuffer;
|
|
19580
|
+
}
|
|
19581
|
+
/**
|
|
19582
|
+
* @returns boolean
|
|
19583
|
+
*/
|
|
19584
|
+
open() {
|
|
19585
|
+
return true;
|
|
19586
|
+
}
|
|
19587
|
+
/**
|
|
19588
|
+
* Parsing of incoming binary
|
|
19589
|
+
* @returns LASHeader
|
|
19590
|
+
*/
|
|
19591
|
+
getHeader() {
|
|
19592
|
+
this.header = parseLASHeader2(this.arraybuffer);
|
|
19593
|
+
return this.header;
|
|
19594
|
+
}
|
|
19595
|
+
/**
|
|
19596
|
+
* Reading data
|
|
19597
|
+
* @param count
|
|
19598
|
+
* @param skip
|
|
19599
|
+
* @returns LasData
|
|
19600
|
+
*/
|
|
19601
|
+
readData(count, skip) {
|
|
19602
|
+
const { header, arraybuffer } = this;
|
|
19603
|
+
if (!header) {
|
|
19604
|
+
throw new Error("Cannot start reading data till a header request is issued");
|
|
19605
|
+
}
|
|
19606
|
+
let { readOffset } = this;
|
|
19607
|
+
let start;
|
|
19608
|
+
if (skip <= 1) {
|
|
19609
|
+
count = Math.min(count, header.pointsCount - readOffset);
|
|
19610
|
+
start = header.pointsOffset + readOffset * header.pointsStructSize;
|
|
19611
|
+
const end = start + count * header.pointsStructSize;
|
|
19612
|
+
readOffset += count;
|
|
19613
|
+
this.readOffset = readOffset;
|
|
19614
|
+
return {
|
|
19615
|
+
buffer: arraybuffer.slice(start, end),
|
|
19616
|
+
count,
|
|
19617
|
+
hasMoreData: readOffset < header.pointsCount
|
|
19618
|
+
};
|
|
19619
|
+
}
|
|
19620
|
+
const pointsToRead = Math.min(count * skip, header.pointsCount - readOffset);
|
|
19621
|
+
const bufferSize = Math.ceil(pointsToRead / skip);
|
|
19622
|
+
let pointsRead = 0;
|
|
19623
|
+
const buf = new Uint8Array(bufferSize * header.pointsStructSize);
|
|
19624
|
+
for (let i = 0; i < pointsToRead; i++) {
|
|
19625
|
+
if (i % skip === 0) {
|
|
19626
|
+
start = header.pointsOffset + readOffset * header.pointsStructSize;
|
|
19627
|
+
const src = new Uint8Array(arraybuffer, start, header.pointsStructSize);
|
|
19628
|
+
buf.set(src, pointsRead * header.pointsStructSize);
|
|
19629
|
+
pointsRead++;
|
|
19630
|
+
}
|
|
19631
|
+
readOffset++;
|
|
19632
|
+
}
|
|
19633
|
+
this.readOffset = readOffset;
|
|
19634
|
+
return {
|
|
19635
|
+
buffer: buf.buffer,
|
|
19636
|
+
count: pointsRead,
|
|
19637
|
+
hasMoreData: readOffset < header.pointsCount
|
|
19638
|
+
};
|
|
19639
|
+
}
|
|
19640
|
+
/**
|
|
19641
|
+
* Method which brings data to null to close the file
|
|
19642
|
+
* @returns
|
|
19643
|
+
*/
|
|
19644
|
+
close() {
|
|
19645
|
+
this.arraybuffer = null;
|
|
19646
|
+
return true;
|
|
19647
|
+
}
|
|
19648
|
+
};
|
|
19649
|
+
var LAZLoader2 = class {
|
|
19650
|
+
arraybuffer;
|
|
19651
|
+
readOffset = 0;
|
|
19652
|
+
instance = null;
|
|
19653
|
+
header = null;
|
|
19654
|
+
constructor(arraybuffer) {
|
|
19655
|
+
this.arraybuffer = arraybuffer;
|
|
19656
|
+
}
|
|
19657
|
+
/**
|
|
19658
|
+
* Opens the file
|
|
19659
|
+
* @returns boolean
|
|
19660
|
+
*/
|
|
19661
|
+
open() {
|
|
19662
|
+
try {
|
|
19663
|
+
const abInt = new Uint8Array(this.arraybuffer);
|
|
19664
|
+
this.instance = new WasmLasZipDecompressor(abInt);
|
|
19665
|
+
return true;
|
|
19666
|
+
} catch (error) {
|
|
19667
|
+
throw new Error(`Failed to open file: ${error.message}`);
|
|
19668
|
+
}
|
|
19669
|
+
}
|
|
19670
|
+
getHeader() {
|
|
19671
|
+
try {
|
|
19672
|
+
this.header = parseLASHeader2(this.arraybuffer);
|
|
19673
|
+
return this.header;
|
|
19674
|
+
} catch (error) {
|
|
19675
|
+
throw new Error(`Failed to get header: ${error.message}`);
|
|
19676
|
+
}
|
|
19677
|
+
}
|
|
19678
|
+
/**
|
|
19679
|
+
* @param count
|
|
19680
|
+
* @param offset
|
|
19681
|
+
* @param skip
|
|
19682
|
+
* @returns LASData
|
|
19683
|
+
*/
|
|
19684
|
+
readData(count, skip) {
|
|
19685
|
+
if (!this.instance) {
|
|
19686
|
+
throw new Error("You need to open the file before trying to read stuff");
|
|
19687
|
+
}
|
|
19688
|
+
const { header, instance } = this;
|
|
19689
|
+
if (!header) {
|
|
19690
|
+
throw new Error("You need to query header before reading, I maintain state that way, sorry :(");
|
|
19691
|
+
}
|
|
19692
|
+
try {
|
|
19693
|
+
const pointsToRead = Math.min(count * skip, header.pointsCount - this.readOffset);
|
|
19694
|
+
const bufferSize = Math.ceil(pointsToRead / skip);
|
|
19695
|
+
let pointsRead = 0;
|
|
19696
|
+
const buf = new Uint8Array(bufferSize * header.pointsStructSize);
|
|
19697
|
+
const bufRead = new Uint8Array(header.pointsStructSize);
|
|
19698
|
+
for (let i = 0; i < pointsToRead; i++) {
|
|
19699
|
+
instance.decompress_many(bufRead);
|
|
19700
|
+
if (i % skip === 0) {
|
|
19701
|
+
buf.set(bufRead, pointsRead * header.pointsStructSize);
|
|
19702
|
+
pointsRead++;
|
|
19703
|
+
}
|
|
19704
|
+
this.readOffset++;
|
|
19705
|
+
}
|
|
19706
|
+
return {
|
|
19707
|
+
buffer: buf.buffer,
|
|
19708
|
+
count: pointsRead,
|
|
19709
|
+
hasMoreData: this.readOffset < header.pointsCount
|
|
19710
|
+
};
|
|
19711
|
+
} catch (error) {
|
|
19712
|
+
throw new Error(`Failed to read data: ${error.message}`);
|
|
19713
|
+
}
|
|
19714
|
+
}
|
|
19715
|
+
/**
|
|
19716
|
+
* Deletes the instance
|
|
19717
|
+
* @returns boolean
|
|
19718
|
+
*/
|
|
19719
|
+
close() {
|
|
19720
|
+
try {
|
|
19721
|
+
if (this.instance !== null) {
|
|
19722
|
+
this.instance.free();
|
|
19723
|
+
this.instance = null;
|
|
19724
|
+
}
|
|
19725
|
+
this.arraybuffer = null;
|
|
19726
|
+
return true;
|
|
19727
|
+
} catch (error) {
|
|
19728
|
+
throw new Error(`Failed to close file: ${error.message}`);
|
|
19729
|
+
}
|
|
19730
|
+
}
|
|
19731
|
+
};
|
|
19732
|
+
var LASDecoder2 = class {
|
|
19733
|
+
arrayb;
|
|
19734
|
+
decoder;
|
|
19735
|
+
pointsCount;
|
|
19736
|
+
pointSize;
|
|
19737
|
+
constructor(buffer, len, header) {
|
|
19738
|
+
this.arrayb = buffer;
|
|
19739
|
+
this.decoder = POINT_FORMAT_READERS2[header.pointsFormatId];
|
|
19740
|
+
this.pointsCount = len;
|
|
19741
|
+
this.pointSize = header.pointsStructSize;
|
|
19742
|
+
}
|
|
19743
|
+
/**
|
|
19744
|
+
* Decodes data depends on this point size
|
|
19745
|
+
* @param index
|
|
19746
|
+
* @returns New object
|
|
19747
|
+
*/
|
|
19748
|
+
getPoint(index) {
|
|
19749
|
+
if (index < 0 || index >= this.pointsCount) {
|
|
19750
|
+
throw new Error("Point index out of range");
|
|
19751
|
+
}
|
|
19752
|
+
const dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize);
|
|
19753
|
+
return this.decoder(dv);
|
|
19754
|
+
}
|
|
19755
|
+
};
|
|
19756
|
+
var LASFile2 = class {
|
|
19757
|
+
arraybuffer;
|
|
19758
|
+
formatId = 0;
|
|
19759
|
+
loader;
|
|
19760
|
+
isCompressed = true;
|
|
19761
|
+
isOpen = false;
|
|
19762
|
+
version = 0;
|
|
19763
|
+
versionAsString = "";
|
|
19764
|
+
constructor(arraybuffer) {
|
|
19765
|
+
this.arraybuffer = arraybuffer;
|
|
19766
|
+
this.validate();
|
|
19767
|
+
this.loader = this.isCompressed ? new LAZLoader2(this.arraybuffer) : new LASLoader2(this.arraybuffer);
|
|
19768
|
+
}
|
|
19769
|
+
validate() {
|
|
19770
|
+
const signature = readAs2(this.arraybuffer, Uint8Array, 0, 4);
|
|
19771
|
+
const check = String.fromCharCode(...signature);
|
|
19772
|
+
if (check !== "LASF") {
|
|
19773
|
+
throw new Error("Invalid LAS file");
|
|
19774
|
+
}
|
|
19775
|
+
if (this.determineVersion() > 14) {
|
|
19776
|
+
throw new Error("Only file versions <= 1.4 are supported");
|
|
19777
|
+
}
|
|
19778
|
+
this.determineFormat();
|
|
19779
|
+
if (POINT_FORMAT_READERS2[this.formatId] === void 0) {
|
|
19780
|
+
throw new Error("The point format ID is not supported");
|
|
19781
|
+
}
|
|
19782
|
+
}
|
|
19783
|
+
/**
|
|
19784
|
+
* Determines format in parameters of LASHeader
|
|
19785
|
+
*/
|
|
19786
|
+
determineFormat() {
|
|
19787
|
+
const formatId = readAs2(this.arraybuffer, Uint8Array, 32 * 3 + 8);
|
|
19788
|
+
const bit7 = (formatId & 128) >> 7;
|
|
19789
|
+
const bit6 = (formatId & 64) >> 6;
|
|
19790
|
+
if (bit7 === 1 && bit6 === 1) {
|
|
19791
|
+
throw new Error("Old style compression not supported");
|
|
19792
|
+
}
|
|
19793
|
+
this.formatId = formatId & 63;
|
|
19794
|
+
this.isCompressed = bit7 === 1 || bit6 === 1;
|
|
19795
|
+
}
|
|
19796
|
+
/**
|
|
19797
|
+
* Determines version
|
|
19798
|
+
* @returns version
|
|
19799
|
+
*/
|
|
19800
|
+
determineVersion() {
|
|
19801
|
+
const ver = new Uint8Array(this.arraybuffer, 24, 2);
|
|
19802
|
+
this.version = ver[0] * 10 + ver[1];
|
|
19803
|
+
this.versionAsString = `${ver[0]}.${ver[1]}`;
|
|
19804
|
+
return this.version;
|
|
19805
|
+
}
|
|
19806
|
+
/**
|
|
19807
|
+
* Reads if the file is open
|
|
19808
|
+
* @returns boolean
|
|
19809
|
+
*/
|
|
19810
|
+
open() {
|
|
19811
|
+
if (this.loader.open()) {
|
|
19812
|
+
this.isOpen = true;
|
|
19813
|
+
}
|
|
19814
|
+
}
|
|
19815
|
+
/**
|
|
19816
|
+
* Gets the header
|
|
19817
|
+
* @returns Header
|
|
19818
|
+
*/
|
|
19819
|
+
getHeader() {
|
|
19820
|
+
return this.loader.getHeader();
|
|
19821
|
+
}
|
|
19822
|
+
/**
|
|
19823
|
+
* @param count
|
|
19824
|
+
* @param start
|
|
19825
|
+
* @param skip
|
|
19826
|
+
* @returns LASData
|
|
19827
|
+
*/
|
|
19828
|
+
readData(count, skip) {
|
|
19829
|
+
return this.loader.readData(count, skip);
|
|
19830
|
+
}
|
|
19831
|
+
/**
|
|
19832
|
+
* Closes the file
|
|
19833
|
+
*/
|
|
19834
|
+
close() {
|
|
19835
|
+
if (this.loader.close()) {
|
|
19836
|
+
this.isOpen = false;
|
|
19837
|
+
}
|
|
19838
|
+
}
|
|
19839
|
+
/**
|
|
19840
|
+
*/
|
|
19841
|
+
getUnpacker() {
|
|
19842
|
+
return LASDecoder2;
|
|
19843
|
+
}
|
|
19844
|
+
};
|
|
19845
|
+
|
|
19846
|
+
// dist/lib/laz-rs-wasm/parse-las.js
|
|
19847
|
+
function parseLAS2(arrayBuffer, options) {
|
|
19848
|
+
return parseLASMesh2(arrayBuffer, options);
|
|
19849
|
+
}
|
|
19850
|
+
function parseLASMesh2(arrayBuffer, options = {}) {
|
|
19851
|
+
var _a;
|
|
19852
|
+
let pointIndex = 0;
|
|
19853
|
+
let positions;
|
|
19854
|
+
let colors;
|
|
19855
|
+
let intensities;
|
|
19856
|
+
let classifications;
|
|
19857
|
+
let originalHeader;
|
|
19858
|
+
const lasMesh = {
|
|
19859
|
+
loader: "las",
|
|
19860
|
+
loaderData: {},
|
|
19861
|
+
// shape: 'mesh',
|
|
19862
|
+
schema: { fields: [], metadata: {} },
|
|
19863
|
+
header: {
|
|
19864
|
+
vertexCount: 0,
|
|
19865
|
+
boundingBox: [
|
|
19866
|
+
[0, 0, 0],
|
|
19867
|
+
[0, 0, 0]
|
|
19868
|
+
]
|
|
19869
|
+
},
|
|
19870
|
+
attributes: {},
|
|
19871
|
+
topology: "point-list",
|
|
19872
|
+
mode: 0
|
|
19873
|
+
// GL.POINTS
|
|
19874
|
+
};
|
|
19875
|
+
parseLASChunked2(arrayBuffer, (_a = options.las) == null ? void 0 : _a.skip, (decoder = {}, lasHeader) => {
|
|
19876
|
+
var _a2, _b, _c;
|
|
19877
|
+
if (!originalHeader) {
|
|
19878
|
+
originalHeader = lasHeader;
|
|
19879
|
+
const total = lasHeader.totalToRead;
|
|
19880
|
+
const PositionsType = ((_a2 = options.las) == null ? void 0 : _a2.fp64) ? Float64Array : Float32Array;
|
|
19881
|
+
positions = new PositionsType(total * 3);
|
|
19882
|
+
colors = lasHeader.hasColor ? new Uint8Array(total * 4) : null;
|
|
19883
|
+
intensities = new Uint16Array(total);
|
|
19884
|
+
classifications = new Uint8Array(total);
|
|
19885
|
+
lasMesh.loaderData = lasHeader;
|
|
19886
|
+
lasMesh.attributes = {
|
|
19887
|
+
POSITION: { value: positions, size: 3 },
|
|
19888
|
+
// non-gltf attributes, use non-capitalized names for now
|
|
19889
|
+
intensity: { value: intensities, size: 1 },
|
|
19890
|
+
classification: { value: classifications, size: 1 }
|
|
19891
|
+
};
|
|
19892
|
+
if (colors) {
|
|
19893
|
+
lasMesh.attributes.COLOR_0 = { value: colors, size: 4 };
|
|
19894
|
+
}
|
|
19895
|
+
}
|
|
19896
|
+
const batchSize = decoder.pointsCount;
|
|
19897
|
+
const { scale: [scaleX, scaleY, scaleZ], offset: [offsetX, offsetY, offsetZ] } = lasHeader;
|
|
19898
|
+
const twoByteColor = detectTwoByteColors2(decoder, batchSize, (_b = options.las) == null ? void 0 : _b.colorDepth);
|
|
19899
|
+
for (let i = 0; i < batchSize; i++) {
|
|
19900
|
+
const { position, color, intensity, classification } = decoder.getPoint(i);
|
|
19901
|
+
positions[pointIndex * 3] = position[0] * scaleX + offsetX;
|
|
19902
|
+
positions[pointIndex * 3 + 1] = position[1] * scaleY + offsetY;
|
|
19903
|
+
positions[pointIndex * 3 + 2] = position[2] * scaleZ + offsetZ;
|
|
19904
|
+
if (color && colors) {
|
|
19905
|
+
if (twoByteColor) {
|
|
19906
|
+
colors[pointIndex * 4] = color[0] / 256;
|
|
19907
|
+
colors[pointIndex * 4 + 1] = color[1] / 256;
|
|
19908
|
+
colors[pointIndex * 4 + 2] = color[2] / 256;
|
|
19909
|
+
} else {
|
|
19910
|
+
colors[pointIndex * 4] = color[0];
|
|
19911
|
+
colors[pointIndex * 4 + 1] = color[1];
|
|
19912
|
+
colors[pointIndex * 4 + 2] = color[2];
|
|
19913
|
+
}
|
|
19914
|
+
colors[pointIndex * 4 + 3] = 255;
|
|
19915
|
+
}
|
|
19916
|
+
intensities[pointIndex] = intensity;
|
|
19917
|
+
classifications[pointIndex] = classification;
|
|
19918
|
+
pointIndex++;
|
|
19919
|
+
}
|
|
19920
|
+
const meshBatch = {
|
|
19921
|
+
...lasMesh,
|
|
19922
|
+
header: {
|
|
19923
|
+
vertexCount: lasHeader.totalRead
|
|
19924
|
+
},
|
|
19925
|
+
progress: lasHeader.totalRead / lasHeader.totalToRead
|
|
19926
|
+
};
|
|
19927
|
+
(_c = options == null ? void 0 : options.onProgress) == null ? void 0 : _c.call(options, meshBatch);
|
|
19928
|
+
});
|
|
19929
|
+
lasMesh.header = {
|
|
19930
|
+
vertexCount: originalHeader.totalToRead,
|
|
19931
|
+
boundingBox: (0, import_schema_utils4.getMeshBoundingBox)((lasMesh == null ? void 0 : lasMesh.attributes) || {})
|
|
19932
|
+
};
|
|
19933
|
+
if (lasMesh) {
|
|
19934
|
+
lasMesh.schema = getLASSchema(lasMesh.loaderData, lasMesh.attributes);
|
|
19935
|
+
}
|
|
19936
|
+
return lasMesh;
|
|
19937
|
+
}
|
|
19938
|
+
function parseLASChunked2(rawData, skip, onParseData = {}) {
|
|
19939
|
+
const dataHandler = new LASFile2(rawData);
|
|
19940
|
+
try {
|
|
19941
|
+
dataHandler.open();
|
|
19942
|
+
const header = dataHandler.getHeader();
|
|
19943
|
+
const Unpacker = dataHandler.getUnpacker();
|
|
19944
|
+
const totalToRead = Math.ceil(header.pointsCount / Math.max(1, skip));
|
|
19945
|
+
header.totalToRead = totalToRead;
|
|
19946
|
+
let totalRead = 0;
|
|
19947
|
+
while (true) {
|
|
19948
|
+
const chunk = dataHandler.readData(1e3 * 100, skip);
|
|
19949
|
+
totalRead += chunk.count;
|
|
19950
|
+
header.totalRead = totalRead;
|
|
19951
|
+
const unpacker = new Unpacker(chunk.buffer, chunk.count, header);
|
|
19952
|
+
onParseData(unpacker, header);
|
|
19953
|
+
if (!chunk.hasMoreData || totalRead >= totalToRead) {
|
|
19954
|
+
break;
|
|
19955
|
+
}
|
|
19956
|
+
}
|
|
19957
|
+
} catch (e) {
|
|
19958
|
+
throw e;
|
|
19959
|
+
} finally {
|
|
19960
|
+
dataHandler.close();
|
|
19961
|
+
}
|
|
19962
|
+
}
|
|
19963
|
+
function detectTwoByteColors2(decoder = {}, batchSize, colorDepth) {
|
|
19964
|
+
let twoByteColor = false;
|
|
19965
|
+
switch (colorDepth) {
|
|
19966
|
+
case 8:
|
|
19967
|
+
twoByteColor = false;
|
|
19968
|
+
break;
|
|
19969
|
+
case 16:
|
|
19970
|
+
twoByteColor = true;
|
|
19971
|
+
break;
|
|
19972
|
+
case "auto":
|
|
19973
|
+
if (decoder.getPoint(0).color) {
|
|
19974
|
+
for (let i = 0; i < batchSize; i++) {
|
|
19975
|
+
const { color } = decoder.getPoint(i);
|
|
19976
|
+
if (color[0] > 255 || color[1] > 255 || color[2] > 255) {
|
|
19977
|
+
twoByteColor = true;
|
|
19978
|
+
}
|
|
19979
|
+
}
|
|
19980
|
+
}
|
|
19981
|
+
break;
|
|
19982
|
+
default:
|
|
19983
|
+
console.warn("las: illegal value for options.las.colorDepth");
|
|
19984
|
+
break;
|
|
19985
|
+
}
|
|
19986
|
+
return twoByteColor;
|
|
19987
|
+
}
|
|
19988
|
+
|
|
19989
|
+
// dist/laz-rs-loader.js
|
|
19990
|
+
var LAZRsLoader = {
|
|
19991
|
+
...LASWorkerLoader,
|
|
19992
|
+
parse: async (arrayBuffer, options) => {
|
|
19993
|
+
await laz_rs_wasm_default();
|
|
19994
|
+
return parseLAS2(arrayBuffer, { ...options });
|
|
19995
|
+
}
|
|
19996
|
+
};
|
|
19023
19997
|
//# sourceMappingURL=index.cjs.map
|