@loaders.gl/las 3.1.0-alpha.4 → 3.1.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +19596 -0
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/index.js +6 -40
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/las-loader.js +4 -4
- package/dist/es5/las-loader.js.map +1 -1
- package/dist/es5/lib/get-las-schema.js +3 -3
- package/dist/es5/lib/get-las-schema.js.map +1 -1
- package/dist/es5/lib/laslaz-decoder.js +207 -234
- package/dist/es5/lib/laslaz-decoder.js.map +1 -1
- package/dist/es5/lib/libs/laz-perf.js +2 -0
- package/dist/es5/lib/libs/laz-perf.js.map +1 -0
- package/dist/es5/lib/parse-las.js +42 -66
- package/dist/es5/lib/parse-las.js.map +1 -1
- package/dist/es5/workers/las-worker.js +7 -3
- package/dist/es5/workers/las-worker.js.map +1 -0
- package/dist/esm/las-loader.js +1 -1
- package/dist/esm/las-loader.js.map +1 -1
- package/dist/esm/lib/laslaz-decoder.js +6 -6
- package/dist/esm/lib/laslaz-decoder.js.map +1 -1
- package/dist/esm/lib/libs/laz-perf.js +2 -0
- package/dist/esm/lib/libs/laz-perf.js.map +1 -0
- package/dist/esm/workers/las-worker.js +3 -3
- package/dist/esm/workers/las-worker.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/las-loader.d.ts +27 -0
- package/dist/las-loader.d.ts.map +1 -0
- package/dist/las-loader.js +31 -0
- package/dist/las-worker.js +19627 -2
- package/dist/lib/get-las-schema.d.ts +16 -0
- package/dist/lib/get-las-schema.d.ts.map +1 -0
- package/dist/lib/get-las-schema.js +46 -0
- package/dist/lib/las-types.d.ts +28 -0
- package/dist/lib/las-types.d.ts.map +1 -0
- package/dist/lib/las-types.js +2 -0
- package/dist/lib/laslaz-decoder.d.ts +134 -0
- package/dist/lib/laslaz-decoder.d.ts.map +1 -0
- package/dist/lib/laslaz-decoder.js +395 -0
- package/dist/lib/libs/laz-perf.d.ts +2 -0
- package/dist/lib/libs/laz-perf.d.ts.map +1 -0
- package/dist/lib/libs/laz-perf.js +19006 -0
- package/dist/lib/parse-las.d.ts +19 -0
- package/dist/lib/parse-las.d.ts.map +1 -0
- package/dist/lib/parse-las.js +189 -0
- package/dist/workers/las-worker.d.ts +2 -0
- package/dist/workers/las-worker.d.ts.map +1 -0
- package/dist/workers/las-worker.js +5 -0
- package/package.json +7 -8
- package/src/lib/laslaz-decoder.ts +1 -1
- package/src/lib/libs/laz-perf.ts +20615 -0
- package/src/workers/{las-worker.js → las-worker.ts} +0 -0
- package/dist/dist.min.js +0 -2
- package/dist/dist.min.js.map +0 -1
- package/dist/es5/libs/laz-perf.js +0 -19492
- package/dist/esm/libs/laz-perf.js +0 -19492
- package/dist/las-worker.js.map +0 -1
- package/src/libs/laz-perf.js +0 -19492
|
@@ -7,31 +7,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.LASModuleWasLoaded = exports.LASFile = void 0;
|
|
9
9
|
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
11
|
|
|
16
|
-
var _lazPerf = _interopRequireDefault(require("
|
|
12
|
+
var _lazPerf = _interopRequireDefault(require("./libs/laz-perf"));
|
|
17
13
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
0:
|
|
14
|
+
let Module = null;
|
|
15
|
+
const POINT_FORMAT_READERS = {
|
|
16
|
+
0: dv => {
|
|
21
17
|
return {
|
|
22
18
|
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
23
19
|
intensity: dv.getUint16(12, true),
|
|
24
20
|
classification: dv.getUint8(15)
|
|
25
21
|
};
|
|
26
22
|
},
|
|
27
|
-
1:
|
|
23
|
+
1: dv => {
|
|
28
24
|
return {
|
|
29
25
|
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
30
26
|
intensity: dv.getUint16(12, true),
|
|
31
27
|
classification: dv.getUint8(15)
|
|
32
28
|
};
|
|
33
29
|
},
|
|
34
|
-
2:
|
|
30
|
+
2: dv => {
|
|
35
31
|
return {
|
|
36
32
|
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
37
33
|
intensity: dv.getUint16(12, true),
|
|
@@ -39,7 +35,7 @@ var POINT_FORMAT_READERS = {
|
|
|
39
35
|
color: [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)]
|
|
40
36
|
};
|
|
41
37
|
},
|
|
42
|
-
3:
|
|
38
|
+
3: dv => {
|
|
43
39
|
return {
|
|
44
40
|
position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
|
|
45
41
|
intensity: dv.getUint16(12, true),
|
|
@@ -49,21 +45,18 @@ var POINT_FORMAT_READERS = {
|
|
|
49
45
|
}
|
|
50
46
|
};
|
|
51
47
|
|
|
52
|
-
function readAs(buf) {
|
|
53
|
-
var Type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
54
|
-
var offset = arguments.length > 2 ? arguments[2] : undefined;
|
|
55
|
-
var count = arguments.length > 3 ? arguments[3] : undefined;
|
|
48
|
+
function readAs(buf, Type = {}, offset, count) {
|
|
56
49
|
count = count === undefined || count === 0 ? 1 : count;
|
|
57
|
-
|
|
58
|
-
|
|
50
|
+
const sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count);
|
|
51
|
+
const r = new Type(sub);
|
|
59
52
|
|
|
60
53
|
if (count === 1) {
|
|
61
54
|
return r[0];
|
|
62
55
|
}
|
|
63
56
|
|
|
64
|
-
|
|
57
|
+
const ret = [];
|
|
65
58
|
|
|
66
|
-
for (
|
|
59
|
+
for (let i = 0; i < count; i++) {
|
|
67
60
|
ret.push(r[i]);
|
|
68
61
|
}
|
|
69
62
|
|
|
@@ -71,8 +64,8 @@ function readAs(buf) {
|
|
|
71
64
|
}
|
|
72
65
|
|
|
73
66
|
function parseLASHeader(arraybuffer) {
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
let start = 32 * 3 + 35;
|
|
68
|
+
const o = {
|
|
76
69
|
pointsOffset: readAs(arraybuffer, Uint32Array, 32 * 3),
|
|
77
70
|
pointsFormatId: readAs(arraybuffer, Uint8Array, 32 * 3 + 8),
|
|
78
71
|
pointsStructSize: readAs(arraybuffer, Uint16Array, 32 * 3 + 8 + 1),
|
|
@@ -82,16 +75,15 @@ function parseLASHeader(arraybuffer) {
|
|
|
82
75
|
start += 24;
|
|
83
76
|
o.offset = readAs(arraybuffer, Float64Array, start, 3);
|
|
84
77
|
start += 24;
|
|
85
|
-
|
|
78
|
+
const bounds = readAs(arraybuffer, Float64Array, start, 6);
|
|
86
79
|
start += 48;
|
|
87
80
|
o.maxs = [bounds[0], bounds[2], bounds[4]];
|
|
88
81
|
o.mins = [bounds[1], bounds[3], bounds[5]];
|
|
89
82
|
return o;
|
|
90
83
|
}
|
|
91
84
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
(0, _classCallCheck2.default)(this, LASLoader);
|
|
85
|
+
class LASLoader {
|
|
86
|
+
constructor(arraybuffer) {
|
|
95
87
|
(0, _defineProperty2.default)(this, "arraybuffer", void 0);
|
|
96
88
|
(0, _defineProperty2.default)(this, "readOffset", 0);
|
|
97
89
|
(0, _defineProperty2.default)(this, "header", {
|
|
@@ -111,79 +103,76 @@ var LASLoader = function () {
|
|
|
111
103
|
this.arraybuffer = arraybuffer;
|
|
112
104
|
}
|
|
113
105
|
|
|
114
|
-
(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
119
|
-
}, {
|
|
120
|
-
key: "getHeader",
|
|
121
|
-
value: function getHeader() {
|
|
122
|
-
this.header = parseLASHeader(this.arraybuffer);
|
|
123
|
-
return this.header;
|
|
124
|
-
}
|
|
125
|
-
}, {
|
|
126
|
-
key: "readData",
|
|
127
|
-
value: function readData(count, skip) {
|
|
128
|
-
var header = this.header,
|
|
129
|
-
arraybuffer = this.arraybuffer;
|
|
130
|
-
|
|
131
|
-
if (!header) {
|
|
132
|
-
throw new Error('Cannot start reading data till a header request is issued');
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
var readOffset = this.readOffset;
|
|
136
|
-
var start;
|
|
106
|
+
open() {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
137
109
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
readOffset += count;
|
|
143
|
-
this.readOffset = readOffset;
|
|
144
|
-
return {
|
|
145
|
-
buffer: arraybuffer.slice(start, end),
|
|
146
|
-
count: count,
|
|
147
|
-
hasMoreData: readOffset < header.pointsCount
|
|
148
|
-
};
|
|
149
|
-
}
|
|
110
|
+
getHeader() {
|
|
111
|
+
this.header = parseLASHeader(this.arraybuffer);
|
|
112
|
+
return this.header;
|
|
113
|
+
}
|
|
150
114
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
115
|
+
readData(count, skip) {
|
|
116
|
+
const {
|
|
117
|
+
header,
|
|
118
|
+
arraybuffer
|
|
119
|
+
} = this;
|
|
155
120
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
var src = new Uint8Array(arraybuffer, start, header.pointsStructSize);
|
|
160
|
-
buf.set(src, pointsRead * header.pointsStructSize);
|
|
161
|
-
pointsRead++;
|
|
162
|
-
}
|
|
121
|
+
if (!header) {
|
|
122
|
+
throw new Error('Cannot start reading data till a header request is issued');
|
|
123
|
+
}
|
|
163
124
|
|
|
164
|
-
|
|
165
|
-
|
|
125
|
+
let {
|
|
126
|
+
readOffset
|
|
127
|
+
} = this;
|
|
128
|
+
let start;
|
|
166
129
|
|
|
130
|
+
if (skip <= 1) {
|
|
131
|
+
count = Math.min(count, header.pointsCount - readOffset);
|
|
132
|
+
start = header.pointsOffset + readOffset * header.pointsStructSize;
|
|
133
|
+
const end = start + count * header.pointsStructSize;
|
|
134
|
+
readOffset += count;
|
|
167
135
|
this.readOffset = readOffset;
|
|
168
136
|
return {
|
|
169
|
-
buffer:
|
|
170
|
-
count
|
|
137
|
+
buffer: arraybuffer.slice(start, end),
|
|
138
|
+
count,
|
|
171
139
|
hasMoreData: readOffset < header.pointsCount
|
|
172
140
|
};
|
|
173
141
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
142
|
+
|
|
143
|
+
const pointsToRead = Math.min(count * skip, header.pointsCount - readOffset);
|
|
144
|
+
const bufferSize = Math.ceil(pointsToRead / skip);
|
|
145
|
+
let pointsRead = 0;
|
|
146
|
+
const buf = new Uint8Array(bufferSize * header.pointsStructSize);
|
|
147
|
+
|
|
148
|
+
for (let i = 0; i < pointsToRead; i++) {
|
|
149
|
+
if (i % skip === 0) {
|
|
150
|
+
start = header.pointsOffset + readOffset * header.pointsStructSize;
|
|
151
|
+
const src = new Uint8Array(arraybuffer, start, header.pointsStructSize);
|
|
152
|
+
buf.set(src, pointsRead * header.pointsStructSize);
|
|
153
|
+
pointsRead++;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
readOffset++;
|
|
179
157
|
}
|
|
180
|
-
}]);
|
|
181
|
-
return LASLoader;
|
|
182
|
-
}();
|
|
183
158
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
159
|
+
this.readOffset = readOffset;
|
|
160
|
+
return {
|
|
161
|
+
buffer: buf.buffer,
|
|
162
|
+
count: pointsRead,
|
|
163
|
+
hasMoreData: readOffset < header.pointsCount
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
close() {
|
|
168
|
+
this.arraybuffer = null;
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
class LAZLoader {
|
|
175
|
+
constructor(arraybuffer) {
|
|
187
176
|
(0, _defineProperty2.default)(this, "arraybuffer", void 0);
|
|
188
177
|
(0, _defineProperty2.default)(this, "instance", null);
|
|
189
178
|
(0, _defineProperty2.default)(this, "header", null);
|
|
@@ -194,106 +183,103 @@ var LAZLoader = function () {
|
|
|
194
183
|
}
|
|
195
184
|
}
|
|
196
185
|
|
|
197
|
-
(
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
}
|
|
186
|
+
open() {
|
|
187
|
+
try {
|
|
188
|
+
const {
|
|
189
|
+
arraybuffer
|
|
190
|
+
} = this;
|
|
191
|
+
this.instance = new Module.LASZip();
|
|
192
|
+
const abInt = new Uint8Array(arraybuffer);
|
|
193
|
+
|
|
194
|
+
const buf = Module._malloc(arraybuffer.byteLength);
|
|
195
|
+
|
|
196
|
+
this.instance.arraybuffer = arraybuffer;
|
|
197
|
+
this.instance.buf = buf;
|
|
198
|
+
Module.HEAPU8.set(abInt, buf);
|
|
199
|
+
this.instance.open(buf, arraybuffer.byteLength);
|
|
200
|
+
this.instance.readOffset = 0;
|
|
201
|
+
return true;
|
|
202
|
+
} catch (error) {
|
|
203
|
+
throw new Error("Failed to open file: ".concat(error.message));
|
|
216
204
|
}
|
|
217
|
-
}
|
|
218
|
-
key: "getHeader",
|
|
219
|
-
value: function getHeader() {
|
|
220
|
-
if (!this.instance) {
|
|
221
|
-
throw new Error('You need to open the file before trying to read header');
|
|
222
|
-
}
|
|
205
|
+
}
|
|
223
206
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
this.header = header;
|
|
228
|
-
return header;
|
|
229
|
-
} catch (error) {
|
|
230
|
-
throw new Error("Failed to get header: ".concat(error.message));
|
|
231
|
-
}
|
|
207
|
+
getHeader() {
|
|
208
|
+
if (!this.instance) {
|
|
209
|
+
throw new Error('You need to open the file before trying to read header');
|
|
232
210
|
}
|
|
233
|
-
}, {
|
|
234
|
-
key: "readData",
|
|
235
|
-
value: function readData(count, offset, skip) {
|
|
236
|
-
if (!this.instance) {
|
|
237
|
-
throw new Error('You need to open the file before trying to read stuff');
|
|
238
|
-
}
|
|
239
211
|
|
|
240
|
-
|
|
241
|
-
|
|
212
|
+
try {
|
|
213
|
+
const header = parseLASHeader(this.instance.arraybuffer);
|
|
214
|
+
header.pointsFormatId &= 0x3f;
|
|
215
|
+
this.header = header;
|
|
216
|
+
return header;
|
|
217
|
+
} catch (error) {
|
|
218
|
+
throw new Error("Failed to get header: ".concat(error.message));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
readData(count, offset, skip) {
|
|
223
|
+
if (!this.instance) {
|
|
224
|
+
throw new Error('You need to open the file before trying to read stuff');
|
|
225
|
+
}
|
|
242
226
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
227
|
+
const {
|
|
228
|
+
header,
|
|
229
|
+
instance
|
|
230
|
+
} = this;
|
|
246
231
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
var pointsRead = 0;
|
|
251
|
-
var thisBuf = new Uint8Array(bufferSize * header.pointsStructSize);
|
|
232
|
+
if (!header) {
|
|
233
|
+
throw new Error('You need to query header before reading, I maintain state that way, sorry :(');
|
|
234
|
+
}
|
|
252
235
|
|
|
253
|
-
|
|
236
|
+
try {
|
|
237
|
+
const pointsToRead = Math.min(count * skip, header.pointsCount - instance.readOffset);
|
|
238
|
+
const bufferSize = Math.ceil(pointsToRead / skip);
|
|
239
|
+
let pointsRead = 0;
|
|
240
|
+
const thisBuf = new Uint8Array(bufferSize * header.pointsStructSize);
|
|
254
241
|
|
|
255
|
-
|
|
256
|
-
instance.getPoint(bufRead);
|
|
242
|
+
const bufRead = Module._malloc(header.pointsStructSize);
|
|
257
243
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
thisBuf.set(a, pointsRead * header.pointsStructSize);
|
|
261
|
-
pointsRead++;
|
|
262
|
-
}
|
|
244
|
+
for (let i = 0; i < pointsToRead; i++) {
|
|
245
|
+
instance.getPoint(bufRead);
|
|
263
246
|
|
|
264
|
-
|
|
247
|
+
if (i % skip === 0) {
|
|
248
|
+
const a = new Uint8Array(Module.HEAPU8.buffer, bufRead, header.pointsStructSize);
|
|
249
|
+
thisBuf.set(a, pointsRead * header.pointsStructSize);
|
|
250
|
+
pointsRead++;
|
|
265
251
|
}
|
|
266
252
|
|
|
267
|
-
|
|
268
|
-
buffer: thisBuf.buffer,
|
|
269
|
-
count: pointsRead,
|
|
270
|
-
hasMoreData: instance.readOffset < header.pointsCount
|
|
271
|
-
};
|
|
272
|
-
} catch (error) {
|
|
273
|
-
throw new Error("Failed to read data: ".concat(error.message));
|
|
253
|
+
instance.readOffset++;
|
|
274
254
|
}
|
|
255
|
+
|
|
256
|
+
return {
|
|
257
|
+
buffer: thisBuf.buffer,
|
|
258
|
+
count: pointsRead,
|
|
259
|
+
hasMoreData: instance.readOffset < header.pointsCount
|
|
260
|
+
};
|
|
261
|
+
} catch (error) {
|
|
262
|
+
throw new Error("Failed to read data: ".concat(error.message));
|
|
275
263
|
}
|
|
276
|
-
}
|
|
277
|
-
key: "close",
|
|
278
|
-
value: function close() {
|
|
279
|
-
try {
|
|
280
|
-
if (this.instance !== null) {
|
|
281
|
-
this.instance.delete();
|
|
282
|
-
this.instance = null;
|
|
283
|
-
}
|
|
264
|
+
}
|
|
284
265
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
266
|
+
close() {
|
|
267
|
+
try {
|
|
268
|
+
if (this.instance !== null) {
|
|
269
|
+
this.instance.delete();
|
|
270
|
+
this.instance = null;
|
|
288
271
|
}
|
|
272
|
+
|
|
273
|
+
return true;
|
|
274
|
+
} catch (error) {
|
|
275
|
+
throw new Error("Failed to close file: ".concat(error.message));
|
|
289
276
|
}
|
|
290
|
-
}
|
|
291
|
-
return LAZLoader;
|
|
292
|
-
}();
|
|
277
|
+
}
|
|
293
278
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
class LASDecoder {
|
|
282
|
+
constructor(buffer, len, header) {
|
|
297
283
|
(0, _defineProperty2.default)(this, "arrayb", void 0);
|
|
298
284
|
(0, _defineProperty2.default)(this, "decoder", void 0);
|
|
299
285
|
(0, _defineProperty2.default)(this, "pointsCount", void 0);
|
|
@@ -312,23 +298,19 @@ var LASDecoder = function () {
|
|
|
312
298
|
this.maxs = header.maxs;
|
|
313
299
|
}
|
|
314
300
|
|
|
315
|
-
(
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if (index < 0 || index >= this.pointsCount) {
|
|
319
|
-
throw new Error('Point index out of range');
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
var dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize);
|
|
323
|
-
return this.decoder(dv);
|
|
301
|
+
getPoint(index) {
|
|
302
|
+
if (index < 0 || index >= this.pointsCount) {
|
|
303
|
+
throw new Error('Point index out of range');
|
|
324
304
|
}
|
|
325
|
-
}]);
|
|
326
|
-
return LASDecoder;
|
|
327
|
-
}();
|
|
328
305
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
306
|
+
const dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize);
|
|
307
|
+
return this.decoder(dv);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
class LASFile {
|
|
313
|
+
constructor(arraybuffer) {
|
|
332
314
|
(0, _defineProperty2.default)(this, "arraybuffer", void 0);
|
|
333
315
|
(0, _defineProperty2.default)(this, "formatId", 0);
|
|
334
316
|
(0, _defineProperty2.default)(this, "loader", void 0);
|
|
@@ -351,62 +333,53 @@ var LASFile = function () {
|
|
|
351
333
|
this.loader = this.isCompressed ? new LAZLoader(this.arraybuffer) : new LASLoader(this.arraybuffer);
|
|
352
334
|
}
|
|
353
335
|
|
|
354
|
-
(
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
var bit7 = (formatId & 0x80) >> 7;
|
|
359
|
-
var bit6 = (formatId & 0x40) >> 6;
|
|
336
|
+
determineFormat() {
|
|
337
|
+
const formatId = readAs(this.arraybuffer, Uint8Array, 32 * 3 + 8);
|
|
338
|
+
const bit7 = (formatId & 0x80) >> 7;
|
|
339
|
+
const bit6 = (formatId & 0x40) >> 6;
|
|
360
340
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
this.formatId = formatId & 0x3f;
|
|
366
|
-
this.isCompressed = bit7 === 1 || bit6 === 1;
|
|
367
|
-
}
|
|
368
|
-
}, {
|
|
369
|
-
key: "determineVersion",
|
|
370
|
-
value: function determineVersion() {
|
|
371
|
-
var ver = new Int8Array(this.arraybuffer, 24, 2);
|
|
372
|
-
this.version = ver[0] * 10 + ver[1];
|
|
373
|
-
this.versionAsString = "".concat(ver[0], ".").concat(ver[1]);
|
|
374
|
-
return this.version;
|
|
341
|
+
if (bit7 === 1 && bit6 === 1) {
|
|
342
|
+
throw new Error('Old style compression not supported');
|
|
375
343
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
return this.loader.readData(count, start, skip);
|
|
392
|
-
}
|
|
393
|
-
}, {
|
|
394
|
-
key: "close",
|
|
395
|
-
value: function close() {
|
|
396
|
-
if (this.loader.close()) {
|
|
397
|
-
this.isOpen = false;
|
|
398
|
-
}
|
|
344
|
+
|
|
345
|
+
this.formatId = formatId & 0x3f;
|
|
346
|
+
this.isCompressed = bit7 === 1 || bit6 === 1;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
determineVersion() {
|
|
350
|
+
const ver = new Int8Array(this.arraybuffer, 24, 2);
|
|
351
|
+
this.version = ver[0] * 10 + ver[1];
|
|
352
|
+
this.versionAsString = "".concat(ver[0], ".").concat(ver[1]);
|
|
353
|
+
return this.version;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
open() {
|
|
357
|
+
if (this.loader.open()) {
|
|
358
|
+
this.isOpen = true;
|
|
399
359
|
}
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
getHeader() {
|
|
363
|
+
return this.loader.getHeader();
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
readData(count, start, skip) {
|
|
367
|
+
return this.loader.readData(count, start, skip);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
close() {
|
|
371
|
+
if (this.loader.close()) {
|
|
372
|
+
this.isOpen = false;
|
|
404
373
|
}
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
getUnpacker() {
|
|
377
|
+
return LASDecoder;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
}
|
|
408
381
|
|
|
409
382
|
exports.LASFile = LASFile;
|
|
410
|
-
|
|
383
|
+
const LASModuleWasLoaded = false;
|
|
411
384
|
exports.LASModuleWasLoaded = LASModuleWasLoaded;
|
|
412
385
|
//# sourceMappingURL=laslaz-decoder.js.map
|